У меня есть 2 машины, напрямую подключенные друг к другу с помощью 7-футового кабеля Ethernet Cat6a (входит в комплект сетевых карт). Сетевая карта PCIe x4, которую я купил, и на обеих машинах: https://www.amazon.com/gp/product/B07CW2C2J1
Я пытаюсь отладить, почему я получаю почти ровно 2500 Мбит / с между этими двумя машинами. Какие-нибудь подсказки или очевидные ошибки, которые я упускаю из виду, чтобы приблизиться к 10 Гбит / с?
Вот что я тестировал:
Машина А ifconfig
:
enp7s0 Link encap:Ethernet HWaddr 24:5e:be:2c:c1:53
inet addr:2.0.0.20 Bcast:2.0.0.255 Mask:255.255.255.0
inet6 addr: fe80::265e:beff:fe2c:c153/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:17225416 errors:0 dropped:0 overruns:0 frame:0
TX packets:7021731 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:25712055299 (25.7 GB) TX bytes:9701557546 (9.7 GB)
Машина А ip link
:
3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 24:5e:be:2c:c1:53 brd ff:ff:ff:ff:ff:ff
Машина А ethtool enp7so
:
Settings for enp7s0:
Supported ports: [ TP ]
Supported link modes: 100baseT/Full
1000baseT/Full
10000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Advertised link modes: 100baseT/Full
1000baseT/Full
10000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Speed: 10000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: external
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: g
Wake-on: g
Link detected: yes
Машина B ifconfig
:
enp101s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 2.0.0.10 netmask 255.255.255.0 broadcast 2.0.0.255
inet6 fe80::265e:beff:fe2c:c0dc prefixlen 64 scopeid 0x20<link>
ether 24:5e:be:2c:c0:dc txqueuelen 1000 (Ethernet)
RX packets 2332894765 bytes 3532248694886 (3.5 TB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 107128853 bytes 32005739542 (32.0 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Машина B ip link
:
3: enp101s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 24:5e:be:2c:c0:dc brd ff:ff:ff:ff:ff:ff
Машина B ethtool enp101s0
:
Settings for enp101s0:
Supported ports: [ TP ]
Supported link modes: 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Supported pause frame use: Symmetric
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 100baseT/Full
1000baseT/Full
10000baseT/Full
2500baseT/Full
5000baseT/Full
Advertised pause frame use: Symmetric
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Link detected: yes
Я сделал netcat на /dev/zero
на одной машине, чтобы /dev/null
с другой стороны (B -> A):
3.15GiB 0:00:09 [ 353MiB/s]
Я также запустил ifperf с двумя размерами окон (по умолчанию 64k и ниже 256k) и увидел идентичные результаты:
iperf -s -w 256k
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 416 KByte (WARNING: requested 250 KByte)
------------------------------------------------------------
[ 4] local 2.0.0.10 port 5001 connected with 2.0.0.20 port 55364
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 2.85 GBytes 2.45 Gbits/sec
Просто для проверки, чтобы убедиться и удалить сетевую переменную в передаче:
cat /dev/zero | pv > /dev/null
21.0GiB 0:00:04 [5.18GiB/s]
Помню, однажды я столкнулся с той же проблемой. Все это было связано с LRO и GRO. Вы можете отключить большой прием-разгрузку и общий прием-разгрузку на обоих концах и посмотреть, внесет ли он изменения.
Выполните следующее, чтобы временно отключить их:
большой прием-разгрузка
ethtool -K enp101s0 lro off
ethtool -K enp7s0 lro off
общий прием-разгрузка
ethtool -K enp101s0 gro off
ethtool -K enp7s0 gro off
Выполнив следующее, вы фактически изучите изменения:
ethtool -k enp7s0
обратите внимание, что -k -K, верхний регистр вносит изменения, а нижний регистр просто выводит значения
Я всегда отключаю GRO и LRO на 10 сетевых картах.
Вы можете прочитать больше здесь: https://lwn.net/Articles/358910/
Но попробуйте отключить его и посмотреть, изменит ли он скорость, если да, то я дам вам шаги, чтобы сделать постоянное изменение в вашем / etc / network / interfaces.