知识卡片

I/O优化的本质是消除拷贝层级

普通读书笔记卡

内容

文件发送到网络场景中,四种I/O方式拷贝次数递减:缓冲I/O经内核缓冲区、用户缓冲区共4次内存拷贝;直接I/O省去用户缓冲区,2次;内存映射让应用逻辑地址直接映射内核缓冲区,降到1次;零拷贝让内核缓冲区与Socket缓冲区间只做地址映射,降到0次。发散:性能优化的本质套路不是让某步更快,而是删除不必要的中间搬运步骤。

参考来源

- 位置:第4章《操作系统》4.2.2节「零拷贝」(源文件:_epub-src/text/part0009.html) - 结论依据:原文明确对比文件发送到网络场景中直接I/O、内存映射文件、零拷贝三种方式的数据拷贝次数分别为4次、3次、2次,内存拷贝次数分别为2次、1次、0次,零拷贝只在内核缓冲区与Socket缓冲区间做地址映射而非拷贝,直接支持卡片对I/O优化本质是逐步消除拷贝层级的论述。 - 原始内容:"对于把文件数据发送到网络的这个场景,直接I/O、内存映射文件、零拷贝对应的数据拷贝次数分别是4次、3次、2次,内存拷贝次数分别是2次、1次、0次……在内核缓冲区和Socket缓冲区之间并没有做数据拷贝,只是一个地址的映射。"