数据复制优化:从网络到文件系统
在数据传输和处理过程中,避免冗余复制是提高性能的关键。本文将深入探讨如何通过远程直接内存访问(RDMA)技术避免网络数据复制,以及如何将这些技术扩展到文件系统,从而实现更高效的数据处理。
1. 应用与内核交互的挑战
传统应用程序在利用新内核实现的现有 API 时面临困难。以运行在 TCP 上的应用程序为例,当它向 TCP 提供缓冲区时,由于缺乏反馈,应用程序不知道何时可以安全地重用该缓冲区。如果在 TCP 为重传保留缓冲区时,应用程序过早覆盖该缓冲区,虽然不会影响安全性,但会因写时复制(Copy-on-Write)中的物理复制而降低性能。而且,未经修改的应用程序很难根据 TCP 发送时间来修改缓冲区,也难以使缓冲区对齐以实现良好的页面交换。因此,应用程序需要进行修改才能充分利用新系统,但即使修改后,由于缺乏反馈,仍然难以确定何时重用缓冲区。
2. 远程直接内存访问(RDMA)
fbufs 为避免应用程序到内核的冗余复制提供了一种解决方案,但 RDMA 提供了更直接的方法,还能消除大量的控制开销。
2.1 RDMA 的概念
传统以太网中,1MB 文件在两个工作站之间传输时,文件会被分割成 1500 字节的片段,CPU 需要处理每个片段进行 TCP 处理和复制。而在磁盘和内存之间的直接内存访问(DMA)操作中,CPU 只需设置 DMA,告知磁盘数据写入地址范围,然后就可以处理其他任务,数据传输完成后磁盘会中断 CPU。受此启发,RDMA 旨在实现跨网络的 DMA,即数据在两台计算机的内存之间直接传输,无需两个 CPU 对每个数据包进行调解,而是由两个适配器协作完成数据的读写。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



