Почему я достигаю только 2,5 Гбит / с при прямом соединении 10 Гбит / с между двумя машинами?

У меня есть 2 машины, напрямую подключенные друг к другу с помощью 7-футового кабеля Ethernet Cat6a (входит в комплект поставки Карты NIC). Сетевая карта PCIe x4, которую я купил на обеих машинах, выглядит следующим образом: https://www.amazon.com/gp/product/B07CW2C2J1

Я пытаюсь отладить, почему я получаю почти ровно 2500 Мбит / с передачи между это 2 машины. Какие-либо советы или очевидные ошибки, которые я упускаю из виду, чтобы приблизиться к 10 Гбит / с?

Вот что я тестировал:


Конфигурация (машина A)

Машина A 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)

Машина A 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

Машина A 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)

Машина 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 с двумя размерами окон (по умолчанию 64 КБ и меньше 256 КБ) и увидел идентичные результаты:

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]
2
задан 31 January 2019 в 23:20
1 ответ

Я помню, что однажды столкнулся с той же проблемой. Все это было связано с LRO и GRO. Возможно, вы захотите отключить функцию big-recepive-offload и generic-recepive-offload на обоих концах и посмотреть, вносит ли она изменения.

Выполните следующие действия, чтобы временно отключить следующие:

big-recepive-offload

ethtool -K enp101s0 lro off

ethtool -K enp7s0 lro off

generic-recepive-offload

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.

1
ответ дан 3 December 2019 в 12:30

Теги

Похожие вопросы