零拷贝(Zero-Copy) 是一种技术,目的是在进行数据传输时,减少 CPU 参与的内存拷贝次数,提高性能。
传统的数据传输(比如发送文件到网络)需要经过多次拷贝:
-
磁盘数据读到内核缓冲区;
-
内核缓冲区拷贝到用户态缓冲区;
-
用户态缓冲区再拷贝回内核的 socket 缓冲区;
-
最后由网卡发送出去。
这样经历了两到三次拷贝,CPU负担重、性能差。
而零拷贝的目标是:
-
避免不必要的拷贝,比如直接从磁盘数据映射到网络缓冲区,减少用户态和内核态之间的来回搬运。
-
减少CPU消耗,提高吞吐量。