Sollte das „Ping“ von Linux im Allgemeinen schneller sein als das „hrping“ von Windows?

Sollte das „Ping“ von Linux im Allgemeinen schneller sein als das „hrping“ von Windows?

Ich verwende HP DL360p Gen8. Ich habe Dual-Boot Windows Server 2008 R2 und RHEL7 installiert. In beiden Systemen habe ich LACP und VLANs konfiguriert. Es handelt sich also um denselben Server, dieselbe Hardware, dasselbe Netzwerk, dieselben Routentabellen usw.

Ich mache mir Sorgen wegen der Latenz, einschließlich der Netzwerklatenz, weil ich diesen Server für den HFT-Handel verwende.

Nun hatte ich erwartet, dass Linux etwas besser sein muss, wenn ich denselben Host von Windows und Linux aus anpinge. Überraschenderweise ist es überhaupt nicht besser. Tatsächlich ist es sogar ~5-10 Mikrosekunden schlechter als Windows, wenn ich denselben Host anpinge.

  • Ich verwende hrpingunter Windows und pingLinux
  • unter Windows habe ich das HP-Dienstprogramm für Teaming verwendet, unter RHEL 7 habe ich das integrierte „Teaming“ (kein Bonding) verwendet.

Ich hatte erwartet, dass Linux besser ist, weil:

  • ich nehme an, dass die Netzwerkimplementierung von RHEL 7 schneller ist als die von Windows Server 2008 R2
  • ich nehme an, dass die Teaming-/LACP-/VLAN-Implementierung von RHEL 7 schneller ist als die von Windows Server 2008 R2/HP

Meine Fragen:

  1. falls eine solche Zahl existiert: Um wie viele Mikrosekunden ist der Ping von RHEL 7 schneller als der von Windows Server 2008 R2?
  2. Wenn Linux ping5–10 Mikrosekunden langsamer ist und dadurch ein potenzielles Problem anzeigt, oder sollte ich diese Tatsache einfach ignorieren?
  3. Was kann ich tun/diagnostizieren/Fehler beheben, damit Linux schneller pingt als Windows?

Natürlich ist mir im wirklichen Leben die Latenz des realen Datenverkehrs, wie TCP/UDP, wichtiger, aber ich verwende es pingals ersten Schritt. Wahrscheinlich pingwerden dieselben Zahlen angezeigt, weil es „einfach“ ist, aber bei echtem TCP/UDP-Datenverkehr wird Linux viel schneller sein?

Antwort1

Es gibt eine Reihe von Faktoren. Zunächst kommt es auf die Maschine an, auf der Sie das Programm ausführen. Wenn Windows und Linux auf unterschiedlicher Hardware laufen, ist die Messung bedeutungslos.

Natürlich müssen Sie den durchschnittlichen Ping nach vielen Versuchen messen, die ersten paar Pings können andere Verzögerungen enthalten.

Die Pakete müssen durch den Kernel (IP-Stack und Netzwerkgerätetreiber) nach draußen und dann wieder hinein, wenn die Antwort empfangen wird. In dieser Phase können viele Faktoren den Unterschied beeinflussen:

  1. was tatsächlich zeitlich festgelegt ist: Zwei verschiedene Ping-Implementierungen könnten zwischen dem Starten des Timers und dem tatsächlichen Senden des Dings (und dasselbe auf dem Empfangspfad) mehr oder weniger Standardarbeit erledigen.
  2. Vorhandensein von Filtern: Firewalls und dergleichen können zusätzliche Schritte einführen
  3. Taktgranularität: Wie fein werden Prozesse vom Kernel gemultiplext? Sogar zwischen verschiedenen Linux-Ebenen kann die Ticklänge stark variieren, oder der Kernel könnte mehr oder weniger ticklos sein (ohne Unterbrechungen laufen, wenn nur ein Prozess läuft).
  4. Prozessmanagement: Wie schnell und auf welche Weise wird der Prozess geweckt, wenn das Paket zurückkommt? Windows und Linux machen das völlig unterschiedlich.
  5. Was macht der Rest des Systems? Finden gleichzeitig viele IOs statt, die den Kernel beschäftigen würden? Ändert sich etwas, wenn Sie niceden Ping auf eine höhere Priorität setzen?
  6. Frequenzskalierung: Die Verwaltung der CPU-Frequenz kann stark variieren: Linux hat viele „Regler“, die die Dinge unterschiedlich handhaben. Daher ist es möglich, dass Linux im Leerlauf mit einer niedrigeren Taktfrequenz läuft – außerdem hat ein Moment des Frequenzwechsels zusätzliche Latenz.
  7. Die Implementierung und Kompilierung des pingDienstprogramms könnte ebenfalls einige geringfügige Auswirkungen haben (obwohl die Latenz im Kernel wahrscheinlich den Hauptbeitrag leistet).

Der Linux-Kernel erreicht bekanntermaßen die Grenze des Netzwerkdurchsatzes bei10 Gigabit-Ebene. Also ... bei Mikrosekundengeschwindigkeiten sollte es keinen großen Unterschied machen. Es ist wahrscheinlich eine Frage der Planung, der Betriebssystemlatenzen usw. Und die Ping-Latenz stellt nicht die tatsächliche Leistung unter Last dar. Sie sollten diese Messung nicht als Faktor berücksichtigen, wenn Sie etwas entscheiden. Sie benötigen viele andere Benchmarks, insbesondere unter realistischen Lasten.

Und schließlich können die Linux-Kerneleinstellungen die Leistung stark beeinflussen – Echtzeitprojekte benötigen einen dedizierten Kernel, um optimal zu funktionieren. Sie werden mehr Unterschiede zwischen verschiedenen Konfigurationen (auf beiden Plattformen) feststellen als bei diesen beiden Versuchen.

verwandte Informationen