zoukankan      html  css  js  c++  java
  • 利用Linux文件系统内存cache来提高性能

    https://www.linuxjournal.com/article/6345

    利用Linux文件系统内存cache来提高性能

    本地磁盘文件->socket发送,4步骤数据流向:

    • hard driver -> kernel space ---- [DMA copy]
    • kernel space -> user space ---- [CPU copy]
    • user space -> kernel space ---- [CPU copy]
    • kernel space -> protocol engine ---- [DMA copy] 

    左右图的上部分为user和kernel的上下文切换。下部分为数据流向图,其中左图为正常流程中Linux从文件系统读取文件然后通过socket发送的流程,其中共经历了4次内存拷贝;右图为改进版本,通过mmap内存映射将文件映射进内存,绕开了user space和kernel space的二次拷贝,实现zero copy(针对user space)。

    //正常读写方式
    read(file, tmp_buf, len);
    write(socket, tmp_buf, len);   
    
    //mmap读写方式
    tmp_buf = mmap(file, len);
    write(socket, tmp_buf, len);
  • 相关阅读:
    8月6日总结
    8月4日总结
    8月3日总结
    快速幂计算题解
    7月31日总结
    7月30日总结
    关于PHP中”::”能够调用一个非静态的方法的解释
    码云 使用 svn 管理项目
    Mysql的数据类型
    thinkphp5的$this->fetch()
  • 原文地址:https://www.cnblogs.com/diegodu/p/9230830.html
Copyright © 2011-2022 走看看