Загалом, ви можете використовувати деякі вдосконалені перемикачі на утиліту iperf, щоб отримати уявлення про продуктивність мережі між системами, зокрема затримкою та тремтінням ...
Це потік повідомлень на основі UDP або TCP?
Я коментував вище необхідність отримання додаткової інформації про ваше налаштування. Якщо це програма з повідомленнями з низькою затримкою, існує цілий світ методів настройки та оптимізації, які охоплюють апаратне забезпечення, драйвер та налаштування ОС. Але насправді нам потрібна додаткова інформація.
Редагувати:
Гаразд, значить, це обмін повідомленнями TCP. Ви змінили будь-які /etc/sysctl.conf
параметри? Як виглядають ваші буфери для надсилання / отримання? Використання ядра в режимі реального часу не допоможе багато, але якщо ви перейдете до точки, коли ви прив'язуєте переривання до процесора, зміна пріоритету програми для обміну повідомленнями в реальному часі ( chrt
) та, можливо, зміна tuned-adm
профілю системи може допомогти ...
Це звучить як загальна система EL6, тому простий спосіб встановлення базової лінії настройки продуктивності включає зміну профілю продуктивності системи на інший, доступний в межах налаштованому рамках . Потім будуйте звідти.
У вашому випадку:
yum install tuned tuned-utils
tuned-adm profile latency-performance
Швидка матриця, що показує відмінності:
Чи можете ви розповісти нам про обладнання? Типи процесора, NIC, пам'яті?
Тож, можливо, буде цікаво перевірити своє посилання ... Спробуйте цей тест 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