Почему я получаю только 300-400 Мбит / с в моей сети 1000 Мбит / с?

17

Моя установка такова:

Ноутбук <-> Маршрутизатор <-> Рабочий стол

Все они поддерживают гигабитный Ethernet. Я использую эталонный тест iperf TCP / IP на ноутбуке и настольном компьютере, и у меня никогда не было более 400 Мбит / с сырой пропускной способности. Ноутбук представляет собой Intel Core 2 Duo 2 ГГц под управлением Windows XP, настольный компьютер - Intel Core 2 Quad 2,4 ГГц под управлением Windows 7. На что можно обратить внимание, чтобы максимизировать скорость сети между ними? Настройки программного обеспечения? Способ узнать, не соответствует ли мой кабель техническим характеристикам? Как узнать, способен ли гигабитный контроллер Ethernet в одном из устройств работать на максимальной скорости?

Davr
источник

Ответы:

11

1 Гбит / с - теоретический максимум этой связи.

Многие вещи могут повлиять на это.

Ожидайте снижения производительности от встроенных сетевых адаптеров, поскольку они, скорее всего, будут (на основе описаний устройств «Портативный компьютер» и «Настольный компьютер») основанными на хосте адаптерами, которые полагаются на ЦП для обработки сетевого трафика. Поэтому скорость будет зависеть от того, как процессор будет выполнять другие действия (например, передавать данные с жестких дисков в сетевую подсистему, например).

Кроме того, в зависимости от того, что такое «маршрутизатор», он может пытаться обрабатывать данные при их передаче из порта LAN в порт LAN, поэтому скорость его обработки также может влиять на скорость передачи данных, независимо от того, насколько быстро его «порты». находятся.

На моем следующем тесте я бы взял себе «достаточно длинный» кроссоверный соединительный кабель CAT6 и подключил ноутбук напрямую к ПК (возможно, вам удастся использовать прямой кабель, так как многие NIC поддерживают авто Кроссовер в эти дни).

Таким образом, вы (по крайней мере) можете довольно легко устранить или идентифицировать маршрутизатор (и / или существующую проводку) как узкое место.

Ƭᴇcʜιᴇ007
источник
Смотрите en.wikipedia.org/wiki/… для двух возможных выводов для создания гигабитного перекрестного кабеля.
одиннадцать81
Хорошая информация наверняка. В этом случае, если пользователь не привык к созданию кабеля, и цель состоит в том, чтобы устранить возможные замедления, ему, вероятно, лучше использовать заводской кабель. Ничего намного хуже, чем свободный обжим. ;)
Ƭᴇcʜιᴇ007
14
Просто к вашему сведению, с гигабитным Ethernet, кроссоверные кабели больше не нужны. Все гигабитные контроллеры Ethernet должны иметь возможность «автоматически определять» кабель, поэтому вы можете использовать стандартный кабель для подключения к гигабитным сетевым устройствам вместе. Я попробую подключить свой ноутбук прямо к рабочему столу и посмотреть, есть ли разница.
Давр
@davr ты можешь добиться успеха?
ebrahim.mr
8

iperf по умолчанию использует довольно маленький размер окна.

Увеличьте окно или запустите его в режиме UDP, и оно будет легко насыщать соединение со скоростью 1 Гбит / с.

user23307
источник
Не думал об этом, я попробую это.
Давр
1
Вы не будете насыщать его оборудованием потребительского уровня. Процессор обычно ограничен шиной PCI или PCI-Express. т.е. процессор не может перемещать данные из оперативной памяти на сетевую карту достаточно быстро. Аппаратное обеспечение серверного класса, кажется, работает лучше. Я знаю, я программист, и я пытался сделать именно это. Близко, но теперь ограничено моим собственным оборудованием.
Мэтт Х
1
работал для меня, бился в течение часа, пытаясь понять, почему Windows iperf дает мне 250 Мбит / с, а Ubuntu, загруженная на той же машине, дает мне 925 Мбит / с. Оказывается, iperf в Windows по умолчанию имеет размер окна 8k TCP и размер окна 88k в Linux.
Омри
@Omry, iperf на окнах - собака с нескольких точек зрения. Я в основном сдался и запускаю iperf только под Linux
Майк Пеннингтон,
4

У Джеффа Этвуда есть хороший анализ того, почему реальная пропускная способность гигабитной сети в его вычислениях ближе к 30 МБ / с. (большой «B», а не маленький «b»)

... Вы определенно не должны ожидать идеального масштабирования, которого мы достигли, перейдя от 10baseT к 100baseT. Без каких-либо серьезных настроек вы получите лишь незначительное улучшение пропускной способности, которое вы можете ожидать

JMD
источник
Тот инструмент "pcattcp", который он использует, - кусок дерьма. Мой нетбук Linux с 900 МГц (который, вероятно, так же быстр, как его машина в 2005 году), разгоняется до 300 МБ / с.
user23307
Да, iperf дает заметно лучшую производительность по сравнению с loopback, чем pcattcp. Сейчас я буду придерживаться iperf для тестирования, если не услышу о чем-то еще, что лучше.
Давр
1
Кроме того, я уже получаю более высокую оценку, чем его 240Мбит, и этой статье уже 5 лет, так что я думаю, что она уже не так актуальна, учитывая, как технологии должны были значительно продвинуться с тех пор.
Давр
Что ж, учитывая, что петлевой интерфейс является виртуальным (ничего не передается на сетевую карту), можно ожидать гораздо более высокой производительности (в основном это процесс для обработки и отсутствие касания жесткого диска). Я получаю 8,09 Гбит / с (1035Mbytes / s) через интерфейс обратной связи.
Мэтт Х
3

Если все гигабитно, вы можете попробовать включить гигантские кадры . Один из моих друзей сделал это со своим домашним компьютером и заметил огромное увеличение пропускной способности. Тем не менее, есть некоторые недостатки для приложений с низкой задержкой, таких как VOIP, как упомянуто в статье.

грабить
источник
Увеличение не должно быть столь драматичным для большинства приложений. Все, что это будет делать, - это значит меньше накладных расходов протокола TCP или UDP на пакет. Кроме того, для достижения наилучших результатов ваш коммутатор / маршрутизаторы должны также поддерживать гигантские кадры. Я сомневаюсь, что его.
Мэтт Х
Для любых результатов ваши коммутаторы должны поддерживать гигантские кадры. Для устройства, работающего только на L2, невозможно отправить ошибку ICMP «слишком большой пакет», чтобы сообщить вашей машине, что ей нужно использовать пакет меньшего размера.
cpt_fink
1

Вы сказали, что используете роутер? это готовый маршрутизатор потребительского уровня (не коммутатор)?

Я бы сказал, что это, скорее всего, ваше узкое место. Чтобы убедиться в этом, подключите ноутбук прямо к рабочему столу. Настройте свой ноутбук и рабочий стол на использование статического IP-адреса, например 192.168.1.10 (ноутбук), 192.168.1.11 (рабочий стол).

Это должно позволить ноутбуку общаться непосредственно с рабочим столом. Запустите iperf между ними и сообщите результат здесь.

Это должно работать, так как большинство современных сетевых карт могут автоматически распознавать кабели передачи / приема, в отличие от прежних времен, когда вам приходилось строить перекрестный кабель.

Если вы видите заметное увеличение, то ваш роутер является виновником. Некоторые из них имеют коммутаторы на задней панели, другие могут фактически маршрутизировать между портами. Многие из этих роутеров ужасные исполнители. Если вы обнаружите, что это проблема, то на вашем месте я бы либо обновил маршрутизатор (что, вероятно, хорошо для использования в Интернете), либо купил бы коммутатор GigE и подключил его к коммутатору маршрутизатора. Подключите ноутбук и рабочий стол к коммутатору. Таким образом, они будут обходить маршрутизатор, чтобы общаться друг с другом.

Убедитесь, что вы изменили свой ноутбук и рабочий стол обратно на DHCP после завершения эксперимента.

Чтобы дать вам представление, вы должны получить, я думаю, 650 Мбит / с и выше. iperf не использует жесткий диск, если вы не скажете это. Так что это память в память или действительно тестирование сети.

Одним из других узких мест является то, насколько быстро ваш процессор может передавать данные из памяти на сетевую карту. Сети на PCI Express, кажется, работают лучше. Я думаю, что ноутбуки, как правило, довольно дешевы в наши дни, поэтому если вы не видите много чего выше, то это может быть другим узким местом.

Кроме того, потребительские коммутаторы часто могут справляться только с коммутацией 1 ГБ между любыми двумя портами, тогда как управляемые коммутаторы высокого класса могут одновременно переключаться на скорости соединения на всех портах. Это одна из причин, почему они стоят намного дороже.

Мэтт Н
источник
1

Мы провели многочисленные тесты, и они сводились к операционной системе.

Если мы перейдем с Ubuntu 11.04 на Ubuntu 11.04 (то же самое с CentOS для машин с Linux), пропускная способность будет ~ 938-941 Мбит / с постоянной. Если мы перейдем с Windows 7 x64 SP1 Ultimate на Ubuntu 11.04, он будет варьироваться от ~ 440-475 Мбит / с. Если мы перейдем с Windows 2008 R2SP1 x64 на Ubuntu 11.04, скорость составит ~ 435-635 Мбит / с.

Как вы можете видеть, машины на базе Linux полностью используют гигабитные каналы по сравнению с Windows. Сейчас мы исследуем настройки в Windows, которые позволят получить ту же пропускную способность, что и Linux, на том же оборудовании. Ограничения жесткого диска не являются фактором, так как это в памяти. Для справки: на машинах, которые мы использовали, были накопители на 7200 об / мин с интерфейсом SATA 3.0. И Ubuntu 11.04 (или база Linux), и Windows превышали теоретическую скорость этих каналов SATA.

Accends
источник
Спасибо за информацию, пожалуйста, обновите свой ответ, если вы найдете какие-либо настройки, которые влияют на скорость на windows
davr
это заставляет меня задуматься, не является ли iperf единственной частью Windows, которая по умолчанию имеет меньший размер пакета, чем Linux, см. superuser.com/a/95587/16966
Мэтт Уилки,
0

Скорости передачи так же хороши, как и самое слабое звено в цепи. Это может быть не скорость сети, а скорость записи / чтения ваших жестких дисков.

Вы можете загрузить программное обеспечение RamDisk и создать RamDisk на обоих компьютерах. Поместите в него файл приличного размера и выполните передачу по сети между RamDisks. Это должно показать вам фактическую скорость вашей сети, которая не будет ограничена скоростью вашего жесткого диска.

Marcin
источник
2
Вот почему я упомянул «iperf», но я думаю, что это не очень распространенный инструмент. В основном он тестирует скорость сети напрямую, без чтения / записи на жесткий диск, так что это не является узким местом. Я понимаю, что жесткий диск может стать узким местом в реальном мире.
Давр
0

Не прямой ответ на ваш вопрос, но недавно мы получили следующий результат с iperfдвумя блоками Linux (8 ядер, 2,66 ГГц каждый):

------------------------------------------------------------
Client connecting to 192.168.74.15, TCP port 5001
TCP window size:  192 KByte (default)
------------------------------------------------------------
[  3] local 192.168.74.25 port 54016 connected with 192.168.74.15 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.10 GBytes   941 Mbits/sec

с MTU = 1500 (то есть без использования больших кадров). Это должно дать вам представление о том, что производительность в принципе возможна.

Сетевые карты (вывод lspci):

82571EB Gigabit Ethernet Controller

с обеих сторон.

Возможно, вы захотите проверить нагрузку на процессор на сервере и особенно на стороне клиента и посмотреть, близка ли она к 100%. Даже при том, что я должен сказать, что в нашей системе самое загруженное ядро ​​на 80% (83%) простаивает на стороне получателя (отправителя), в то время как остальные 7, кажется, на 100% простаивают (проверено с помощью mpstat).

Это работает iperfбез -uопции, т.е. использует TCP.

Андре Хольцнер
источник
Я думаю, что вы должны получать> 500 или 600 Мбит / с на настольном оборудовании 1-2 лет.
Мэтт Х
-4

davr, в отличие от волоконно-оптического канала и аналогичных технологий, в которых используются сложные схемы распределения полосы пропускания, ethernet представляет собой протокол прослушивания и прослушивания. Ethernet сначала прослушивает, если кто-то в данный момент передает, если это так, подождите, если нет, то отправьте. Проблема в том, что, если две или более стороны, желающие передать, слушают одновременно, они также отправят одновременно! Это приведет к столкновениям и повторным передачам. Необычные переключатели устраняют многое из этого, но не все.

С Ethernet вы должны ожидать увидеть полосу пропускания около 30-40% (похоже, вы получаете это ... Я могу ошибаться в точном #, многое зависит от качества коммутатора и т. Д.), Прежде чем начнутся многочисленные коллизии, с использованием технологии Fabric что-то вроде 80%. Ethernet дешевый, оптоволоконный канал - нет. , , Я не уверен, что 4G ethernet делает, чтобы обойти это. , , он может иметь более «матричную» топологию сети, подобную оптоволоконному каналу и друзьям. Это упрощение, но, по сути, правильно.

TheEruditeTroglodyte
источник
2
Да, я не использую тупой хаб. Я думаю, что большинство людей в наши дни будут использовать интеллектуальные коммутаторы или маршрутизаторы, которые управляют подключением устройств друг к другу, устраняя конфликты. Также в моем тесте участвуют только два устройства, подключенные к одному маршрутизатору, поэтому столкновения не будут проблемой в моем конкретном случае.
Давр
Давр - извини, пока я играю адвоката дьяволов на мгновение. , , Что мешает двум вашим хостам пытаться разговаривать одновременно? Кроме того, вы не упомянули, какие данные передаются. , , это почти исключительно TCP или много потоков данных (аудио, видео и т. д.)? Потекают ли данные на обоих компьютерах одновременно или существует более четкое разграничение между клиентом и сервером?
TheEruditeTroglodyte
2
Я использую специальную программу тестирования производительности TCP / IP, где только один компьютер отправляет, а другой слушает. Но даже в этом случае Ethernet является полнодуплексным ... если у вас есть только две машины, они могут одновременно отправлять и получать полную полосу пропускания друг другу.
Давр