深入简出零拷贝及应用
深入简出零拷贝及应用
1. 传统文件传输过程
传统文件传输过程:需要cpu 全程参与数据搬运,效率低
引入DMA技术:通过DMA控制器完成磁盘到内核缓存区的数据拷贝工作
零拷贝的定义:减少用户态和内核态之前的上下文切换次数& 减少 cpu 拷贝次数
1 |
|
发生了4次用户态与内核态的上下文切换
发生了 4次数据拷贝
2. 零拷贝的实现方式
mmap
sendfile
splice
3. GO语言中的实现
TCPConn.ReadFrom()
4. 零拷贝的应用
Kafka、 RocketMO
https://zhuanlan.zhihu.com/p/83398714
https://strikefreedom.top/archives/linux-io-and-zero-copy
https://www.linuxjournal.com/article/6345
https://zhuanlan.zhihu.com/p/81499444
https://xie.infog.cn/article/c06fea629926e2b6a8073e2f0
https://heapdump.cn/article/3296288
https://www.51cto.com/article/711960.html
深入简出零拷贝及应用
https://leaf-domain.gitee.io/2025/03/22/go/零拷贝/