Trabaja con Onload
En esta página, se describe cómo usar Onload para instancias de Compute Engine de latencia ultrabaja (ULL).
Onload es una pila de red de alto rendimiento para aplicaciones sensibles a la latencia que requieren latencia ultrabaja, fluctuación mínima y rendimiento coherente. Onload proporciona una implementación de TCP/IP que omite el kernel del sistema operativo y se ejecuta directamente en el espacio del usuario, lo que permite que las aplicaciones usen las APIs de socket BSD estándar.
El uso de Onload con la solución ULL incluye compatibilidad con lo siguiente:
- Direccionamiento de flujo: Con las interfaces de red ULL, puedes omitir el hash predeterminado de Receive Side Scaling (RSS) dirigiendo flujos de tráfico específicos directamente a una cola de recepción (RX) designada. Para el tráfico de unidifusión y multidifusión de ULL, se admite el direccionamiento de flujo de 3 tuplas (protocolo, dirección IP de destino y puerto de destino).
Tipo de instancia y imagen de SO obligatorios
Para usar Onload, debes crear instancias de Compute Engine de ULL (U4P o U4C) con el proyecto de imagen y la imagen que proporciona Google para realizar pruebas, como se describe en Crea instancias de Compute Engine de ULL.
Cuando usas la imagen requerida, Onload viene preinstalado y cargado en el arranque. Luego, puedes ejecutar procesos con Onload como se describe en los procedimientos de esta página.
Inicia y detén Onload
En esta sección, se describe cómo iniciar y detener Onload. Debes iniciar Onload para completar los procedimientos de las siguientes secciones.
Para iniciar Onload, ejecuta el siguiente comando:
sudo /opt/gcp_tp-scripts/load-onload-and-tune
Para detener Onload, ejecuta el siguiente comando:
sudo /opt/gcp_tp-scripts/unload-onload
Habilita el sondeo ocupado
Para ayudar a lograr una latencia ultrabaja y minimizar la fluctuación, habilita el sondeo ocupado.
Para habilitar el sondeo ocupado, haz lo siguiente:
Si aún no lo hiciste, conéctate a la instancia a través de SSH.
Puedes habilitar el sondeo ocupado para todas las colas o de forma más detallada. Elige la opción que corresponda a tu caso de uso:
Todas las colas:
sudo /opt/gcp_tp-scripts/busypoll-all-queues
Cola RX específica que usa una pila de Onload:
Si aún no lo hiciste, inicia una pila de Onload ejecutando el siguiente comando:
gcp_tp-onload /opt/neper/tcp_rr &
Para obtener el
stack-idde la pila que iniciaste, ejecuta el siguiente comando:onload_stackdump
Para obtener los números de índice de tus interfaces de red, ejecuta el siguiente comando:
cat /sys/class/net/NIC_NAME/ifindex
Reemplaza
NIC_NAMEpor el nombre de la interfaz de red en el SO invitado, comoeth1oeth2.Para habilitar el sondeo ocupado, ejecuta el siguiente comando:
sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID enable NIC_INDEX CPU_ID
Reemplaza lo siguiente:
STACK_ID: Es el ID de la pila que obtuviste anteriormente.NIC_INDEX: Es el número de índice de la interfaz de red para la que deseas habilitar el sondeo ocupado, por ejemplo,1o2.CPU_ID: Es el ID de la CPU para la que se habilitará el sondeo ocupado.- Te recomendamos que no uses la CPU
0ni ninguna CPU que esté en uso por una aplicación. Asegúrate de usar núcleos de CPU locales para el nodo NUMA de la interfaz de red que especificaste. Por ejemplo:
eth1usa el nodo NUMA0, que usa los núcleos de CPU0-29.eth2usa el nodo NUMA2. que usa los núcleos de CPU60-89.
- Te recomendamos que no uses la CPU
Puedes inhabilitar el sondeo ocupado con el siguiente comando:
sudo /opt/gcp_tp-scripts/busypoll-onload-stack STACK_ID disable NIC_INDEX CPU_ID
¿Qué sigue?
- Para sincronizar el reloj del sistema de tu instancia con el reloj de la NIC física de su servidor host, consulta Configura la hora exacta.