零拷贝,性能优化必争之地!
💡
原文中文,约5600字,阅读约需14分钟。
📝
内容提要
DMA是一种通过DMA控制器实现数据搬运的数据传输技术,减少CPU参与,提高性能。利用DMA的IO可以减少上下文切换和数据拷贝次数。零拷贝技术通过内核缓存区实现,减少数据拷贝次数,提高性能。大文件传输时,使用异步IO+直接IO。
🎯
关键要点
- DMA是一种通过DMA控制器实现数据搬运的数据传输技术,减少CPU参与,提高性能。
- 传统I/O中,所有数据拷贝工作由CPU完成,消耗CPU资源。
- 利用DMA后,数据拷贝次数减少,CPU可以处理其他任务。
- 上下文切换的成本较高,减少上下文切换和数据拷贝次数是优化的关键。
- 零拷贝技术通过内核缓存区实现,减少数据拷贝次数,提高性能。
- mmap和sendfile是实现零拷贝的两种技术。
- mmap通过内存映射减少数据拷贝次数,支持进程间共享内存。
- sendfile可以减少系统调用次数和数据拷贝次数,提高文件传输效率。
- 真正的零拷贝技术通过DMA直接将数据从磁盘传输到网卡,减少CPU参与。
- 内核缓存区用于缓存最近访问的数据和预读功能,提高磁盘读写性能。
- 大文件传输时,使用异步IO和直接IO替代零拷贝技术,以避免内核缓存区被占满。
➡️