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:

  1. Si aún no lo hiciste, conéctate a la instancia a través de SSH.

  2. 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:

      1. Si aún no lo hiciste, inicia una pila de Onload ejecutando el siguiente comando:

        gcp_tp-onload /opt/neper/tcp_rr &
        
      2. Para obtener el stack-id de la pila que iniciaste, ejecuta el siguiente comando:

        onload_stackdump
        
      3. 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_NAME por el nombre de la interfaz de red en el SO invitado, como eth1 o eth2.

      4. 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, 1 o 2.
        • CPU_ID: Es el ID de la CPU para la que se habilitará el sondeo ocupado.

          • Te recomendamos que no uses la CPU 0 ni 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:

            • eth1 usa el nodo NUMA 0, que usa los núcleos de CPU 0-29.
            • eth2 usa el nodo NUMA 2. que usa los núcleos de CPU 60-89.

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.