[10G 鬼故事] 調整網卡 Rx/Tx ring 設定來降低 CPU 占用

前陣子和朋友在淘寶淘了幾張 MCX342a 網卡,已經被 N 皇併購的 Mellanox 生產的經典 10G 網卡晶片之一,連接口走的是 OCP 2.0 規範,然後靠著開源轉接板轉成 PCIe 3.0 x4 連接ㄧ般家用主機板。

 測試環境
Rack 上是 3950X 裝 PVE 當工作站
Desktop 是 3600X 和 i7-7700
NAS 是 c3758
3 張 MCX342a (Connect-X 3),1 張 Connext-X 2 En
測試軟體是經典的 iperf3

然而在測試時,卻發現神奇的事情,三張網卡,兩台電腦跟工作站之間可以跑滿 10G,然而任何一台跟 NAS 之間卻跑不滿,原本以為是模塊壞了,檢查之後卻越來越不對勁: NAS 機在 Ubuntu 20.04 可以跑滿 10G,難道是 TrueNAS Scale壞了? 由於 TrueNAS Scale 是 Debian 系的系統,所以朋友試著把 Ubuntu 的 iperf3 裝在 TrueNAS Scale 上,結果就能跑滿 10G 了???

但在檢查後案情似乎並不單純,因為兩個 iperf3 版本是一樣的,同樣的 binary,所以問題肯定出在其他地方。細心的朋友發現在跑 iperf3 接收時 CPU 吃滿了

最後發現設定的問題出在於網卡的參數設定上,由於網卡的 Rx/Tx ring buffer 預設的比較小 (512),導致 CPU 要一直對網卡存取資料,透過這行指令調整成 1024 就解決了問題,速度從 7G 回到 10G,提升了 33%

ethtool -G eno2 rx 1024 tx 1024

或許是為了增加對老硬體的支援,預設的 ring buffer 設的比較小來避免延遲,然而現代處理器處理速度強悍下兩者速度應該都差不多,調高一點反而避免了 CPU 要一直存取而被網卡 DOS 的情況。

總之,不用把網卡寄回封城中的賣家那邊真是太好了

暫無評論

發怖評論 編輯評論


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇