網卡綁定很慢
我有 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+3
或bond-xmit-hash-policy layer3+4
平衡。這將允許您平衡到多個主機的流,或到同一主機的多個會話,或者只是改進平衡算法。我認為您的交換機正確配置了埠通道或 EtherChannel 或其他類型的鏈路聚合組。
balance-rr
無論如何,這對於您現有的模式是必需的。交換機將有自己的負載平衡策略(類似於上面的第 2/3/4 層),因此請確保交換機也配置了有用的策略。確保您正在執行 irqbalance,以便多個 CPU 可以同時接收流量。如果您不傳播 IRQ,那麼所有流量都將由 CPU 核心 0 處理,這將成為瓶頸。
但是,如果您的目標是實現單個 7Gbps TCP 流,這不是綁定或組合提供的功能,也不是鏈路聚合的工作方式。如果您想要一個更快的流,則升級到 10 Gbps 或更快。