Наши клиенты используют Centos 7.1 и 7.3. Они представляют собой две карты по 10 ГБ, соединенные для соединения 20 ГБ. Каждая сетевая карта подключена к паре коммутаторов Cisco N5000. При запуске cp или iperf я вижу, что иногда трафик проходит только через один интерфейс, поэтому мы можем достичь только 10 ГБ. В других случаях он проходит через оба интерфейса, и мы получаем 20 ГБ.
Это не неисправный сетевой адаптер или кабель, потому что я тестировал несколько серверов, и все они показали одинаковое поведение.
IPerf между двумя клиентами в одном коммутаторе / подсети.
# for i in {1..10}; do iperf -c 172.16.15.19 -l 1M -P 16 -t 300| grep SUM; done
[SUM] 0.0-300.0 sec 344 GBytes 9.84 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.84 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.84 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.84 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.83 Gbits/sec
[SUM] 0.0-300.0 sec 688 GBytes 19.7 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.85 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.84 Gbits/sec
[SUM] 0.0-300.0 sec 344 GBytes 9.83 Gbits/sec
[SUM] 0.0-300.0 sec 688 GBytes 19.7 Gbits/sec
Вот настройки бонда
DEVICE=bond1
ONBOOT=yes
NETBOOT=yes
TYPE=Ethernet
HOSTNAME=removed
BOOTPROTO=static
IPADDR=172.16.15.18
NETMASK=255.255.255.0
GATEWAY=172.16.15.1
DNS1=10.1.1.71
DNS2=10.1.1.70
MTU=9000
BONDING_MASTER=yes
BONDING_OPTS="mode=4 miimon=100 xmit_hash_policy=layer3+4"
Вот настройки eth. Размещено только одно, так как они идентичны, кроме имени eth.
BOOTPROTO=none
TYPE=Ethernet
NAME=eth16
DEVICE=eth16
ONBOOT=yes
MTU=9000
MASTER=bond1
SLAVE=yes
Вот настройки для Cisco N5000.
interface port-channel3008
description <removed>
switchport access vlan 3900
vpc 3008
interface Ethernet103/1/31
description <removed>
switchport access vlan 3900
channel-group 3008 mode active
На самом деле вы видите просто эффект «квантования» алгоритма балансировки нагрузки канала порта. Один поток всегда будет проходить через один и тот же физический интерфейс, и в вашем случае у вас есть две точки в вашем тесте, в которых необходимо принять решение о прохождении через интерфейс 1 или 2 на основе настраиваемого алгоритма хеширования. Как предложил Питер, проверьте также алгоритм балансировки нагрузки на стороне коммутатора: последние Nexus'ы по умолчанию используют уровень 3 + 4, более старые используют MAC src-dst по умолчанию (в этом случае вы не увидите скорости 20 Гбит / с между теми же узлами). Действительно, подобные вещи можно увидеть, когда вы тестируете ограниченное количество потоков.