linux网络协议栈优化arm TCP

三遍猪 2019-07-17 03:57:03
求教,Xilinx Zynqmp,4核cortex-a53,主频1.3GHz,SMP架构无NUMA,单独L1 Cache,共享L2 Cache,外接10G以太网,ARM单核性能弱,iperf3测试TCP只有280MB/s,网卡支持多达16通道通道DMA,但是所有发送通道共用一个中断,所有接收通道共用一个CPU中断,也就是说总共两个中断,驱动中断函数中通过读寄存器判断是哪个通道的中断(所以这里即使多通道不共用中断,中断函数也没有根据中断号直接定位哪个通道进行数据收发),驱动支持NAPI,NAPI的权重设置为64,测试发现,此数值改大改小均会引起性能下降,由于单核性能上不去,打算运行两个TCP socket,希望带宽可以乘以2,两个iperf3用-A进行绑核到CPU2和CPU3,网卡中断在CPU0,top命令也看到绑核成功,两路iperf3带宽相加还是280MB/s,将发送和接收中断分别放到CPU0和CPU1,性能下降。尝试针对每个通道预分配多个skb,用完再一次性分配多个skb,此时该通道NAPI驱动的接收函数应该会卡住一小段时间,这个时候CPU会自动从其他通道发送吗,实际测试性能下降,看来还是CPU还是一核干活,多核围观,求教了。
...全文
118 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhgure 2019-07-17
  • 打赏
  • 举报
回复
NAPI实际是中断+轮询的方式运行的,可以分析下轮询有没有正常运行。

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧