Opóźnienie między 2 hostami systemu Linux wynosi około 0,23 ms. Są one połączone jednym przełącznikiem. Ping i Wireshark potwierdzają numer opóźnienia. Ale nie mam żadnego wglądu w przyczyny tego opóźnienia. Skąd mam wiedzieć, czy opóźnienie wynika z karty sieciowej na hoście A lub B, przełączniku lub kablach?
AKTUALIZACJA: Opóźnienie 0,23 ms jest złe dla mojej istniejącej aplikacji, która wysyła wiadomości z bardzo wysoką częstotliwością i próbuję sprawdzić, czy można ją obniżyć do .1ms
Odpowiedzi:
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 modyfikacjatuned-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:
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.
W moim przypadku niski jitter i niski czas pingowania:
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):źródło
tuned-adm
profil.