Mit Onload arbeiten

Auf dieser Seite wird beschrieben, wie Sie Onload für Compute Engine-Instanzen mit extrem niedriger Latenz (Ultra Low Latency, ULL) verwenden.

Onload ist ein leistungsstarker Netzwerk stack für latenzempfindliche Anwendungen, die eine extrem niedrige Latenz, minimalen Jitter und eine gleichbleibende Leistung erfordern. Onload bietet eine TCP/IP-Implementierung, die den Betriebssystemkernel umgeht und direkt im Userspace ausgeführt wird, während Anwendungen Standard-BSD-Socket-APIs verwenden können.

Die Verwendung von Onload mit der ULL-Lösung umfasst die Unterstützung für Folgendes:

Erforderlicher Instanztyp und Betriebssystem-Image

Wenn Sie Onload verwenden möchten, müssen Sie ULL Compute Engine-Instanzen (U4P oder U4C) mit dem Image-Projekt und dem Image erstellen, das von Google für Tests bereitgestellt wird. Eine Anleitung finden Sie unter ULL Compute Engine-Instanzen erstellen.

Wenn Sie das erforderliche Image verwenden, ist Onload vorinstalliert und wird beim Booten geladen. Anschließend können Sie Prozesse mit Onload ausführen, wie in den Verfahren auf dieser Seite beschrieben.

Onload starten und beenden

In diesem Abschnitt wird beschrieben, wie Sie Onload starten und beenden. Sie müssen Onload starten, um die Verfahren in den folgenden Abschnitten auszuführen.

Führen Sie den folgenden Befehl aus, um Onload zu starten:

sudo /opt/gcp_tp-scripts/load-onload-and-tune

Führen Sie den folgenden Befehl aus, um Onload zu beenden:

sudo /opt/gcp_tp-scripts/unload-onload

Busy Polling aktivieren

Aktivieren Sie Busy Polling, um eine extrem niedrige Latenz zu erzielen und Jitter zu minimieren.

So aktivieren Sie Busy Polling:

  1. Stellen Sie über SSH eine Verbindung zur Instanz her, falls noch nicht geschehen.

  2. Sie können Busy Polling für alle Warteschlangen oder detaillierter aktivieren. Wählen Sie die Option aus, die Ihrem Anwendungsfall entspricht:

    • Alle Warteschlangen:

      sudo /opt/gcp_tp-scripts/busypoll-all-queues
      
    • Bestimmte RX-Warteschlange, die von einem Onload-Stack verwendet wird:

      1. Starten Sie einen Onload-Stack, falls noch nicht geschehen, indem Sie den folgenden Befehl ausführen:

        gcp_tp-onload /opt/neper/tcp_rr &
        
      2. Führen Sie den folgenden Befehl aus, um die stack-id des gestarteten Stacks abzurufen:

        onload_stackdump
        
      3. Führen Sie den folgenden Befehl aus, um die Indexnummern Ihrer Netzwerkschnittstellen abzurufen:

        cat /sys/class/net/NIC_NAME/ifindex
        

        Ersetzen Sie NIC_NAME durch den Namen der Netzwerkschnittstelle im Gastbetriebssystem, z. B. eth1 oder eth2.

      4. Führen Sie den folgenden Befehl aus, um Busy Polling zu aktivieren:

        sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID enable NIC_INDEX CPU_ID
        

        Ersetzen Sie Folgendes:

        • STACK_ID: die zuvor abgerufene Stack-ID
        • NIC_INDEX: die Indexnummer der Netzwerkschnittstelle, für die Sie Busy Polling aktivieren möchten, z. B. 1 oder 2.
        • CPU_ID: die ID der CPU, für die Busy Polling aktiviert werden soll.

          • Wir empfehlen, die CPU 0 oder eine CPU, die von einer Anwendung verwendet wird, nicht zu verwenden.
          • Verwenden Sie CPU-Kerne, die sich lokal auf dem NUMA-Knoten der angegebenen Netzwerkschnittstelle befinden. Beispiel:

            • eth1 verwendet den NUMA-Knoten 0, der die CPU-Kerne 0-29 verwendet.
            • eth2 verwendet den NUMA-Knoten 2. Dieser verwendet die CPU-Kerne 60-89.

Sie können Busy Polling mit dem folgenden Befehl deaktivieren:

sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID disable NIC_INDEX CPU_ID

Nächste Schritte

  • Informationen zum Synchronisieren der Systemuhr Ihrer Instanz mit der physischen NIC-Uhr des Hostservers finden Sie unter Genaue Zeit konfigurieren.