多线程DPDK应用的内存优化

本文探讨了多线程DPDK应用的内存优化技术,特别是针对同一核心上的多线程包处理。通过对比环形内存池与栈形内存池,指出栈形内存池能显著降低内存带宽占用,提高性能。减少内存占用可以避免资源浪费,尤其在高性能应用中。vCMTS程序的案例展示了如何通过调整内存池配置改善内存效率和系统性能。
摘要由CSDN通过智能技术生成

作者

Conor Walsh is a software engineering intern with the Architecture Team of Intel’s Network Platform Group (NPG), based in Intel Shannon (Ireland).

引言

高速包处理是一种资源密集型应用。一种解决方案是将包处理流水线(pipeline)分离到多线程以提高程序性能。
然而,这样做可能增加缓存(Cache)和内存(Memory)访问的压力。
因此,构建高性能应用程序的关键在于尽可能减少数据面流量(data plane traffic)相关的内存占用(memory footprint)。
本文介绍了一种多线程包处理应用程序的内存优化技术,提高访存密集型应用的性能。
即使应用程序没有内存受限的情况,也应该减少内存需求。

参考程序

本文基于对源自Intel的vCMT系统的研究。
vCMTS是基于DOCSIS3.1标准和DPDK包处理框架实现的MAC层数据面流水线程序。
该程序是为了测试Intel至强平台vCMTS数据平面包处理性能及功耗开发的工具。
可以从0.1org的the Access Network Dataplanes下载vCMTS。
虽然本文测试的vCTMS基于DPDK 18.08版本,但是背后的原理可以应用到早期版本的DPDK或者其他包处理库,比如Cisco的VPP。
本文用到的一些功能在DPDK 16.07.2首次引入。

vCMTS的下行(downstream)部分采用了多线程流水线设计。
流水线分为上/下MAC两部分,分别运行于两个不同的线程。而且这两个线程必须运行于同一个物理核心的2个超线程上,否则会浪费L2 Cache的效率。
参见图1 vCMTS下行包处理流水线


图1 vCMTS下行上/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值