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

83728
davr

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

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

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

17

9 ответов на вопрос

11
Ƭᴇcʜιᴇ007

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

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

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

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

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

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

См. Http://en.wikipedia.org/wiki/Ethernet_crossover_cable#Crossover_cable_pinouts для двух возможных выводов для создания гигабитного перекрестного кабеля. eleven81 14 лет назад 0
Хорошая информация наверняка. В этом случае, если пользователь не привык к созданию кабеля, и цель состоит в том, чтобы устранить возможные замедления, ему, вероятно, лучше использовать заводской кабель. Ничего намного хуже, чем свободный обжим. ;) Ƭᴇcʜιᴇ007 14 лет назад 0
Просто к вашему сведению, с гигабитным Ethernet, кроссоверные кабели больше не нужны. Все гигабитные контроллеры Ethernet должны иметь возможность «автоматически определять» кабель, поэтому вы можете использовать стандартный кабель для подключения к гигабитным сетевым устройствам вместе. Я попробую подключить свой ноутбук прямо к рабочему столу и посмотреть, есть ли разница. davr 14 лет назад 13
8
user23307

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1
Accends

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

Если перейти от 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.

Спасибо за информацию, пожалуйста, обновите ваш ответ, если вы найдете какие-либо настройки, которые влияют на скорость в Windows davr 13 лет назад 0
это заставляет меня задуматься, не является ли iperf не единственной частью Windows, которая по умолчанию имеет меньший размер пакета, чем Linux, см. http://superuser.com/a/95587/16966 matt wilkie 10 лет назад 0
0
Marcin

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

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

Вот почему я упомянул «iperf», но я думаю, что это не очень распространенный инструмент. По сути, он тестирует скорость сети напрямую, без чтения / записи на жесткий диск, так что это не является узким местом. Я понимаю, что жесткий диск может стать узким местом в реальном мире. davr 14 лет назад 1
0
Andre Holzner

Не прямой ответ на ваш вопрос, но недавно мы получили следующий результат с 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 лет. Matt H 14 лет назад 0
-4
TheEruditeTroglodyte

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

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

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