Utilizzare Onload
Questa pagina descrive come utilizzare Onload per le istanze Compute Engine a latenza ultra bassa (ULL).
Onload è uno stack di rete ad alte prestazioni per applicazioni sensibili alla latenza che richiedono latenza molto bassa, jitter minimo e prestazioni costanti. Onload fornisce un'implementazione TCP/IP che ignora il kernel del sistema operativo e viene eseguita direttamente nello spazio utente, consentendo alle applicazioni di utilizzare le API socket BSD standard.
L'utilizzo di Onload con la soluzione ULL include il supporto per quanto segue:
- Steering del flusso: con le interfacce di rete ULL, puoi bypassare l'hashing RSS (Receive Side Scaling) predefinito indirizzando flussi di traffico specifici direttamente a una coda di ricezione (RX) designata. Per il traffico unicast e multicast ULL, è supportato lo steering del flusso a 3 tuple (protocollo, indirizzo IP di destinazione, porta di destinazione).
Tipo di istanza e immagine sistema operativo obbligatori
Per utilizzare Onload, devi creare istanze di Compute Engine ULL (U4P o U4C) utilizzando il progetto di immagine e l'immagine forniti da Google per i test, come descritto in Creare istanze di Compute Engine ULL.
Quando utilizzi l'immagine richiesta, Onload viene preinstallato e caricato all'avvio. Puoi quindi eseguire i processi con Onload come descritto nelle procedure in questa pagina.
Avviare e interrompere onload
Questa sezione descrive come avviare e arrestare Onload. Devi avviare Onload per completare le procedure nelle sezioni seguenti.
Per avviare Onload, esegui questo comando:
sudo /opt/gcp_tp-scripts/load-onload-and-tune
Per arrestare Onload, esegui questo comando:
sudo /opt/gcp_tp-scripts/unload-onload
Attivare il polling occupato
Per ottenere una latenza molto bassa e ridurre al minimo il jitter, abilita il polling occupato.
Per attivare il polling occupato:
Se non l'hai ancora fatto, connettiti all'istanza utilizzando SSH.
Puoi attivare il polling occupato per tutte le code o in modo più granulare. Scegli l'opzione corrispondente al tuo caso d'uso:
Tutte le code:
sudo /opt/gcp_tp-scripts/busypoll-all-queues
Coda RX specifica utilizzata da uno stack Onload:
Se non l'hai ancora fatto, avvia uno stack Onload eseguendo questo comando:
gcp_tp-onload /opt/neper/tcp_rr &
Per ottenere l'
stack-iddello stack che hai avviato, esegui questo comando:onload_stackdump
Per ottenere i numeri di indice delle interfacce di rete, esegui questo comando:
cat /sys/class/net/NIC_NAME/ifindex
Sostituisci
NIC_NAMEcon il nome dell'interfaccia di rete nel sistema operativo guest, ad esempioeth1,eth2.Per abilitare il polling occupato, esegui questo comando:
sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID enable NIC_INDEX CPU_ID
Sostituisci quanto segue:
STACK_ID: l'ID stack ottenuto in precedenzaNIC_INDEX: il numero di indice dell'interfaccia di rete per la quale vuoi attivare il polling occupato, ad esempio1o2.CPU_ID: l'ID della CPU per cui attivare il polling occupato.- Ti consigliamo di non utilizzare la CPU
0o qualsiasi CPU in uso da un'applicazione. Assicurati di utilizzare i core della CPU locali del nodo NUMA dell'interfaccia di rete che hai specificato. Ad esempio:
eth1utilizza il nodo NUMA0, che utilizza i core della CPU0-29.eth2utilizza il nodo NUMA2. che utilizza i core CPU60-89.
- Ti consigliamo di non utilizzare la CPU
Puoi disattivare il polling occupato utilizzando il seguente comando:
sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID disable NIC_INDEX CPU_ID
Passaggi successivi
- Per sincronizzare l'orologio di sistema dell'istanza con l'orologio della scheda di NIC fisica del server host, consulta Configurare l'ora esatta.