上架学姐 8 张图,就可以搞懂「零拷贝」了,原来( 六 )


零拷贝技术是基于PageCache的 , PageCache会缓存最近访问的数据 , 提升了访问缓存数据的性能 , 同时 , 为了解决机械硬盘寻址慢的问题 , 它还协助I/O调度算法实现了IO合并与预读 , 这也是顺序读比随机读性能好的原因 。 这些优势 , 进一步提升了零拷贝的性能 。
需要注意的是 , 零拷贝技术是不允许进程对文件内容作进一步的加工的 , 比如压缩数据再发送 。
另外 , 当传输大文件时 , 不能使用零拷贝 , 因为可能由于PageCache被大文件占据 , 而导致「热点」小文件无法利用到PageCache , 并且大文件的缓存命中率不高 , 这时就需要使用「异步IO+直接IO」的方式 。
在Nginx里 , 可以通过配置 , 设定一个文件大小阈值 , 针对大文件使用异步IO和直接IO , 而对小文件使用零拷贝 。
福利
入门Python的最强三件套《ThinkPython》、《简明Python教程》、《Python进阶》的PDF电子版已打包提供给大家 , 「P3」即可获取 。


推荐阅读