Die Latenz zwischen zwei Linux-Hosts beträgt ca. 0,23 ms. Sie sind durch einen Schalter verbunden. Ping & Wireshark bestätigen die Latenzzahl. Aber ich habe keine Einsicht, was diese Latenz verursacht. Woher weiß ich, ob die Latenzzeit auf die Netzwerkkarte auf Host A oder B oder den Switch oder die Kabel zurückzuführen ist?
UPDATE: Die Latenz von .23 ms ist schlecht für meine vorhandene Anwendung, die Nachrichten mit sehr hoher Frequenz sendet, und ich versuche zu sehen, ob es auf .1ms gesenkt werden kann
Antworten:
Im Allgemeinen können Sie einige der erweiterten Optionen des Dienstprogramms iperf verwenden , um einen Überblick über die Netzwerkleistung zwischen Systemen zu erhalten, insbesondere über Latenz und Jitter.
Handelt es sich um einen UDP- oder TCP-basierten Nachrichtenstrom?
Ich habe oben darauf hingewiesen, dass Sie weitere Informationen zu Ihrem Setup benötigen. Wenn es sich um eine Messaging-Anwendung mit geringer Latenz handelt, gibt es eine ganze Welt von Optimierungs- und Optimierungstechniken, die sich auf die Optimierung von Hardware, Treibern und Betriebssystemen erstrecken. Aber wir brauchen wirklich mehr Informationen.
Bearbeiten:
Okay, das ist TCP-Messaging. Haben Sie irgendwelche
/etc/sysctl.conf
Parameter geändert ? Wie sehen Ihre Sende- / Empfangspuffer aus? Die Verwendung eines Echtzeit-Kernels allein kann nicht viel bewirken. Wenn Sie sich jedoch an den Punkt begeben, an dem Sie Interrupts an die CPU binden , kann es hilfreich sein, die Echtzeitpriorität der Messaging-App (chrt
) zu ändern und möglicherweise dastuned-adm
Profil des Systems zu ändern.Dies scheint ein generisches EL6-System zu sein. Eine einfache Möglichkeit, eine Leistungsoptimierungsbasis festzulegen, besteht darin, das Leistungsprofil des Systems in ein anderes zu ändern, das im optimierten Framework verfügbar ist . Dann bauen Sie von dort aus.
In deinem Fall:
Eine kurze Matrix mit den Unterschieden:
Können Sie uns etwas über die Hardware erzählen? Arten von CPU, NIC, Speicher?
Es könnte also interessant sein, Ihren Link zu testen ... Probieren Sie diesen iperf-Test aus ...
Starten Sie auf einem System einen iperf UDP-Listener. Öffnen Sie andererseits eine Verbindung zum ersten ... Ein schneller Test der Leitungsqualität.
In meinem Fall niedriger Jitter und niedrige Ping-Zeit:
Ich würde die Hardware und Schnittstellen auf Fehler überprüfen. Wenn Sie möchten, müssen Sie den Systemwechsel aufheben und sehen, wie eine direkte Verbindung aussieht. Sie möchten keinen hohen Jitter (Varianz), überprüfen Sie dies.
Aber ehrlich gesagt, sollte dies trotz der Ping-Zeiten, die Sie für Ihr aktuelles Setup benötigen, nicht ausreichen, um Ihre Anwendung zu beenden. Ich würde den Weg der Optimierung Ihrer Sende- / Empfangspuffer beschreiten. Siehe auch :
net.core.rmem_max
,net.core.wmem_max
und die Standardwerte ...Sowas in etwa
/etc/sysctl.conf
(bitte nach Geschmack abstimmen):quelle
tuned-adm
Profil.