Задержка сети: 100 Мбит против 1 Гбит

11

У меня есть веб-сервер с текущим подключением 100 Мбит, и мой провайдер предлагает обновление до 1 Гбит. Я понимаю, что это относится к пропускной способности, но чем больше пакеты, тем быстрее они могут быть переданы, поэтому я ожидаю небольшого уменьшения времени отклика (например, ping). Кто-нибудь когда-нибудь тестировал это?

Пример (сервер от 100 Мбит до 100 Мбит) с загрузкой 30 байт:

> ping server -i0.05 -c200 -s30
[...]
200 packets transmitted, 200 received, 0% packet loss, time 9948ms
rtt min/avg/max/mdev = 0.093/0.164/0.960/0.093 ms

Пример (сервер от 100 Мбит до 100 Мбит) с нагрузкой 300 байт (что ниже MTU):

> ping server -i0.05 -c200 -s300
[...]
200 packets transmitted, 200 received, 0% packet loss, time 10037ms
rtt min/avg/max/mdev = 0.235/0.395/0.841/0.078 ms

Так от 30 до 300 ср. задержка увеличивается с 0,164 до 0,395 - я ожидаю, что это будет более медленное увеличение для соединения от 1 Гбит до 1 Гбит. Я даже ожидал бы, что скорость от 100 Мбит до 1 Гбит будет выше, если соединение осуществляется через коммутатор, который сначала ждет, пока не получит весь пакет.

Обновление: Пожалуйста, внимательно прочитайте комментарии к ответам! Соединение не насыщено, и я не думаю, что это увеличение скорости будет иметь значение для людей для одного запроса, но речь идет о множестве запросов, которые складываются (Redis, Database и т. Д.).

Относительно ответа от @LatinSuD :

> ping server -i0.05 -c200 -s1400
200 packets transmitted, 200 received, 0% packet loss, time 9958ms
rtt min/avg/max/mdev = 0.662/0.866/1.557/0.110 ms
Андреас Рихтер
источник
Также есть другая кодировка (10b / 12b?) С новыми картами Ethernet Ethernet и кабелями, так что она может иметь на 25% больше производительности, чем в 10 раз (при насыщении) по сравнению с 100 Мбит, может быть?
хусейн тугрул буюкисик

Ответы:

15

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

Кроме того, ваше предположение о том, что канал 1 Гбит сможет поддерживать пакеты большего размера, неверно. Максимальный размер пакета определяется MTU различных устройств по пути, по которому проходит пакет - начиная с NIC на вашем сервере, вплоть до MTU компьютера вашего клиента. Во внутренних приложениях локальной сети (когда вы контролируете все устройства вдоль пути) иногда можно увеличить MTU, но в этой ситуации вы в значительной степени застряли с MTU по умолчанию, равным 1500. Если вы отправляете пакеты, размер которых превышает что в конечном итоге они будут фрагментированы, что приведет к снижению производительности.

EEAA
источник
2
«В значительной степени» является ключевым словом здесь. Я только что проверил два сервера с одинаковым оборудованием и низкой сетевой нагрузкой, но с разными скоростями Ethernet. Среднее время пинга (локальное, с источником пинга в той же подсети) сократилось с 0,21 миллисекунды до 0,17 миллисекунд. Пингуя одни и те же серверы из дома, каждый имел время 53 миллисекунды. Существует слишком много факторов, не зависящих от вашего провайдера, чтобы сделать это достойным обновлением.
Майк Ренфро
1
+1 Технически есть разница, однако она совершенно не ощутима, если конкретное приложение невероятно чувствительно к задержке.
Крис С
Спасибо за тест! От 0,21 до 0,17 - улучшение на 20%, и это здорово. Меня не беспокоит пинг из дома (50 мс), но время, когда запрос остается у провайдера. Мы настроили всю обработку (ЦП) и не-IO-накопитель (RAM / Cache / и т. Д.) До максимума, поэтому теперь я задаюсь вопросом, насколько скорость сети между серверами увеличивает общую задержку. Например, мы делаем ~ 20 запросов Redis для одного запроса веб-сервера. @MikeRenfro: вы можете сделать тот же тест с большим размером загрузки? Обычный пинг 30 байтов, в среднем. Redis около 250. Я ожидаю, что разница будет расти.
Андреас Рихтер
2
@Andreas; Я думаю, что вы полностью упустили смысл этих комментариев. Это улучшение на 40 наносекунд. Количество, которое совершенно незаметно для людей . И это не кумулятивное число, не то, чтобы каждый запрос занимал 40 наносекунд дольше; просто первый будет намного быстрее, так что второй будет выстроен в очередь в любом случае.
Крис С
1
@ChrisS: вопрос был не о восприимчивости - это был вопрос, проверял ли кто-нибудь это когда-нибудь, и Майк это делал. Это также не 40 наносекунд, это микросекунды , так что вы упускаете момент в 1000 раз ... слава. Поверьте мне, что я знаю, что я делаю ... 20% было бы достаточно, чтобы оправдать дополнительные расходы.
Андреас Рихтер
12

ДА Гбит имеет меньшую задержку, так как:

  • такое же количество байтов может быть передано в более быстрое время

НО улучшение возможно только в том случае, если пакет (ы) имеют определенный размер:

  • Пакет 56 байтов => практически не быстрее передачи
  • Пакет 1000 байтов => 20% быстрее передачи
  • Пакет (ы) 20000 байт => 80% более быстрая передача

Таким образом, если у вас есть приложение, которое очень чувствительно к задержке (4 мс против 0,8 мс, в оба конца для 20 КБ) и требует передачи больших пакетов, переключение с 100 Мбит на Гбит может дать вам снижение задержки, даже если вы используете намного меньше, чем в среднем 100 Мбит / с (= ссылка не насыщена постоянно).

Сервер (100 Мбит) -> Коммутатор (Гбит) -> Сервер (100 Мбит):

size: 56 :: rtt min/avg/max/mdev = 0.124/0.176/0.627/0.052 ms
size: 100 :: rtt min/avg/max/mdev = 0.131/0.380/1.165/0.073 ms
size: 300 :: rtt min/avg/max/mdev = 0.311/0.463/2.387/0.115 ms
size: 800 :: rtt min/avg/max/mdev = 0.511/0.665/1.012/0.055 ms
size: 1000 :: rtt min/avg/max/mdev = 0.560/0.747/1.393/0.058 ms
size: 1200 :: rtt min/avg/max/mdev = 0.640/0.830/2.478/0.104 ms
size: 1492 :: rtt min/avg/max/mdev = 0.717/0.782/1.514/0.055 ms
size: 1800 :: rtt min/avg/max/mdev = 0.831/0.953/1.363/0.055 ms
size: 5000 :: rtt min/avg/max/mdev = 1.352/1.458/2.269/0.073 ms
size: 20000 :: rtt min/avg/max/mdev = 3.856/3.974/5.058/0.123 ms

Сервер (Гбит) -> Коммутатор (Гбит) -> Сервер (Гбит):

size: 56 :: rtt min/avg/max/mdev = 0.073/0.144/0.267/0.038 ms
size: 100 :: rtt min/avg/max/mdev = 0.129/0.501/0.630/0.074 ms
size: 300 :: rtt min/avg/max/mdev = 0.185/0.514/0.650/0.072 ms
size: 800 :: rtt min/avg/max/mdev = 0.201/0.583/0.792/0.079 ms
size: 1000 :: rtt min/avg/max/mdev = 0.204/0.609/0.748/0.078 ms
size: 1200 :: rtt min/avg/max/mdev = 0.220/0.621/0.746/0.080 ms
size: 1492 :: rtt min/avg/max/mdev = 0.256/0.343/0.487/0.043 ms
size: 1800 :: rtt min/avg/max/mdev = 0.311/0.672/0.815/0.079 ms
size: 5000 :: rtt min/avg/max/mdev = 0.347/0.556/0.803/0.048 ms
size: 20000 :: rtt min/avg/max/mdev = 0.620/0.813/1.222/0.122 ms

= в среднем по нескольким серверам снижение задержки на 80% при пинге 20 КБ

(Если только одна из ссылок является gbit, у вас все равно будет 5% снижение задержки для пинга 20 КБ.)

Андреас Рихтер
источник
1
Поскольку большинство сетевых устройств хранится и пересылается, пакет должен быть полностью принят коммутатором / маршрутизатором, прежде чем он будет передан. Ускоренные соединения сокращают это время, что также снижает задержку (если соединение не получает скорость от нескольких параллельных каналов).
Брайан
1
Из-за объяснения, этот ответ является лучшим на странице. Другие, кажется, хотят объяснить этот факт, предполагая особый случай - производительность сети на большом расстоянии / множество коммутаторов. Это важно учитывать, особенно принимая во внимание озабоченность OP (веб-сервер), но этот ответ также показывает, сколько различий в скорости переключения может сделать один прыжок.
Тайлер
3

Я думаю, что у вас есть фундаментальное неправильное представление о задержке пропускной способности и «скорости». Скорость зависит от пропускной способности и задержки. Например, рассмотрим отправку данных на DVD, отправленных по всей стране, за 3 дня до прибытия. Сравните это с отправкой данных через Интернет. Интернет имеет гораздо более низкую задержку соединения, но для соответствия «скорости» соединения с грузом вам нужно будет получить скорость 9,6 МБ в секунду ( справочный пример из этого источника ).

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

Джим Б
источник
Это неверно - просто сравните эхо-запрос с другой полезной нагрузкой, которая ниже текущего значения MTU: ping-сервер -i0.05 -c200 -s30 против ping-сервера -i0.05 -c200 -s300 ... Или, говоря в вашем примере: Грузовик с 1 млн. DVD будет двигаться медленнее, потому что он тяжелее, чем с 1 DVD.
Андреас Рихтер
2
@ andreas ping time - это еще не все, поэтому давайте рассмотрим аргумент, что пакеты с меньшим, чем MTU, приходят быстрее, чем пакеты с полным MTU. Разница в том, что у вас нет всех данных, которые есть у 1 пакета на полную mtu за то же время, которое требуется 2 пакетам для получения. Задержка - это время, необходимое для получения всех данных. чтобы вернуться к аналогии с грузовиком, даже если для того, чтобы грузовик, несущий 500 компакт-дисков, потребовался грузовик с 1 кд, то в половину времени ему понадобится 500 поездок, чтобы доставить данные (750 дней против 3).
Джим Б
@JimB: да, как уже упоминалось, мой вопрос был не о размерах груза, а о скорости: полный грузовик должен пройти 10 часов на таможне, маленький - всего 1 час. 100 Мбит / с также означает, что для 100-битного пакета требуется теоретический минимум 0,000954 мс, а для 1000-битного пакета теоретический минимум 0,00954 мс. Конечно время обработки / и т. Д. на сетевой карте / свич / и т.д. сделать большую часть всей задержки, но я также ожидал бы, что они будут быстрее в 1-гигабитном коммутаторе и т. д. Пожалуйста, посмотрите комментарий @MikeRenfro, он на самом деле протестировал его и увеличился на 20%.
Андреас Рихтер
@andreas - 20% в той же подсети, которая не имеет отношения к вашему вопросу
Джим Б
1
@andreas 20% пинга с точностью до миллисекунды все еще является пингом с точностью до миллисекунды. Даже 150% пинга с точностью до миллисекунды, как в вашем тестировании, не будут иметь значения в реальном мире. У вас действительно есть приложение, в котором важно, были ли ваши данные доставлены туда за 0,0003 секунды вместо 0,0002 секунды ?
Шейн Мэдден
2

Ты смотришь на мир сквозь дырку. Действительный тест различий в задержке на разных скоростях будет между двумя идентичными сетевыми картами, соединенными кросс-кабелем Установите скорость подключения сетевых карт 10 МБ, 100 МБ и 1000 МБ. Это покажет, что практически нет разницы в задержке на разных скоростях. Все пакеты передаются с одинаковой скоростью передачи данных независимо от используемой максимальной пропускной способности. Как только вы добавляете ключи с сохранением и прямым кэшированием, все меняется. Проверка задержки через коммутатор должна выполняться только с двумя подключениями к коммутатору. Любой другой трафик может повлиять на задержку вашего теста. Даже тогда коммутатор может пролонгировать журналы, настроить счетчики типов пакетов, обновить внутренние часы и т. Д. Все может повлиять на задержку.

Да, переключение с 100 МБ на 1 ГБ может происходить быстрее (с меньшей задержкой) из-за аппаратных изменений, разной сетевой карты, другого коммутатора, другого драйвера. Я видел большие изменения в задержке ping из-за различий в драйверах, чем любые другие изменения; пропускная способность, коммутаторы, разгрузка сетевых карт и т. д.

Следующим большим изменением будет переключение с сквозным проходом, значительно более быстрым, чем сохранение и пересылка для тестов с одной передачей. Тем не менее, хорошо спроектированный переключатель хранения и пересылки может обогнать сквозной переключатель по общей производительности при высокой нагрузке. В первые дни гигабита я видел высокопроизводительные коммутаторы на задней панели 10 Мб с более низкой задержкой, чем дешевые гигабитные коммутаторы.

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

Более медленный NIC или NIC, настроенный на более медленную скорость, может фактически помочь серверу с одновременными пакетами, дросселируя входные данные для сервера, используя кэш коммутаторов. Одна повторная передача может свести на нет любое уменьшение задержки. Обычно важны средние и высокие уровни трафика, а не тесты с одним пингом. Например, старый медленный Sun Ultrasparc (более высокая задержка для одного пинга) превосходит новый дешевый гигабитный рабочий стол, используемый в качестве сервера разработки, при загрузке полосы пропускания менее 70% 100 МБ. Рабочий стол имеет более быструю сетевую карту gb, более быстрое соединение gb-gb, более быструю память, больше памяти, более быстрый диск и более быстрый процессор, но он не работает так же хорошо, как настроенное аппаратное / программное обеспечение серверного класса. Это не означает, что текущий настроенный сервер, на котором работает gb-gb, не быстрее старого оборудования, даже способен обрабатывать большие нагрузки. Есть только более сложный вопрос "

Узнайте, использует ли ваш провайдер разные коммутаторы для соединений 100 Мб или 1 Гб. Если бы они использовали ту же объединительную плату коммутатора, чем я, я бы заплатил за увеличение, только если уровни трафика превысили более низкую пропускную способность. В противном случае вы можете обнаружить, что в скором времени многие другие пользователи переключатся на гигабит, и у немногих пользователей, оставшихся на старом коммутаторе, теперь будет более высокая производительность - более низкая задержка при высоких нагрузках на коммутатор (общая нагрузка коммутатора, а не только на ваши серверы). ).

Пример с яблоками и апельсинами: местный провайдер предоставил новый коммутатор для связанных служб, DSL и телефона. Первоначально пользователи увидели увеличение производительности. Система была перепродана. Теперь пользователи, которые остаются на старом коммутаторе, имеют более высокую согласованную производительность. В конце ночи пользователи новой системы работают быстрее. Вечером под высокой нагрузкой старые клиенты коммутатора явно превосходят новую перегруженную систему.

Более низкая задержка не всегда связана с более быстрой доставкой. Вы упоминаете MySQl в 20 запросах на обслуживание одной страницы. Этот трафик не должен быть на той же сетевой карте, что и запросы страниц. Перемещение всего внутреннего трафика во внутреннюю сеть уменьшит коллизии и общее количество пакетов на исходящем сетевом адаптере и обеспечит больший выигрыш, чем усиление задержки в 0,04 мс одного пакета. Уменьшите количество запросов на страницу, чтобы уменьшить задержку загрузки страницы. Сжатие страниц, HTML, CSS, JavaScript, изображения, чтобы уменьшить время загрузки страницы. Эти три изменения дадут больший общий выигрыш, чем оплата полосы пропускания, не используемой для снижения задержки на 0,04 мс. Пинг должен работать 24 часа и быть усредненным, чтобы увидеть реальное изменение задержки. Интеллектуальные коммутаторы теперь выполняют адаптивное регулирование типа RTSP с небольшим начальным увеличением полосы пропускания и большими передачами. В зависимости от размеров вашей страницы (графика, большой html / css / javascript) вы можете увидеть начальные задержки / пропускную способность соединения намного ниже / выше, чем при передаче большой страницы или полной страницы. Если часть вашей страницы в потоковом режиме, вы можете увидеть резко отличную производительность между страницей и потоком.

Джо
источник
Спасибо за отличный вклад: 1.) Это тот же переключатель, 2.) Второй сетевой адаптер для внутренних / внешних звуков, которые можно резонировать и которые стоит попробовать - даже если, например, MySQL / и т.д. все двунаправленные, поэтому коллизии будут «только» уменьшены до половины, 3.) Тест в реальном мире предпочтительнее, чем только Nic-Nic, Майк сделал это с подсетью и получил то, что вы ожидали, рег. аппаратное обеспечение: «56 байт = улучшение 19%, 200 байт = 27%, 1000 байт = 59%! Таким образом, чем больше пакет, тем больше он имеет значение. И гигабит увеличился только с 0,17 мс (56 байт) до 0,23 мс (1000 байт) ) => 35%, а 100 Мбит увеличился с 0,21 до 0,56 => 166% ».
Андреас Рихтер
1

Давайте предположим, что 300-байтовые пакеты (если вы используете -s 300их, будут на самом деле больше из-за заголовков).

300 bytes = 2400 bits
2400 bits / 100Mbit/sec = 0.024ms

0,024 мс - это приблизительно фактическое время, необходимое для отправки кадра (без учета времени доступа к среде или заголовков).

В последовательности пинг-понга это заняло бы вдвое больше времени (0,048 мс) плюс время, необходимое операционной системе для обработки запроса.

Для меня это означает, что ваша задержка вызвана 90% из нескольких факторов накладных расходов. Я не уверен, увидите ли вы большую разницу с Гб. Вероятно, разница менее 1 мс не будет заметна на веб-сервере.

В любом случае, не могли бы вы попробовать действительно большой пакет, например, 1400 байт?

LatinSuD
источник
Кто-то уже запустил числа для определенного сервера, и разница вернулась к 40 наносекундам. Ваше предположение отклоняется в 25 раз больше.
Крис С
@LatinSuD: спасибо за конструктивный подход и не обвинять в том, что я не знаю, что делаю. Я опубликую результаты в актуальном вопросе, так как я могу сделать там форматирование. Но, кстати. Я также ожидал бы, что увеличение скорости на 90% приведет к увеличению скорости , поскольку процессоры в сетевых картах и ​​т. Д. Также быстрее для GBit (надеюсь). @ChrisS: микросекунды, и я не понимаю, что вы имеете в виду под 25.
Андреас Рихтер
Мои извинения за смешение микро и нано; в любом случае это неощутимо. LatinSuD предположил разницу в 1 целую миллисекунду, что в 25 раз больше, чем 40 микросекунд, найденных Майком.
Крис С
@ChrisS: не беспокойся. 0,04 мсек было для 38-байтового пинга, если наш средний пакет сервер-сервер составляет около 300 байт, разница может составлять 0,4 мс. Если мы сейчас сделаем 20 запросов на один запрос веб-сервера (Redis, MySQL и т. Д.), Это приведет к увеличению скорости на 8 мс, что будет на 10% больше для текущих веб-запросов и полностью оправдывает дополнительные расходы. У меня просто нет здесь ресурсов для проведения тестов, но я верю, что даже если они не воспринимаются людьми, они все равно могут иметь значение. Как электричество или бог.
Андреас Рихтер
1
@ Андреас, я очень сомневаюсь, что так будет масштабироваться; и в 10 раз больший пакет, в 10 раз меньший, и в 20 раз больше пакетов, в 20 раз быстрее. Если это произойдет, это сократит нагрузку на сеть на 10%, вам все равно придется учитывать время, проведенное в приложении, которое, вероятно, будет на один-несколько порядков больше, чем компонент задержки в сети. Я надеюсь, что в любом случае это сработает.
Крис С
1

Это зависит от типа коммутатора, к которому вы подключаетесь. На некоторых вендорах (таких как Crisco ... я имею в виду Cisco) ICMP-пакеты будут возвращаться обратно в CPU ( gag ).

Может оказаться, что лучшим тестом будет выполнение теста хост-хост с использованием канала 100 Мбит / с и 1 Гбит / с (т. Е. Не тест хост-коммутатор или хост-маршрутизатор).

В конце дня задержка снизится до скорости пересылки на коммутаторе и особенностей архитектуры коммутатора (где ASIC размещены на плате, как обрабатывается блокировка между линейными картами и т. Д.). Удачи в тестировании.

Шон
источник
Спасибо, я имею в виду только тесты Host-Switch-Host и не разбираюсь во всех коммутаторах интернета. Я просто хотел бы видеть, если кто-то когда-либо тестировал: Host- (100 Мбит) -Switch- (100 Мбит) -Host, Host- (100 Мбит) -Switch- (1 Гбит) -Host и Host- (1 Гбит) -Switch- (1 Гбит) ) -Host задержки для пакетов разных размеров. Если никто не сделал, я сделаю это и выложу ответ здесь.
Андреас Рихтер
1
Я имел обыкновение перепродавать выключатель. Достаточно сказать, что ваши выводы показывают, что вы подключены к коммутатору Cisco. Есть и другие альтернативы, которые обеспечивают более низкие задержки. Как вы правильно заметили, увеличение пропускной способности не приводит к снижению задержек (Comcast является основным виновником того, что люди в этом отношении немеют). Учитывая, что вы находитесь в размещенной среде, вы, вероятно, застряли на их оборудовании (а поскольку в размещенной среде лишние несколько микросекунд не очень важны). Покажите мне миллионы pps в устойчивом состоянии, и я буду заинтересован в предоставлении более подробной информации. :)
Шон