Назад | Перейти на главную страницу

Какую минимальную задержку Gigabit Ethernet я могу ожидать?

У меня есть 2 сервера, сидящих в стойке под управлением Ubuntu 16.04 с 1-метровым Ethernet-кабелем между ними, оба имеют стандартные адаптеры Intel Ethernet.

В ping между двумя примерно 300 us (микросекунды).

Это стандартная задержка, которую я видел в большинстве конфигураций Gigabit-Ethernet.

Но эта задержка все еще кажется довольно высокой по сравнению с теоретическими пределами; почему это? Я читал, что 1 GbE может обеспечить задержку 40 мкс.

Это минимальная задержка, которую я могу ожидать, или есть настройка программного обеспечения, которую я могу выполнить, чтобы уменьшить эту задержку? В чем узкое место? Это линукс? На этот веб-сайт геймера для Windows инструмент на скриншоте, кажется, в большинстве случаев предлагает задержку в 40 мкс, но это мне не очень помогает для моих серверов Linux.

(Как) я могу сделать свой ping 40 мкс?

РЕДАКТИРОВАТЬ: Смотря на скриншот опять же, может оказаться, что показанные 40 мкс на самом деле не являются временем возврата, но на самом деле это определенная задержка в ядре Windows, и поэтому 40 мкс могут быть только часть от общего времени в оба конца, которое может быть больше и не указано. Это также будет соответствовать приведенным здесь ответам.

(Я изначально задал этот вопрос суперпользователю; в то время мне не было ясно, что ServerFault будет более подходящим сообществом, чтобы задавать вопросы о производительности сети, и у меня недостаточно репутации, чтобы переместить этот вопрос, поэтому я оставался здесь. Я также переключил оборудование на серверное оборудование.)

А ping не измеряет ни задержку, ни время приема-передачи. Он измеряет время ответа на эхо-запрос ICMP. Сообщения ICMP запускаются с низким приоритетом и принимают путь дольше, чем серьезный трафик.

Как указывает @barbequesauce, для витой пары требуется сложное кодирование, поэтому сетевым адаптерам 1000BASE-T потребуется не менее 10 мкс на каждую сторону для кодеков (плюс системная шина и задержка IRQ). Витая пара категории 6 имеет коэффициент скорости 65% (~ 200 000 км / с), поэтому он добавляет 0,05 мкс или 50 нс на 10 м. Волоконно на самом деле не быстрее (VF 67%), но использует более простое кодирование с, возможно, 5 мкс на сторону вместо 10 мкс.

Стек IP увеличит ваш бюджет задержки на несколько микросекунд. В быстрой системе вы могли бы уйти с ~ 20 мкс.

Конечно, точные значения для сетевых адаптеров, вашей системной шины и IP-стека зависят от вашего оборудования и программного обеспечения. Приведенные выше цифры примерно настолько хороши, насколько это возможно. И не используйте ping измерять.

Короче говоря, у вас, безусловно, нет никакой реальной проблемы, проблема в интерпретации ping вывод.

Итак, две вещи, которые следует учитывать -

Медь увеличивает задержку по сравнению с оптоволокном - 15 мкс на каждую сторону обмена, если я правильно помню из моих дней HFT. Медный кабель длиной 1 м сам по себе вводит 60 мкс задержки. Волокно, с другой стороны, составляет ~ 5 мкс.

Другое (возможно, более важное) соображение связано с настройкой стека IP и задержкой сериализации. По умолчанию стек может быть настроен для пакетов меньшего размера; в этом случае ping будет разбит на части для отправки и получения, поэтому стек замедлит время ответа ... убедитесь, что обе стороны настроены на одинаковые размеры, чтобы быть уверенным.