DPDK优化技术

57 篇文章 4 订阅

在这里插入图片描述

DPDK优化技术:
一、内存相关优化点:
Cache和内存——软件预取函数rte_prefetch0。
Cache一致性——DPDK对很多结构体定义会指定对齐;避免多个核访问同一个内存地址或数据结构,采用每个核对应一个数据结构;每个接收和发送ring队列分别对应一个core。
TLB和大页——常规页(4KB),如果程序比较大,可以采用大页(比如2MB),这样只需要一个表项就可以命中。以ubuntu系统为例,通过/etc/default/grub文件配置页大小。
DDIO——使得外部网卡和CPU通过LLC Cache直接交换数据,绕过内存。
NUMA系统——SMP系统多个core通过一条总线访问内存,总线成为瓶颈;NUMA系统每个core分配一定内存,避免跨总线访问。
在这里插入图片描述
二、并行计算
亲和性:线程和core绑定;
线程独占:分配几个core单独用来处理线程,内核程序不会跑到被隔离的core里;
指令并发:DPDK优化的比较彻底;
单指令多数据
指令并发与数据并行

三、同步互斥机制
DPDK读写锁实现进行了优化
无锁环形队列:多生产者入对

四、报文转发
传统的Network Processor(专用网络处理器)转发的模型可以分为run to completion(运行至终结简称RTC)模型和pipeline(流水线)模型。

五、数据包收发
PCIe事务传输可能成为报文转发的瓶颈:
PCIe带宽
在这里插入图片描述
64B的报文实际开销接近于168字节(96+24+8+8+32)最大转发速率为4000MB/s/168B=23.8Mp/s。已知10G速率为14.88Mpps,23.8/14.88=15.99。因此一块2*10G 82599网卡64B小包最大速率为15.99Gb/s,PCIe为其瓶颈。

六、网卡性能优化
网卡IO性能优化:网卡收发包涉及较多数据访问,尽可能让数据访问都能在处理器缓存中完成(cache hit)。
批处理和时延访问
利用Intel SIMD指令进一步并行化包收发
平台优化及其配置调优
队列长度及各种阈值的设置

七、流分类及多队列

八、硬件加速与功能卸载

九、DPDK在容器中的应用

软件编码总结:
1.结构体声明、内存使用尽量cache对齐
2.减少并发锁机制
3.设置线程亲和性
4.合理封装函数,减少函数调用
5.合理利用burst收发包机制
6.利用收发包多队列
7.处理流程中内存访问尽量物理上连续,合理使用软件预取机制
8.用户态使用大页减少TLB miss
9.合理利用指令并发机制
10.充分利用网卡硬件卸载功能,减少cpu处理开销

参考链接:
https://blog.csdn.net/qq_20817327/article/details/105587309
https://felven.blog.csdn.net/article/details/78408945?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-2.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-2.pc_relevant_aa
DPDK PMD驱动
https://blog.csdn.net/qq_20817327/article/details/106449344

DPDK简介:
https://zhuanlan.zhihu.com/p/397919872
DPDK官网:
http://core.dpdk.org/supported/
Linux平台上DPDK入门指南:
https://dpdk-docs.readthedocs.io/en/latest/linux_gsg/index.html
https://dpdk-docs.readthedocs.io/en/latest/index.html

mempool的理解
https://www.cnblogs.com/rex-2018-cloud/p/10039065.html

DPDK ring
https://www.cnblogs.com/jungle1996/p/12194243.html

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DPDK(Data Plane Development Kit)是一个用于优化网络性能的软件开发工具包。它提供了一组库函数和驱动程序,可以帮助开发人员实现高性能的网络包处理应用。 DPDK的性能优化主要体现在以下几个方面: 1. 高性能数据路径:DPDK通过绕过操作系统内核来直接访问网络设备,减少了内核处理的开销,提升了数据包处理的性能。使用DPDK可以实现高达数百万数据包每秒的处理能力,大大降低了网络延迟。 2. 多核并发处理:DPDK支持多核并发处理,可以利用现代多核处理器的优势来实现更高的吞吐量。通过将不同的处理任务分配到不同的核心上,并采用无锁数据结构和锁粒度优化技术DPDK可以高效地实现并行处理。 3. 零拷贝技术DPDK利用了物理内存和非统一内存访问(NUMA)架构的特性,实现了高效的零拷贝技术。通过将网络数据包直接从网络设备接收到应用程序的内存空间,避免了不必要的数据拷贝操作,减少了内存带宽的消耗,提升了数据包处理的效率。 4. 硬件加速技术DPDK支持一些硬件加速技术,如Intel® QuickAssist 技术,可以用于加速加密、压缩等计算密集型操作。通过利用硬件加速技术,可以进一步提升网络包处理的性能。 综上所述,DPDK是一个用于优化网络性能的工具包,通过提供高性能数据路径、多核并发处理、零拷贝技术和硬件加速技术等功能,可以帮助开发人员实现高性能的网络包处理应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值