Задержка между двумя хостами Linux составляет около 0,23 мс. Они связаны одним выключателем. Ping & Wireshark подтверждают число задержки. Но у меня нет никакой информации о причинах этой задержки. Как я могу узнать, связана ли задержка с сетевой картой на хосте A или B или коммутатором или кабелями?
ОБНОВЛЕНИЕ: задержка в 23 мс плоха для моего существующего приложения, которое отправляет сообщения с очень высокой частотой, и я пытаюсь выяснить, можно ли его уменьшить до 0,1 мс
Ответы:
В общем, вы можете использовать некоторые из расширенных переключателей для утилиты iperf, чтобы получить представление о производительности сети между системами, в частности, задержку и дрожание ...
Это поток сообщений UDP или TCP?
Я прокомментировал выше необходимость получения дополнительной информации о вашей настройке. Если это приложение для обмена сообщениями с малой задержкой, существует целый мир технологий настройки и оптимизации , охватывающих настройку аппаратного обеспечения, драйверов и ОС. Но на самом деле нам нужно больше информации.
Редактировать:
Итак, это обмен сообщениями по протоколу TCP. Вы изменили какие-либо
/etc/sysctl.conf
параметры? Как выглядят ваши буферы отправки / получения? Использование одного только ядра реального времени мало что даст, но если вы перейдете к точке привязки прерываний к процессорам, изменение приоритета приложения обмена сообщениями в реальном времени (chrt
) и, возможно, изменениеtuned-adm
профиля системы может помочь ...Это звучит как общая система EL6, поэтому простой способ установить базовый уровень настройки производительности включает изменение профиля производительности системы на другой, доступный в настроенной среде . Затем построить оттуда.
В твоем случае:
Быстрая матрица, показывающая различия:
Можете ли вы рассказать нам об оборудовании? Типы CPU, NIC, памяти?
Итак, может быть интересно проверить вашу ссылку ... Попробуйте этот тест iperf ...
В одной системе запустите iperf UDP Listener. С другой стороны, откройте соединение с первым ... Быстрый тест качества линии.
В моем случае низкий джиттер и малое время пинга:
Я бы проверил оборудование и интерфейсы на наличие ошибок. Если хотите, исключите переключение между системами и посмотрите, как выглядит прямое соединение. Вы не хотите большого джиттера (дисперсии), так что проверьте это.
Но, честно говоря, даже с учетом времени пинга, которое вы получаете в своей текущей настройке, этого не должно быть достаточно, чтобы убить ваше приложение. Я бы пошел по пути настройки ваших буферов отправки / получения. См:
net.core.rmem_max
,net.core.wmem_max
и их значения по умолчанию ...Что-то вроде следующего
/etc/sysctl.conf
(пожалуйста, настройте по вкусу):источник
tuned-adm
профиль.