DPDK如何针对cache提高性能

前面介绍了一些cache的相关背景知识,这里单独写一篇博客,总结一下对于DPDK来说,为了提升性能,在cache方面有哪些需要注意的点。

①适时的使用cache预取技术。在处理网卡队列的时候,多数时候都是在处理连续的内存,此时应该主动调用预取函数,可以提升效率。

②为了解决cache一致性问题,数据结构尽量声明为cache line对齐。并且多核访问的数据,可以设计成每CPU变量。

③系统环境中开启大页

④使用支持DDIO技术的服务器。

⑤在NUMA系统中,为每个核分配内存,并且连接在某处理器上的PCI设备,让本地处理器来处理。

另外关注一个报文,从网卡收到,送到CPU,再到CPU送到网卡转发出去的全部过程:

①CPU把接收描述符写入内存。

②网卡收到报文后写入描述符。引入DDIO后直接写入cache,如果本身这块内存不在cache,也会在这时把这块内存放入cache。

③CPU从内存读更新后的描述符。确认收到报文再从内存读控制结构体指针,再根据指针从内存中读控制结构体。使用预取指令,直接把后续报文的内存也都拿到cache中。

④更新接收队列寄存器。

⑤CPU读到报文首地址,根据首地址读报文头,决定转发端口。引入DDIO时直接从cache读到。

⑥填入内存中的发送描述符,更新发送队列寄存器。引入DDIO后,此时描述符已经预取到cache了。

⑦CPU读内存看发送描述符,检查是否有报文被传出去了,有的话再读控制结构体,释放数据缓冲区。引入DDIO后可以直接读cache。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值