JSOR mit Java-TCP-Kommunikation vergleichen (nurLinux )

Das TCP-Protokoll ist vom Betriebssystemkernel abhängig, während das RDMA-Protokoll den Betriebssystemkernel umgeht und die direkte Kommunikation zwischen Java™ -Anwendungen auf verschiedenen RDMA-fähigen Hostsystemen ermöglicht. Aus diesem Grund erfordern RDMA-Netzoperationen weniger Prozessorressourcen und verbessern den Netzdurchsatz.

Hinweis: Start der Änderungen für Serviceaktualisierung 8 Fixpack 30Die RDMA-Implementierung, die zuvor veraltet war, wurde aus IBM® SDK, Java Technology Edition, Version 8 entfernt.Ende der Änderungen für Service Refresh 8 Fixpack 30
Im traditionellen Modell der Java-TCP-Socketverarbeitung spielt der Kernel des Hostbetriebssystems eine Schlüsselrolle. Für alle allgemeinen Netzoperationen sind Betriebssystemaufrufe erforderlich, z. B.:
  • Erstellen von Sockets
  • Binden an einen Port
  • Empfangsbereitschaft an einer herkömmlichen Adresse
  • Herstellen einer Verbindung zu einem fernen Host
  • Akzeptieren ankommenden Verbindungsanforderungen
  • Übertragen von Daten zwischen verbundenen Endpunkten
Wenn Java-Client und -Serveranwendungen auf verschiedenen Hostsystemen vorhanden sind, umfasst die Übertragung von Daten zwischen Systemen mehrere Kopieroperationen zwischen Puffern, bevor die Daten zwischen Netzschnittstellenkarten übertragen werden. Die folgenden Puffer sind auf jedem System in diesen Prozess eingebunden:
  • Java-Anwendungspuffer zu Java-Socketpuffer
  • Java-Socketpuffer zum Socket-Puffer des Betriebssystems
  • Socketpuffer des Betriebssystems zum Puffer des Netzschnittstellentreibers
Diese Kopieroperationen verwenden Prozessorzyklen bevor die Daten zwischen den Hostsystemen übertragen werden.

Anders als das TCP-Protokoll ist das RDMA-Protokoll auf einem Hochgeschwindigkeits-Switch-Fabric wie InfiniBand definiert, das vom Betriebssystemkernel unabhängig ist. Stattdessen wird die Netzverarbeitung auf einen dedizierten RDMA-Netzschnittstellenadapter ausgelagert. Das RDMA-Protokoll ermöglicht einer Java-Anwendung auf einem Host, direkt auf den Speicher einer Java-Anwendung auf einem anderen Host zuzugreifen. Diese Funktion ermöglicht die direkte Übertragung von Daten zwischen Java-Anwendungen.

Das folgende Diagramm veranschaulicht die Verbindungen, die zwischen einer Java-Client-und -Serveranwendung für TCP/IP-Kommunikation und RDMA-Kommunikation erforderlich sind:
Das Diagramm zeigt die Interaktionen zwischen einer Java-Client und einer Serveranwendung, die für die TCP/IP-und RDMA-Kommunikation erforderlich sind. Vor allem für die TCP/IP-Kommunikation zeigt das Diagramm die detaillierten Pufferkopieroperationen, die auf Betriebssystemebene erforderlich sind. Die Interaktionen werden im Text ausführlicher beschrieben.

Verglichen mit der TCP-Verarbeitung verwendet RDMA weniger Prozessorressourcen und kann das Hochleistungs-Switch-Fabric nutzen, um den Datendurchsatz zwischen RDMA-fähigen Systemen zu maximieren.