Скорость сети на Linux NAS ниже, чем отлаживать (это не кабели)
511
greenone83
перед публикацией я прочитал много тем / страниц / блогов о скорости сетей, не соответствующих спецификациям. Поэтому я купил новые кабели CAT6 UTP и провел тестирование между всеми устройствами в моей сети.
Теперь я получаю постоянную скорость около 110 Мбит / с между всеми устройствами, за исключением моего самосборного сетевого хранилища Linux. Он последовательно копирует файлы только на скорости 40 Мбит / с. Я проверил это с короткими кабелями, длинными кабелями, выделенным 1-гигабитным коммутатором (вместо того, чтобы мой гигабитный маршрутизатор выполнял маршрутизацию), всегда с тем же результатом. Я тестировал копирование по сети с SSD на SSD, SSD на HDD, без разницы (NAS имеет как SSD, так и HDD). Я пробовал SFTP, SMB, FTP, тоже без разницы. Во всех тестах нагрузка на NAS оставалась очень маленькой.
На данный момент моё подозрение - это аппаратное обеспечение и / или драйверы Linux, конфигурация. Как я могу отладить это?
[Обновить]
Максимальное использование 1 ядра при копировании файлов по сети. нагрузка показалась небольшой в 0,6 в мунине, но это в среднем за 5 минут. Таким образом, процессор является узким местом?
[обновление 2]
так что в моем случае драйвер немного помог, но в конце мое узкое место - это комбинация «протокол + процессор». только HTTP управляет максимальным соединением, тогда как sftp и smb ограничены процессором, возможно, некоторая настройка может уменьшить использование процессора для них обоих.
Спецификации:
OS: Debian 8 Board: ASRock N3150B-ITX Intel N3150 mITX CPU: Intel(R) Celeron(R) CPU N3150 @ 1.60GHz RAM: 8 GB HDD: 2 x WD Red WD40EFRX 4TB SSD: 1 x Kingston SSDNow V300 120GB MLC
Подробные характеристики
lscpu
Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 On-line CPU(s) list: 0-3 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 76 Model name: Intel(R) Celeron(R) CPU N3150 @ 1.60GHz Stepping: 3 CPU MHz: 481.933 CPU max MHz: 2080,0000 CPU min MHz: 480,0000 BogoMIPS: 3202.01 Virtualization: VT-x L1d cache: 24K L1i cache: 32K L2 cache: 1024K NUMA node0 CPU(s): 0-3
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether d0:50:99:78:03:d2 brd ff:ff:ff:ff:ff:ff inet 192.168.0.100/24 brd 192.168.0.255 scope global eth0 valid_lft forever preferred_lft forever 5: lxc: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:c6:f0:23 brd ff:ff:ff:ff:ff:ff inet 10.11.0.1/24 brd 10.11.0.255 scope global lxc valid_lft forever preferred_lft forever 6: lxc-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master lxc state DOWN group default qlen 1000 link/ether 52:54:00:c6:f0:23 brd ff:ff:ff:ff:ff:ff 12: veth6FWFI5@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lxc state UP group default qlen 1000 link/ether fe:26:a4:3e:ec:22 brd ff:ff:ff:ff:ff:ff inet6 fe80::fc26:a4ff:fe3e:ec22/64 scope link valid_lft forever preferred_lft forever 16: veth4IKF6U@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lxc state UP group default qlen 1000 link/ether fe:a4:7f:d9:88:e8 brd ff:ff:ff:ff:ff:ff inet6 fe80::fca4:7fff:fed9:88e8/64 scope link valid_lft forever preferred_lft forever 38: vethBC83V0@if37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lxc state UP group default qlen 1000 link/ether fe:72:5a:77:15:f2 brd ff:ff:ff:ff:ff:ff inet6 fe80::fc72:5aff:fe77:15f2/64 scope link valid_lft forever preferred_lft forever
ethtool eth0
Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised pause frame use: Symmetric Receive-only Advertised auto-negotiation: Yes Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Link partner advertised pause frame use: Symmetric Link partner advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: MII PHYAD: 0 Transceiver: internal Auto-negotiation: on Supports Wake-on: pumbg Wake-on: g Current message level: 0x00000033 (51) drv probe ifdown ifup Link detected: yes
Iptables
iptables -L -n -v --line-numbers Chain INPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 1280K 89M fail2ban-ssh tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 22 2 0 0 ACCEPT udp -- lxc * 0.0.0.0/0 0.0.0.0/0 udp dpt:53 3 0 0 ACCEPT tcp -- lxc * 0.0.0.0/0 0.0.0.0/0 tcp dpt:53 4 0 0 ACCEPT udp -- lxc * 0.0.0.0/0 0.0.0.0/0 udp dpt:67 5 0 0 ACCEPT tcp -- lxc * 0.0.0.0/0 0.0.0.0/0 tcp dpt:67 6 615K 107M ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 7 0 0 REJECT all -- !lo * 0.0.0.0/0 127.0.0.0/8 reject-with icmp-port-unreachable 8 7065K 1431M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 9 40 2560 ACCEPT tcp -- * * 0.0.0.0/0 192.168.0.100 state NEW tcp dpt:22 10 27 1724 ACCEPT tcp -- * * 0.0.0.0/0 192.168.0.100 state NEW tcp dpt:80 11 15377 923K ACCEPT tcp -- * * 10.11.0.10 10.11.0.1 state NEW tcp dpt:4949 12 340K 65M ACCEPT udp -- * * 192.168.0.0/24 0.0.0.0/0 state NEW udp dpt:5353 13 0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.0.100 state NEW tcp dpt:3689 14 0 0 ACCEPT tcp -- * * 0.0.0.0/0 192.168.0.100 state NEW tcp dpt:6600 15 5 412 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 16 309K 77M LOG all -- * * 0.0.0.0/0 0.0.0.0/0 limit: avg 5/min burst 5 LOG flags 0 level 7 prefix "iptables denied: " 17 441K 97M DROP all -- * * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 429 38624 ACCEPT tcp -- * * 0.0.0.0/0 10.11.0.20 state NEW tcp dpt:445 2 7 444 ACCEPT tcp -- * * 0.0.0.0/0 10.11.0.20 state NEW tcp dpt:139 3 0 0 ACCEPT udp -- * * 0.0.0.0/0 10.11.0.20 state NEW udp dpt:138 4 2 156 ACCEPT udp -- * * 0.0.0.0/0 10.11.0.20 state NEW udp dpt:137 5 243M 228G ACCEPT all -- * lxc 0.0.0.0/0 10.11.0.0/24 ctstate RELATED,ESTABLISHED 6 84M 341G ACCEPT all -- lxc * 10.11.0.0/24 0.0.0.0/0 7 0 0 ACCEPT all -- lxc lxc 0.0.0.0/0 0.0.0.0/0 8 0 0 REJECT all -- * lxc 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 9 0 0 REJECT all -- lxc * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable 10 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) num pkts bytes target prot opt in out source destination 1 0 0 ACCEPT udp -- * lxc 0.0.0.0/0 0.0.0.0/0 udp dpt:68 2 12M 9842M ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 Chain fail2ban-ssh (1 references) num pkts bytes target prot opt in out source destination 1 1280K 89M RETURN all -- * * 0.0.0.0/0 0.0.0.0/0
и `ethtool eth0`?
13dimitar 7 лет назад
0
только что добавил
greenone83 7 лет назад
0
Какой протокол вы используете? FTP? HTTP? SMB? NFS? Как выглядит загрузка процессора во время копирования?
David Schwartz 7 лет назад
0
Как я уже писал, я тестировал с SFTP, SMB и FTP
greenone83 7 лет назад
0
так что получается, что 1 из 4 ядер максимально (105%), когда я копирую файлы. Итак, я думаю, что процессор является узким местом? Есть что-нибудь, что можно сделать по этому поводу? Для чего вообще используется процессор? Обработка NIC? Запись / чтение с диска?
greenone83 7 лет назад
0
Это следующий вопрос. Это может быть программное обеспечение для работы с файлами, драйвер сетевого адаптера, драйвер диска, файловая система и т. Д. Возможно, процессор перегревается.
David Schwartz 7 лет назад
0
На самом деле, я думаю, что ваш процессор просто отстой. PassMark дает ему оценку одного потока 471. В отличие от этого, i3-4150 (который стоит $ 100) имеет рейтинг одного потока 2022. Таким образом, у вас есть менее 1/4 производительности одного потока в нижней части линейного процессора. SFTP использует мощность процессора для шифрования / дешифрования. (Удостоверьтесь, что это не перегревает все же. Это сделает это еще хуже.)
David Schwartz 7 лет назад
0
да, я выбрал что-то со сверхнизким TDP, которое можно было бы пассивно охлаждать и не потреблять много энергии, думаю, я пошел далеко
greenone83 7 лет назад
0
1 ответ на вопрос
3
LSerni
Обновить
Кажется, моя гипотеза ниже имела смысл: здесь вы найдете недавнее руководство о том, как исправить поведение 8168, установив соответствующие драйверы, и как заставить их придерживаться после обновления / перезагрузки ядра.
протоколы
Использование протокола, такого как SFTP, подразумевает добавление шифрования и сжатия. Сжатие файла означает, что вы попали в процессор, но увеличили пропускную способность сети. Что само по себе, на медленном процессоре, зависит от загрузки процессора. Так что вам нужно найти баланс между ними.
Кроме того, конфигурация сети для соединений с большой задержкой и большой пропускной способностью отличается от обратной. В Linux есть автонастройка, но ваша ситуация может выйти за его пределы; здесь вы найдете больше информации (и где настроить). Я помню сценарий, который утверждал, что выполняет автоматическую настройку путем передачи большого файла между двумя хостами (один в режиме сервера, один в режиме клиента), но для этого вам понадобятся два хоста Linux. А также, что немаловажно, лучшие настройки для общения с SFTP-хостом Linux могут быть очень плохими для подключения Samba к Windows 7 и так далее.
По всей вероятности, вам придется найти компромисс между различными потребностями.
Вы, вероятно, используете неэффективный драйвер, который не использует возможности Realtek (такие как разгрузка контрольной суммы), что приводит к чрезмерной загрузке процессора.
Здесь приведены инструкции по загрузке драйвера r8168 в:
Вы можете установить пакет dkms с драйвером r8168 из официальных репозиториев Ubuntu.
Вам нужно будет удалить драйвер, который вы установили вручную, а затем запустить в терминале:
sudo apt-get install r8168-dkms
Пакет dkms будет перестраивать модуль ядра (драйвер) при каждом обновлении ядра.
Репозиторий для Ubuntu 14.04 содержит dkms r8168 версии 8.037.00-1.
Это может работать хорошо. Но если вам действительно нужен последний драйвер, вы можете установить его:
Это установит ту же версию, которую вы используете сейчас, но с поддержкой dkms.
Еще вы можете активировать поддержку Large Frame (теперь у вас есть стандартный MTU 1500). Для передачи больших файлов MTU до 9000 может дать лучшие результаты, при условии, что драйвер и все вовлеченные стороны поддерживают его аналогичным образом .
я добавил non-free и contrib, сделал dist-upgrade и, конечно же, обновил пакет "firmware-realtek"
greenone83 7 лет назад
0
ethtool -i eth0 теперь показывает: драйвер: r8169 версия: 2.3LK-NAPI-версия прошивки: rtl8168g-2_0.0.1 02/06/13 информация о шине: 0000: 02: 00.0 статистика-поддержки: да тест-поддержки: нет поддержки -eeprom-access: нет support-register-dump: yes поддерживает-priv-flags: нет не уверен, хотя, если это новый драйвер, по HTTP я получаю сейчас 105 Мбит / с, но SMB и SFTP все еще застряли на ~ 40 Мбит / с так что теперь у меня остались проблемы с протоколом?
greenone83 7 лет назад
0
хм в соответствии с этой веткой: http://forums.debian.net/viewtopic.php?f=5&t=85431 это не модуль ядра, я продолжаю пытаться
greenone83 7 лет назад
0
Нет, вам нужен драйвер r8168, по-видимому. Также проверьте нагрузку на процессор при передаче больших файлов, скажем, по FTP. SFTP - это еще одна банка червей, так как она добавляет * шифрование *, и это сложно для процессоров.
LSerni 7 лет назад
0
так что я установил r8168, но скорость немного улучшилась, из-за sftp я теперь получаю ~ 60 МБ / с (до 40), но процессор все еще работает на ssh и smb, думаю, я могу попытаться улучшить производительность любого из них, настроив конфиги там, так что драйвер немного помог, но моя горлышко от бутылки - процессор и / или protoctol
greenone83 7 лет назад
0