夜雨聆风学习资料网

ARTICLE · 977409

图解网卡发送/接收卸载和多队列

图解网卡发送/接收卸载和多队列

图解网卡发送/接收卸载和多队列

Linux 网络性能优化的核心,就是把脏活甩给网卡。

100G 网卡跑满时每秒要处理上百万个包。全靠 CPU 算,单核很快就被打满。

📒发送:能推给硬件就别让内核切。
以前 CPU 得把大块数据切成小包,还得挨个算校验和。
现在靠 TSO,内核只管交出一个大包,网卡直接切好发出去。
GSO 是个兜底框架,网卡支持就交给硬件,不支持就软件补位。

📒接收:把小包拼大再往上送。
以前每来一个小包都触发一次中断,CPU 频繁被叫醒太耗资源。
LRO 是网卡粗合并,但会破坏原始包信息,没法做转发。
现在的 GRO 是内核精细合并,确认包是连续的才拼起来,安全得多。

📒多核:让每个 CPU 各司其职。
收包用 RSS,靠网卡哈希把不同连接分给不同 CPU。
要是网卡队列不够,就用 RPS 和 RFS 软件分发,尽量让包去应用所在的 CPU。
发包则靠 XPS,让每个 CPU 固定走专属队列,别抢锁。

另外,校验和卸载和 NAPI 轮询也是标配,能省下不少力气。

排查单核跑满问题时,先看硬中断是不是全挤在一个核上。
再看队列有没有真正打散流,最后查查各归队机制开没开。

#Linux网络性能优化 #TSO #GSO #LRO #GRO #NAPI #网卡卸载

微信扫一扫赞赏作者喜欢作者

    正在加载...
      正在加载...
      名称已清空
      微信扫一扫赞赏作者
      喜欢作者其它金额
      作品
      暂无作品
      喜欢作者
      其它金额
      最低赞赏 ¥0
      其它金额
      赞赏金额
      ¥
      最低赞赏 ¥0
      1
      2
      3
      4
      5
      6
      7
      8
      9
      0
      .
      原文把活儿甩给网卡:图解 NIC 发送/接收卸载与多队列 CPU 亲和
      江苏,8小时前,

      相关学习资料

      返回首页浏览学习资料