当一个进程准备读取磁盘上的文件内容时,操作系统会先查看待读取的数据所在的页(page)是否在页缓存(page cache)中,如果存在(命中)则直接返回数据,从而避免了对物理磁盘I/O操作;如果没有命中,则操作系统会向磁盘发起读取请示并将读取的数据页写入页缓存,之后再将数据返回进程。 同样,如果一个进程需要将数据写入磁盘,...
在硬件的支持下,sendfile拷贝方式不再从内核缓冲区的数据拷贝到socket缓冲区,取而代之的仅仅是缓冲区文件描述符和数据长度的拷贝,这样DMA引擎直接利用gather操作将页缓存中数据打包发送到网络中即可。 基于sendfile + DMA gather copy 系统调用的零拷贝方式,整个拷贝过程会发生2次上下文切换、0次CPU拷贝以及2次DMA拷贝。
51CTO博客已为您找到关于kafka中页缓存和零拷贝的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及kafka中页缓存和零拷贝问答内容。更多kafka中页缓存和零拷贝相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
应用程序读取用户态内存数据,写入文件 / Socket之前,需要从用户态转换为内核态之后才可以写入文件或者网卡当中。 数据首先从磁盘读取到内核缓冲区,这里面的内核缓冲区就是页缓存(PageCache)。然后从内核缓冲区中复制到应用程序缓冲区(用户态),输出到输出设备时,又会将用户态数据转换为内核态数据。 DMA 在介绍零拷贝...