Недавно мы в моем офисе купили двадцать ноутбуков Dell Latitude 5420 под управлением Ubuntu 20.04, и у нас возникла большая проблема с подключением по Ethernet, загрузка идет очень медленно (но загрузка идет хорошо).
Редактировать: Проблема только на этой серии ноутбуков, только со встроенным Ethernet и только на Ubuntu (см. тесты ниже). Wi-Fi работает отлично, Ethernet тоже работает отлично, если мы устанавливаем Windows на эти ноутбуки, и у нас не возникает проблем, если мы используем адаптер Ethernet USB или док-станцию с Ethernet на ней.
С точки зрения аппаратной части ноутбуки оснащены интегрированными сетевыми картами: Intel «Ethernet Connection I219-LM».
Ниже приведены тесты, которые я провел.
Условия проведения испытаний у меня дома:
- Тип используемого интернет-подключения: VDSL2+
- Скорость загрузки: 40,43 Мбит/с
- Скорость загрузки: 5,70 Мбит/с
Условия проведения испытаний в моем офисе:
- Тип используемого интернет-подключения: Оптоволокно
- Скорость загрузки: 756,21 Мбит/с
- Скорость загрузки: 337,64 Мбит/с
Вот тесты, которые я провел:
Ubuntu 20.04.1 LTS «из коробки»
- Результат после установки: Медленный Ethernet (@home = загрузка: 0,89 Мбит/с / отправка: 4,82 Мбит/с)
- Версия ядра после установки: 5.6.0-1032-oem
- Версия драйвера Ethernet после установки: Intel e1000e 3.2.6-k
- Версия ядра после обновления: 5.10.0-1029-oem
- Версия драйвера Ethernet после обновления: Intel e1000e 5.10.0-1029-oem (драйвер включен в ядро)
- Результат после обновления: Медленный Ethernet (@ home = загрузка: 0,57 Мбит/с / отправка: 4,61 Мбит/с)
Ubuntu 20.04.2 LTS «установка с USB»
- Результат после установки: Медленный Ethernet (@home = загрузка: 0,89 Мбит/с / отправка: 4,82 Мбит/с) (@office = загрузка: 6,36 Мбит/с / отправка: 327,99 Мбит/с)
- Версия ядра после установки: 5.8.0-43-generic
- Версия драйвера Ethernet после установки: Intel e1000e 3.2.6-k
- Версия ядра после обновления: 5.8.0-55-generic
- Версия драйвера Ethernet после обновления: Intel e1000e 3.2.6-k
- Результат после обновления: Медленный Ethernet (@home = загрузка: 0,68 Мбит/с / отправка: 4,52 Мбит/с) (@office = загрузка: 5,31 Мбит/с / отправка: 411,82 Мбит/с)
- Неудачные попытки вручную установить драйвера 3.8.4 и 3.8.7: Ошибки при компиляции драйвера
Ubuntu 20.04.2 LTS «живой сеанс с USB»
- Результат живого сеанса: Ethernet «немного» медленный (@home = загрузка: 15,60 Мбит/с / отправка: 4,41 Мбит/с)
- Версия ядра: 5.8.0-43-generic
- Версия драйвера Ethernet: Intel e1000e 3.2.6-k
Ubuntu 18.04 LTS «установка с USB»
- Результат после установки: Карта видна системе, но не востребована.
- Версия ядра: 5.4.0-74-generic
- Версия драйвера Ethernet: Нет
- Версия ядра после обновления: 5.4.0-74-generic
- Версия драйвера Ethernet после обновления: Нет
- Версия драйвера Ethernet после ручной установки: 3.8.4-NAPI (скачана с сайта Intel)
- Результат после обновления: Ethernet в порядке (@home = загрузка: 40,29 Мбит/с / отправка: 5,37 Мбит/с)
Ubuntu 20.04.1 LTS «установить из образа восстановления Dell iso» (загружается из программного обеспечения Dell OS Recovery Tool)
- Результат после установки: Медленный Ethernet (@home = загрузка: 0,87 Мбит/с / отправка: 4,73 Мбит/с)
- Версия ядра после установки: 5.6.0-1032-oem
- Версия драйвера Ethernet после установки: Intel e1000e 3.2.6-k
- Версия ядра после обновления: 5.10.0-1029-oem
- Версия драйвера Ethernet после обновления: Intel e1000e 5.10.0-1029-oem (драйвер включен в ядро)
- Результат после обновления: Медленный Ethernet (@home = загрузка: 0,56 Мбит/с / отправка: 4,49 Мбит/с)
- Неудачные попытки вручную установить драйвера 3.8.4 и 3.8.7: Ошибки при компиляции драйвера с ядрами 5.6.0-1032-oem и 5.10.0-1029-oem
Ubuntu 21.04 «установка с USB»
- Результат после установки: Медленный Ethernet (@office = загрузка: 1,52 Мбит/с / отправка: 400,58 Мбит/с)
- Версия ядра после установки: 5.11.0-16-generic
- Версия драйвера Ethernet после установки: 5.11.0-16-generic (драйвер включен в ядро)
- Версия ядра после обновления: 5.11.0-18-generic
- Версия драйвера Ethernet после обновления: 5.11.0-18-generic (драйвер включен в ядро)
- Результат после обновления: Медленный Ethernet (@office = загрузка: 2,22 Мбит/с / отправка: 410,05 Мбит/с)
Windows 10 Professionnel (выпуск 21H1)
- Результат после установки: Ethernet в порядке (@office = загрузка: 850,12 Мбит/с / отправка: 519,30 Мбит/с)
Итак, как мы видим после всех этих тестов, мы уже можем исключить аппаратную проблему (проблема присутствует на 5 или 6 протестированных ноутбуках из 20 полученных ноутбуков) и пропускная способность идеальна в Ubuntu 18.04 после ручной установки драйверов Intel и в Windows.
Сначала я думал, что решением будет установка более новой версии драйвера «Intel e1000e», но когда я пытаюсь скомпилировать его в Ubuntu, установленной из «Dell ISO», я получаю эти ошибки (извините за французский язык) :
На ядре 5.6.0-1032-oem (из Dell ISO):
administrateur@administrateur-Latitude-5420:~/Téléchargements/e1000e-3.8.7/src$ sudo make *** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but *** the signing key cannot be found. Module signing has been *** disabled for this build. make[1] : on entre dans le répertoire « /usr/src/linux-headers-5.6.0-1032-oem » CC [M] /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.o In file included from /home/administrateur/Téléchargements/e1000e-3.8.7/src/e1000.h:14, from /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.c:30: /home/administrateur/Téléchargements/e1000e-3.8.7/src/kcompat.h:825:2: error: #error UTS_UBUNTU_RELEASE_ABI is too large... 825 | #error UTS_UBUNTU_RELEASE_ABI is too large... | ^~~~~ make[2]: *** [scripts/Makefile.build:276: /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.o] Erreur 1 make[1]: *** [Makefile:1707: /home/administrateur/Téléchargements/e1000e-3.8.7/src] Erreur 2 make[1] : on quitte le répertoire « /usr/src/linux-headers-5.6.0-1032-oem » make: *** [Makefile:73: default] Erreur 2
На ядре 5.10.0-1029-oem (из Dell ISO):
administrateur@administrateur-Latitude-5420:~/Téléchargements/e1000e-3.8.7/src$ sudo make *** The target kernel has CONFIG_MODULE_SIG_ALL enabled, but *** the signing key cannot be found. Module signing has been *** disabled for this build. make[1] : on entre dans le répertoire « /usr/src/linux-headers-5.10.0-1029-oem » CC [M] /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.o In file included from /home/administrateur/Téléchargements/e1000e-3.8.7/src/e1000.h:14, from /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.c:30: /home/administrateur/Téléchargements/e1000e-3.8.7/src/kcompat.h:825:2: error: #error UTS_UBUNTU_RELEASE_ABI is too large... 825 | #error UTS_UBUNTU_RELEASE_ABI is too large... | ^~~~~ make[2]: *** [scripts/Makefile.build:287: /home/administrateur/Téléchargements/e1000e-3.8.7/src/netdev.o] Erreur 1 make[1]: *** [Makefile:1849: /home/administrateur/Téléchargements/e1000e-3.8.7/src] Erreur 2 make[1] : on quitte le répertoire « /usr/src/linux-headers-5.10.0-1029-oem » make: *** [Makefile:73: default] Erreur 2
После переустановки Ubuntu с официального ISO-образа (не Dell) и отключения SecureBoot мне наконец-то удалось установить новый драйвер Intel e1000e... но... проблема все еще осталась...
На ядре 5.8.0-43-generic (из официального образа Ubuntu ISO)
- Результат после обновления драйвера 3.8.7: Медленный Ethernet (@home = загрузка: 0,16 Мбит/с / отправка: 2,38 Мбит/с)
На ядре 5.8.0-55-generic (из официального образа Ubuntu ISO)
- Результат после обновления драйвера 3.8.7: Медленный Ethernet (@home = загрузка: 1,00 Мбит/с / отправка: 5,13 Мбит/с)
Признаюсь, я совсем запутался... Не знаете, откуда это могло взяться?
А пока вот результат заказа lshw -C network
, не стесняйтесь спрашивать меня о результатах других заказов, я их опубликую.
$ sudo lshw -C network
*-network:1
description: Ethernet interface
produit: Ethernet Connection (13) I219-LM
fabricant: Intel Corporation
identifiant matériel: 1f.6
information bus: pci@0000:00:1f.6
nom logique: enp0s31f6
version: 20
numéro de série: 38:14:28:0f:32:1a
taille: 1Gbit/s
capacité: 1Gbit/s
bits: 32 bits
horloge: 33MHz
fonctionnalités: pm msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=3.8.7-NAPI duplex=full firmware=0.8-4 ip=192.168.1.31 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
ressources: irq:147 mémoire:a2300000-a231ffff
Заранее спасибо за вашу помощь ! :)
Янн
Обновлять
Вот результаты команд nestat -i
и netstat -s
(в моей домашней сети):
$ netstat -i
Table d'interfaces noyau
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
enp0s31f 1500 29522 448 361 0 30261 0 0 0 BMRU
lo 65536 4572 0 0 0 4572 0 0 0 LRU
wlp0s20f 1500 7350 0 672 0 563 0 0 0 BMRU
$ netstat -s
Ip:
Forwarding: 2
50727 total packets received
6 with invalid addresses
0 forwarded
0 incoming packets discarded
49394 incoming packets delivered
43118 requests sent out
20 outgoing packets dropped
542 dropped because of missing route
Icmp:
67 ICMP messages received
0 input ICMP message failed
Histogramme d'entrée ICMP
destination unreachable: 67
762 ICMP messages sent
0 ICMP messages failed
Histogramme de sortie ICMP
destination unreachable: 762
IcmpMsg:
InType3: 67
OutType3: 762
Tcp:
545 active connection openings
0 passive connection openings
4 failed connection attempts
5 connection resets received
3 connections established
29486 segments received
40360 segments sent out
861 segments retransmitted
1 bad segments received
290 resets sent
Udp:
11379 packets received
1452 packets to unknown port received
0 packet receive errors
11028 packets sent
0 receive buffer errors
0 send buffer errors
IgnoredMulti: 5760
UdpLite:
TcpExt:
218 TCP sockets finished time wait in fast timer
164 delayed acks sent
Quick ack mode was activated 36 times
7910 packet headers predicted
6247 acknowledgments not containing data payload received
10413 predicted acknowledgments
TCPSackRecovery: 140
Detected reordering 1 times using SACK
6 congestion windows recovered without slow start after partial ack
TCPLostRetransmit: 100
490 fast retransmits
48 retransmits in slow start
TCPTimeouts: 95
TCPLossProbes: 300
TCPLossProbeRecovery: 30
TCPSackRecoveryFail: 7
TCPDSACKOldSent: 40
TCPDSACKOfoSent: 5
TCPDSACKRecv: 193
93 connections reset due to unexpected data
1 connections reset due to early user close
3 connections aborted due to timeout
TCPDSACKIgnoredOld: 1
TCPDSACKIgnoredNoUndo: 109
TCPSackShifted: 790
TCPSackMerged: 1396
TCPSackShiftFallback: 320
TCPRcvCoalesce: 1208
TCPOFOQueue: 1950
TCPOFOMerge: 5
TCPChallengeACK: 1
TCPSYNChallenge: 1
TCPAutoCorking: 157
TCPSynRetrans: 43
TCPOrigDataSent: 27241
TCPHystartDelayDetect: 13
TCPHystartDelayCwnd: 421
TCPKeepAlive: 612
TCPDelivered: 27555
TCPAckCompressed: 187
TcpTimeoutRehash: 95
TcpDuplicateDataRehash: 3
IpExt:
InMcastPkts: 2913
OutMcastPkts: 260
InBcastPkts: 5760
OutBcastPkts: 2
InOctets: 25001747
OutOctets: 37878931
InMcastOctets: 857652
OutMcastOctets: 17502
InBcastOctets: 5995183
OutBcastOctets: 108
InNoECTPkts: 52735
MPTcpExt:
решение1
Наконец, кто-то, у кого точно такая же проблема. Я подал баг на launchpad:e1000e очень медленный.
Можете ли вы прокомментировать там тоже? Или +1 или что-то в этом роде? Обходной путь там тоже есть.
Хитрость заключается в том, чтобы отключить aspm
его pcie_aspm=off
как опцию ядра в /etc/default/grub
, например так:
GRUB_CMDLINE_LINUX_DEFAULT="splash pcie_aspm=off"
После этого прогона:
update-grub
pcie_aspm
это какая-то штука для управления питанием, которая, вероятно, переводит мой сетевой контроллер в спящий режим или что-то в этом роде, а подключение USB-накопителя к ноутбуку каким-то образом пробуждает его.
решение2
Попробуй это
sudo ethtool -C enp0s31f rx-usecs 6000
ethtool не является постоянно работающим, поэтому вам придется запускать его снова при каждой перезагрузке (или создать для этого скрипт запуска).