Debian

網卡綁定很慢

  • May 20, 2021

我有 2 個 dl380 g9 伺服器,它們具有 2 個 nics 和 4 個埠,每個埠都執行 debian buster。我已將 7x 0.50m cat6e 跳線直接連接到伺服器,並將兩台伺服器上的 /etc/network/interfaces (IP 地址略有不同)設置為:

auto lo
iface lo inet loopback

iface eno1 inet manual

auto eno2
iface eno2 inet manual

auto eno3
iface eno3 inet manual

auto eno4
iface eno4 inet manual

auto eno49
iface eno49 inet manual

auto eno50
iface eno50 inet manual

auto eno51
iface eno51 inet manual

auto eno52
iface eno52 inet manual

auto bond0
iface bond0 inet static
       address 10.10.10.11/24
       bond-slaves eno2 eno3 eno4 eno49 eno50 eno51 eno52
       bond-miimon 100
       bond-mode balance-rr

auto vmbr0
iface vmbr0 inet static
       address 10.0.0.234/16
       gateway 10.0.0.1
       bridge-ports eno1
       bridge-stp off
       bridge-fd 0

計劃是使用綁定連接在節點之間進行 zfs 複製。問題是我得到的 thourhgput 限制為 2.25gbps(取自 nload 的值)。情況的奇怪部分是,如果我綁定 3 個埠 insetad 的 7…….我再次獲得 2.25gbps。就像沒有使用4個埠一樣。知道如何診斷問題嗎?

不要使用循環:bond-mode balance-rr

這種模式會導致大量無序的 TCP 流量並像您遇到的那樣限制吞吐量。

更改bond-mode balance-xor平衡單個流出債券的每個成員的債券。因此,單個流將以 1 倍 NIC 速度 (1 Gbps) 執行,但您可以執行多個流並實現所有 NIC 的全速 (7 Gbps)。

如果流量在同一個子網內,那麼預設值bond-xmit-hash-policy layer2可能沒問題,這會根據 MAC 地址執行負載平衡。

如果您的所有流量都通過預設網關,請分別查看 IP 地址和 TCP/UDP 埠的設置bond-xmit-hash-policy layer2+3bond-xmit-hash-policy layer3+4平衡。這將允許您平衡到多個主機的流,或到同一主機的多個會話,或者只是改進平衡算法。

我認為您的交換機正確配置了埠通道或 EtherChannel 或其他類型的鏈路聚合組。balance-rr無論如何,這對於您現有的模式是必需的。交換機將有自己的負載平衡策略(類似於上面的第 2/3/4 層),因此請確保交換機也配置了有用的策略。

確保您正在執行 irqbalance,以便多個 CPU 可以同時接收流量。如果您不傳播 IRQ,那麼所有流量都將由 CPU 核心 0 處理,這將成為瓶頸。

但是,如果您的目標是實現單個 7Gbps TCP 流,這不是綁定或組合提供的功能,也不是鏈路聚合的工作方式。如果您想要一個更快的流,則升級到 10 Gbps 或更快。

引用自:https://serverfault.com/questions/1061574