Zasadniczo można użyć niektórych zaawansowanych przełączników do narzędzia iperf, aby uzyskać widok wydajności sieci między systemami, w szczególności opóźnienia i fluktuacji ...
Czy jest to strumień wiadomości oparty na UDP lub TCP?
Skomentowałem powyżej, że potrzebuję więcej informacji o konfiguracji. Jeśli jest to aplikacja do przesyłania wiadomości o niskim opóźnieniu, istnieje cały świat technik dostrajania i optymalizacji, które obejmują dostosowanie sprzętu, sterowników i systemu operacyjnego. Ale tak naprawdę potrzebujemy więcej informacji.
Edytować:
Okej, więc to wiadomości TCP. Czy zmodyfikowałeś jakieś /etc/sysctl.conf
parametry? Jak wyglądają Twoje bufory wysyłania / odbierania? Samo korzystanie z jądra w czasie rzeczywistym niewiele zrobi, ale jeśli przejdziesz do miejsca, w którym wiążesz przerwania dla procesorów, zmiana priorytetu aplikacji do przesyłania wiadomości w czasie rzeczywistym ( chrt
) i ewentualnie modyfikacja tuned-adm
profilu systemu może pomóc ...
Brzmi to jak ogólny system EL6, więc łatwy sposób na ustawienie linii bazowej dostrajania wydajności polega na zmianie profilu wydajności systemu na inny dostępny w ramach tuningu . Następnie buduj stamtąd.
W Twoim przypadku:
yum install tuned tuned-utils
tuned-adm profile latency-performance
Szybka matryca pokazująca różnice:
Czy możesz nam powiedzieć o sprzęcie? Rodzaje procesorów, kart sieciowych, pamięci?
Testowanie linku może być interesujące ... Wypróbuj ten test iperf ...
W jednym systemie uruchom program nasłuchujący iperf UDP. Z drugiej strony otwórz połączenie z pierwszym ... Szybki test jakości linii.
# Server2
[root@server2 ~]# iperf -su
# Server1
[root@server1 ~]# iperf -t 60 -u -c server2
W moim przypadku niski jitter i niski czas pingowania:
------------------------------------------------------------
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
Sprawdziłbym sprzęt i interfejsy pod kątem błędów. Jeśli chcesz, wyeliminuj przełączanie między systemami i zobacz, jak wygląda bezpośrednie połączenie. Nie chcesz wysokiego jittera (wariancji), więc sprawdź to.
Ale szczerze mówiąc, nawet przy czasach pingowania przy bieżącej konfiguracji, nie powinno to wystarczyć do zabicia twojej aplikacji. Zrobiłbym ścieżkę dostrajania buforów wysyłania / odbierania. Patrz: net.core.rmem_max
, net.core.wmem_max
i ich ustawienia domyślne ...
Coś takiego jak poniżej /etc/sysctl.conf
(proszę dostosować do smaku):
net.core.rmem_default = 10000000
net.core.wmem_default = 10000000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216