目录
文章目录
DPDK 优化技术
DPDK 优化技术指在 DPDK 应用过程中,为进一步提高各类用户应用程序的转发性能,所采取的性能调优方法和关键配置。
我们可以列出 DPDK 的优化方法有(包含但不限于):
- Bypass 内核协议栈。通过 uio/vfio 将网络设备暴露给 userspace(uio/vfio 是 Linux Kernel 支持用户层驱动的编程框架)。
- 使用 HugePage 从而大大降低 TLB miss 带来的性能损失。
- 广泛的应用批处理从而摊薄单个报文的开销(e.g. 使用 simd 优化网卡驱动)。批处理的优化思想在 DPDK 之中是一个极其常见的范式。
- 放弃中断模式而转而直接使用轮询模式。这个对于降低时延非常重要。因为在 PCIE 总线上,中断也是一个 TLP,报文过多的中断也会影响真正数据的时延(尤其是小包),中断处理导致的上下文切换也会引起系统抖动。但是轮询非常考验内存控制器和 PCIE Root Complex 的鲁棒性。鲁棒性差的平台容易出问题。
- 网卡直接 DMA 数据到 LLC(Last-Level Cache)中。DDIO 对于小包的性能非常重要,这个在今天依然是 Xeon CPU 的独有功能(新一代的 CLX 协议中实现了 DDIO