Ich implementiere ein System, bei dem ein Gerät in einem Netzwerk mit einer sehr hohen Frequenz (Hunderte oder Tausende von Abfragen pro Sekunde) abfragt, indem ein kleines UDP-Paket mit etwa 8 Datenbytes gesendet wird. Dies wird von einer anderen Anwendung empfangen, möglicherweise auf einem anderen Gerät, das eine sehr einfache Verarbeitung ausführt und das in einem anderen UDP-Paket verpackte Ergebnis mit wenigen Bytes sendet.
Ich würde gerne wissen, welche Art von Umlaufzeiten mit typischer Hardware möglich sind, bei der die Kommunikationssysteme möglicherweise über kabelgebundenes Ethernet in einem Abstand von einigen Metern verbunden sind, wobei Ausbreitungs- und Übertragungsverzögerungen usw. berücksichtigt werden.
Andere Gedanken und Vorschläge sind ebenfalls willkommen.
Antworten:
Ein Beispiel für einen Juniper MX80 mit einer Eingangs-> Ausgangsverzögerung von ca. 8us. Bei einem Cut-Through-Schalter mit geringer Latenz kann er <1us (möglicherweise 0,7us) sein. (Denken Sie daran, dass der Cut-Through-Switch nicht zu 100% durchschneiden kann, nur wenn der Ausgangsport zufällig inaktiv ist!)
1 km Faser entspricht einer Latenz von ca. 5us (wieder in eine Richtung).
Die Serialisierungsverzögerung bei 10 G für eine Nutzlast mit minimaler Größe (46B) beträgt ungefähr 67 ns (0,067 us). Durch Erhöhen der Verbindungsgeschwindigkeit verringern Sie die Serialisierungsverzögerung.
Der IP-Header ist 20B, der UDP-Header ist 8B, Ihre Daten sind 8B, Sie haben also nur 36B Daten, was bedeutet, dass Ihre Ethernet-Nutzdaten 10B Müll enthalten, den Sie senden MÜSSEN , dh wenn Sie etwas zu Ihrer Nutzlast hinzufügen müssen, fügen Sie es hinzu. Es hat 0 Latenzkosten.
Ich hoffe, Sie können RTT daraus extrapolieren, indem Sie die Geräteverzögerung mit der Geräteanzahl multiplizieren und 5us für jeden Kilometer Faser addieren und diese dann mit 2 multiplizieren.
Ich kann nicht widerstehen, ein paar Gedanken über HFT hinzuzufügen.
Demnach halbierte sich das HFT-Volumen zwischen 2009 und 2012. Dies deutet darauf hin, dass die einfachen Gewinne weg sind. Ich würde gerne ein wissenschaftliches Papier oder nur echte Daten über die HFT-Latenz und ihre Auswirkungen auf den Gewinn sehen. Ich vermute, dass die Latenz, die sich auf die Handelsgewinne auswirkt, in einem anderen Ausmaß liegt als die Latenz, über die wir gerade sprechen. Ein Freund von mir, der ein Netzwerk für eine der größten Börsen aufbaut, scheint zu glauben, dass es nur Kunden sind, die "niedriger == besser" sind, ohne die Skalen zu verstehen.
Ich kann vollkommen verstehen, wie nützlich HFT war, als nur wenige Leute es taten, als man beobachten konnte, dass MarktA keine Veränderung sieht, die MarktB sieht und daraus Kapital schlägt. Einige reden über die Verwendung von Regulierung, um HFT zu stoppen, indem jeder Trade besteuert wird, was ihn für alle teuer macht. Ich denke nicht, dass er benötigt wird, ich denke, das Zeitfenster schließt sich bereits.
quelle
Ich denke, auf herkömmlicher halboptimierter Hardware sollten Sie in der Lage sein:
In ~ 10 uns bei 10gig. Wenn Sie die Dinge wirklich sperren, kann diese Zahl erheblich niedriger sein.
Fast die gesamte Latenz, die Sie sehen werden, stammt nicht von Netzwerkhardware / -kabeln, sondern von Ihren Hostsystemen. Ein vernünftiger Cut-Through-Schalter (Arista, Gnodal, New Cisco usw.) wird unter 1us liegen.
Stellen Sie zunächst sicher, dass die Prozesse, die die UDP-Pakete verbrauchen, an denselben Kern gebunden sind wie Ihre NIC-Interrupts. Stellen Sie von dort aus sicher, dass das Zusammenführen auf Ihrer Netzwerkkarte deaktiviert ist, und stellen Sie von dort aus sicher, dass MSI-X und DCA aktiviert sind.
Wenn Sie es ernst meinen ... schauen Sie sich OpenOnload von SolarFlare an. Sie verfügen über eine große Auswahl an Tools zum Testen / Überprüfen der Leistung.
quelle