Как диагностировать задержку между 2 хостами Linux

DST=(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9])[.]){3}(([2]([0-4][0-9]|[5][0-5])|[0-1]?[0-9]?[0-9]))
16
задан 22 April 2015 в 18:10
1 ответ

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

Это поток сообщений на основе UDP или TCP?

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

Edit:

Хорошо, это обмен сообщениями TCP. Вы изменили какие-либо параметры /etc/sysctl.conf ? Как выглядят ваши буферы отправки / получения? Использование одного только ядра реального времени мало что дает, но если вы перейдете к точке, где вы привязываете прерывания к процессору, изменение приоритета в реальном времени приложения для обмена сообщениями ( chrt ) и, возможно, изменение профиля системы tuned-adm может помочь ...

Звучит как общая система EL6 , поэтому простой способ установить базовый уровень настройки производительности заключается в изменении профиля производительности системы на другой, доступный в рамках настроенной среды . Затем строите оттуда.

В вашем случае:

yum install tuned tuned-utils
tuned-adm profile latency-performance

Быстрая матрица, показывающая различия:

Не могли бы вы рассказать нам об оборудовании? Типы процессора, сетевой карты, памяти?

Итак, может быть интересно проверить вашу ссылку ... Попробуйте этот тест iperf ...

В одной системе запустите прослушиватель UDP iperf. С другой стороны, откройте соединение с первым ... Быстрый тест качества линии.

# Server2
[root@server2 ~]# iperf -su   

# Server1
[root@server1 ~]# iperf -t 60 -u -c server2

В моем случае низкий джиттер и малое время пинга:

------------------------------------------------------------
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size:  224 KByte (default)
------------------------------------------------------------
[  3] local 192.168.15.3 port 5001 connected with 172.16.2.152 port 36312
[ ID] Interval       Transfer     Bandwidth        Jitter   Lost/Total Datagrams
[  3]  0.0-20.0 sec  2.50 MBytes  1.05 Mbits/sec   0.012 ms    0/ 1785 (0%)

PING server1 (172.16.2.152) 56(84) bytes of data.
64 bytes from server1 (172.16.2.152): icmp_seq=1 ttl=63 time=0.158 ms
64 bytes from server1 (172.16.2.152): icmp_seq=2 ttl=63 time=0.144 ms

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

Но, честно говоря, даже с учетом времени пинга, которое вы получаете при текущей настройке, этого должно быть недостаточно, чтобы убить ваше приложение. Я бы пошел по пути настройки ваших буферов отправки / получения. См .: net.core.rmem_max , net.core.wmem_max и их значения по умолчанию ...

Что-то вроде следующего в /etc/sysctl.conf (настройте по вкусу):

net.core.rmem_default = 10000000
net.core.wmem_default = 10000000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
15
ответ дан 2 December 2019 в 20:43

Теги

Похожие вопросы