В общем, вы можете использовать некоторые из расширенных переключателей для утилиты iperf, чтобы получить представление о производительности сети между системами, в частности, задержку и дрожание ...
Это поток сообщений UDP или TCP?
Я прокомментировал выше необходимость получения дополнительной информации о вашей настройке. Если это приложение для обмена сообщениями с малой задержкой, существует целый мир технологий настройки и оптимизации , охватывающих настройку аппаратного обеспечения, драйверов и ОС. Но на самом деле нам нужно больше информации.
Редактировать:
Итак, это обмен сообщениями по протоколу TCP. Вы изменили какие-либо /etc/sysctl.conf
параметры? Как выглядят ваши буферы отправки / получения? Использование одного только ядра реального времени мало что даст, но если вы перейдете к точке привязки прерываний к процессорам, изменение приоритета приложения обмена сообщениями в реальном времени ( chrt
) и, возможно, изменение tuned-adm
профиля системы может помочь ...
Это звучит как общая система EL6, поэтому простой способ установить базовый уровень настройки производительности включает изменение профиля производительности системы на другой, доступный в настроенной среде . Затем построить оттуда.
В твоем случае:
yum install tuned tuned-utils
tuned-adm profile latency-performance
Быстрая матрица, показывающая различия:
Можете ли вы рассказать нам об оборудовании? Типы CPU, NIC, памяти?
Итак, может быть интересно проверить вашу ссылку ... Попробуйте этот тест iperf ...
В одной системе запустите iperf UDP Listener. С другой стороны, откройте соединение с первым ... Быстрый тест качества линии.
# 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