Utiliser Onload
Cette page explique comment utiliser Onload pour les instances Compute Engine à latence ultra-faible.
Onload est une pile réseau haute performance pour les applications sensibles à la latence qui nécessitent une latence ultra-faible, une gigue minimale et des performances constantes. Onload fournit une implémentation TCP/IP qui contourne le kernel du système d'exploitation et s'exécute directement dans l'espace utilisateur, tout en permettant aux applications d'utiliser les API de socket BSD standards.
L'utilisation d'Onload avec la solution ULL inclut la prise en charge des éléments suivants :
- Direction de flux : avec les interfaces réseau ULL, vous pouvez contourner le hachage RSS (Receive Side Scaling) par défaut en dirigeant des flux de trafic spécifiques directement vers une file d'attente de réception (RX) désignée. Pour le trafic ULL (unicast et multicast), le steering de flux 3-tuple est compatible (protocole, adresse IP de destination, port de destination).
Type d'instance et image d'OS requis
Pour utiliser Onload, vous devez créer des instances Compute Engine ULL (U4P ou U4C) en utilisant le projet d'image et l'image fournis par Google pour les tests, comme décrit dans Créer des instances Compute Engine ULL.
Lorsque vous utilisez l'image requise, Onload est préinstallé et chargé au démarrage. Vous pouvez ensuite exécuter des processus avec Onload, comme décrit dans les procédures de cette page.
Démarrer et arrêter onload
Cette section explique comment démarrer et arrêter Onload. Vous devez démarrer Onload pour effectuer les procédures décrites dans les sections suivantes.
Pour démarrer Onload, exécutez la commande suivante :
sudo /opt/gcp_tp-scripts/load-onload-and-tune
Pour arrêter Onload, exécutez la commande suivante :
sudo /opt/gcp_tp-scripts/unload-onload
Activer l'interrogation d'état occupé
Pour obtenir une latence ultra-faible et minimiser la gigue, activez l'interrogation intensive.
Pour activer l'interrogation occupée, procédez comme suit :
Si ce n'est pas déjà fait, connectez-vous à l'instance à l'aide de SSH.
Vous pouvez activer l'interrogation d'état occupé pour toutes les files d'attente ou de manière plus précise. Choisissez l'option qui correspond à votre cas d'utilisation :
Toutes les files d'attente :
sudo /opt/gcp_tp-scripts/busypoll-all-queues
File d'attente RX spécifique utilisée par une pile Onload :
Si ce n'est pas déjà fait, démarrez une pile Onload en exécutant la commande suivante :
gcp_tp-onload /opt/neper/tcp_rr &
Pour obtenir le
stack-idde la pile que vous avez démarrée, exécutez la commande suivante :onload_stackdump
Pour obtenir les numéros d'index de vos interfaces réseau, exécutez la commande suivante :
cat /sys/class/net/NIC_NAME/ifindex
Remplacez
NIC_NAMEpar le nom de l'interface réseau dans l'OS invité, par exempleeth1oueth2.Pour activer l'interrogation occupée, exécutez la commande suivante :
sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID enable NIC_INDEX CPU_ID
Remplacez les éléments suivants :
STACK_ID: ID de pile que vous avez obtenu précédemmentNIC_INDEX: numéro d'index de l'interface réseau pour laquelle vous souhaitez activer l'interrogation d'occupation, par exemple1ou2.CPU_ID: ID du processeur pour lequel activer l'interrogation intensive.- Nous vous recommandons de ne pas utiliser le processeur
0ni aucun processeur utilisé par une application. Assurez-vous d'utiliser des cœurs de processeur locaux au nœud NUMA de l'interface réseau que vous avez spécifiée. Exemple :
eth1utilise le nœud NUMA0, qui utilise les cœurs de processeur0-29.eth2utilise le nœud NUMA2. qui utilise les cœurs de processeur60-89.
- Nous vous recommandons de ne pas utiliser le processeur
Vous pouvez désactiver l'interrogation intensive à l'aide de la commande suivante :
sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID disable NIC_INDEX CPU_ID
Étapes suivantes
- Pour synchroniser l'horloge système de votre instance avec l'horloge de la carte d'interface réseau physique de son serveur hôte, consultez Configurer une heure précise.