Trabalhar com Onload

Nesta página, descrevemos como usar o Onload para instâncias do Compute Engine de latência ultrabaixa (ULL, na sigla em inglês).

O Onload é uma pilha de rede de alto desempenho para aplicativos sensíveis à latência que exigem latência ultrabaixa, jitter mínimo e desempenho consistente. O Onload oferece uma implementação de TCP/IP que ignora o kernel do sistema operacional e é executada diretamente no espaço do usuário, permitindo que os aplicativos usem APIs de soquete BSD padrão.

O uso do Onload com a solução ULL inclui suporte para o seguinte:

  • Direcionamento de fluxo: com interfaces de rede ULL, é possível ignorar o hash de escalonamento lateral de recebimento (RSS) padrão direcionando fluxos de tráfego específicos diretamente para uma fila de recebimento (RX) designada. Para tráfego unicast e multicast de ULL, há suporte para o direcionamento de fluxo de três tuplas (protocolo, endereço IP de destino, porta de destino).

Tipo de instância e imagem do SO obrigatórios

Para usar o Onload, crie instâncias do Compute Engine ULL (U4P ou U4C) usando o projeto e a imagem fornecidos pelo Google para teste, conforme descrito em Criar instâncias do Compute Engine ULL.

Quando você usa a imagem necessária, o Onload vem pré-instalado e carregado na inicialização. Depois, execute processos com o Onload conforme descrito nos procedimentos desta página.

Iniciar e parar onload

Esta seção descreve como iniciar e parar o Onload. Você precisa iniciar o Onload para concluir os procedimentos nas seções a seguir.

Para iniciar o Onload, execute o seguinte comando:

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

Para interromper o Onload, execute o seguinte comando:

sudo /opt/gcp_tp-scripts/unload-onload

Ativar a pesquisa de ocupado

Para ajudar a alcançar latência ultrabaixa e minimizar o jitter, ative a pesquisa ocupada.

Para ativar a pesquisa de ocupado, faça o seguinte:

  1. Se ainda não tiver feito isso, conecte-se à instância usando SSH.

  2. É possível ativar a pesquisa de ocupado para todas as filas ou de forma mais granular. Escolha a opção que corresponde ao seu caso de uso:

    • Todas as filas:

      sudo /opt/gcp_tp-scripts/busypoll-all-queues
      
    • Fila RX específica que uma pilha Onload está usando:

      1. Se ainda não tiver feito isso, inicie uma pilha Onload executando o seguinte comando:

        gcp_tp-onload /opt/neper/tcp_rr &
        
      2. Para receber o stack-id da pilha que você iniciou, execute o seguinte comando:

        onload_stackdump
        
      3. Para receber os números de índice das suas interfaces de rede, execute o seguinte comando:

        cat /sys/class/net/NIC_NAME/ifindex
        

        Substitua NIC_NAME pelo nome da interface de rede no SO convidado, como eth1, eth2.

      4. Para ativar a pesquisa de ocupado, execute o seguinte comando:

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

        Substitua:

        • STACK_ID: o ID da pilha que você recebeu anteriormente
        • NIC_INDEX: o número de índice da interface de rede para que você quer ativar a pesquisa ocupada, por exemplo, 1 ou 2.
        • CPU_ID: o ID da CPU para ativar a pesquisa de ocupado.

          • Recomendamos não usar a CPU 0 ou qualquer CPU em uso por um aplicativo.
          • Use núcleos de CPU locais para o nó NUMA da interface de rede especificada. Exemplo:

            • eth1 usa o nó NUMA 0, que usa os núcleos de CPU 0-29.
            • eth2 usa o nó NUMA 2. que usa núcleos de CPU 60-89.

É possível desativar a pesquisa ocupada usando o seguinte comando:

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

A seguir

  • Para sincronizar o relógio do sistema da instância com o relógio da NIC física do servidor host, consulte Configurar a hora exata.