![支持零拷贝传输的 Linux 文件传输工具](https://linux22.com/image/1410226/%E6%94%AF%E6%8C%81%E9%9B%B6%E6%8B%B7%E8%B4%9D%E4%BC%A0%E8%BE%93%E7%9A%84%20Linux%20%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93%E5%B7%A5%E5%85%B7.png)
是否有适用于 Linux 的小型简单文件传输工具,可以使用“零拷贝”方式将文件从 HDD(SSD)传输到 tcp 套接字,并返回?
我经常需要在两台 PC 之间通过 1 Gbit 或 10 Gbit 的以太网发送大量不可压缩的唯一数据(数十至数百 GB)。我不需要加密,也不需要压缩,不需要重复数据删除/增量传输,也不需要工具进行任何额外的校验和(因此,不需要scp
也不需要默认设置rsync
);只需要高带宽的线性磁盘读取和高网络利用率。
此外,我希望该工具不要进行大量内存复制,而是使用现代 Linux 内核的“零复制”基础结构:系统调用splice
、、vmsplice
等sendfile
。使用零复制工具可以跳过大多数数据复制过程,指示内核从 HDD/SSD/RAID 读取一些数据(DMA 读取到页面缓存),然后将其重新打包成数据包,并对网卡进行编程以直接从页面缓存执行 DMA。这种“零复制”方法将降低传输带来的系统负载,因为 CPU 不必将文件数据的每个字节都弄乱。传输的一方可能 CPU 速度较慢……