传统read/write进行网络文件传输过程当中,文件数据实际上经过四次copy操作:

硬盘—>内核buf—>用户buf—>socket相关缓冲区—>协议引擎

而sendfile系统调用减少以上多次copy,提升文件传输性能:

硬盘—>内核buf—>用户buf—>socket相关缓冲区—>协议引擎

1、sendfile系统调用,文件数据被copy至内核缓冲区
2、再从内核缓冲区copy至内核中socket相关的缓冲区
3、最后再socket相关的缓冲区copy到协议引擎

减少了内核buf到user buf,再从user buf到socket相关缓冲区的文件copy

最新文章

  1. struts拓展restful
  2. CF460 A. Vasya and Socks
  3. JBoss的安装与配置(对应eclipse配置)【转】
  4. 有关gcc的扩展__attribute__((unused))
  5. 再回首,Java温故知新(六):Java基础之变量
  6. python学习之路-5 基础进阶篇
  7. C# 操作IE浏览器
  8. Mongodb 导出json 和csv 格式数据
  9. DELPHI中MessageBox的用法
  10. Spark Kudu 结合
  11. JAVA_SE基础——36.static的实际应用
  12. Java-IO之CharArrayReader
  13. linux中文件的三种time(atime,mtime,ctime)
  14. SQL逻辑查询语句执行顺序
  15. 亚马逊免费EC2搭建OpenVPN
  16. PAT A1109 Group Photo (25 分)——排序
  17. [转]熵(Entropy),交叉熵(Cross-Entropy),KL-松散度(KL Divergence)
  18. Linux下查看编辑二进制文件:hexedit神器
  19. git 自己易忘的命令
  20. linux io ports io memory

热门文章

  1. MeteoInfoLab脚本示例:中文处理
  2. 机器学习:集成学习:随机森林.GBDT
  3. pytest文档51-内置fixture之cache使用
  4. 【UNR #2】UOJ拯救计划
  5. spring boot:解决cors跨域问题的两种方法(spring boot 2.3.2)
  6. centos8平台使用lscpu查看cpu信息
  7. 第二十章 nginx常见问题
  8. Linux文件系统和管理-2文件操作命令(中)
  9. MySQL数据库基础-3-SQL 基本概念
  10. linux centos8 安装dokcker并启动coreapi