Como usar o driver IRDMA Cloud RDMA

O Cloud RDMA permite recursos de mensagens confiáveis e de baixa latência usando o driver IRDMA RDMA. Esse driver oferece suporte ao acesso direto à memória remota (RDMA, na sigla em inglês) entre instâncias do Compute Engine. A RDMA transfere dados entre máquinas remotas e memória local pela interface de rede sem usar a CPU do host nem buffers de host intermediários.

As instâncias compatíveis com o Cloud RDMA exigem pelo menos duas interfaces de rede virtual (vNICs):

  • Uma vNIC para comunicação do Cloud RDMA que usa o driver de rede IDPF e o driver IRDMA RDMA. Essa vNIC não pode se conectar à Internet. Uma instância pode ter apenas uma vNIC que usa o Cloud RDMA.
  • Uma vNIC para tráfego de rede normal. Essa vNIC está totalmente conectada à Google Cloud rede e pode se conectar à Internet. Essa vNIC usa o driver de rede gVNIC. É possível adicionar até oito interfaces de rede gVNIC extras, totalizando 10 vNICs por instância.

O driver IRDMA é compatível com instâncias H4D e instâncias Z4M.

Ao configurar uma vNIC que usa o driver IRDMA, é necessário especificar uma rede VPC criada usando o perfil de rede Falcon RDMA.

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. Com isso, você confirma sua identidade para acesso a Google Cloud serviços e APIs do. Para executar código ou amostras de um ambiente de desenvolvimento local, faça a autenticação no Compute Engine com uma destas opções:

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o Google Cloud console para acessar Google Cloud serviços e APIs, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI. Após a instalação, inicialize a Google Cloud CLI executando o seguinte comando:

      gcloud init

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

  • Defina uma região e uma zona padrão.
  • REST

    Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI.

      Ao usar um provedor de identidade (IdP) externo, primeiro faça login na CLI gcloud com sua identidade federada.

    Saiba mais em Autenticar para usar REST na documentação de autenticação do Google Cloud .

Suporte ao sistema operacional

O Google recomenda o uso de imagens de computação avançada ou da imagem de VM de HPC, que vem com drivers do Cloud RDMA pré-instalados.

O driver IRDMA RDMA é compatível com as seguintes imagens do SO públicas que são fornecidas para Google Cloud:

  • Container-Optimized OS 117 LTS ou mais recente
  • Rocky Linux 8 otimizado para Google Cloud e versões mais recentes otimizadas para Google Cloud

Visão geral do uso do Cloud RDMA com instâncias do Compute Engine

Para criar uma instância de computação que usa o Cloud RDMA, é necessário ter pelo menos uma rede VPC normal e uma rede VPC do Falcon. A rede VPC do Falcon usa o perfil de rede Falcon RDMA para ativar o tráfego do Cloud RDMA entre instâncias H4D. Essa rede fica separada de a rede VPC normal que direciona tráfego não RDMA para outros Google Cloud serviços do ou para a internet.

As tarefas a serem concluídas para criar uma instância de computação que usa o Cloud RDMA são as seguintes:

  1. Escolha uma imagem do SO pública compatível com o Cloud RDMA ou crie uma imagem do SO personalizada marcada para usar o IRDMA.
  2. Identifique ou crie pelo menos duas redes VPC:

    • Uma rede VPC normal para o tráfego que passa pela interface de rede gVNIC
    • Uma rede VPC do Falcon para o tráfego do Cloud RDMA
  3. Crie uma instância de computação usando a imagem do SO pública ou uma imagem do SO personalizada. Durante a criação da instância, configure pelo menos duas interfaces de rede: uma que use o driver de rede gVNIC e outra que utilize o driver IRDMA RDMA.

  4. Verifique se o Cloud RDMA está ativado.

Adicionar o driver IRDMA a uma imagem do SO

Para usar uma imagem do SO que não tem o driver IRDMA instalado por padrão, siga estas etapas:

  1. Crie uma instância de computação que use a imagem do SO que você quer usar com o Cloud RDMA.

  2. Conecte-se à instância de computação criada.

  3. Se você não estiver usando uma imagem do SO otimizada para Google Cloud, adicione o repositório CIQ usando uma das seguintes opções:

    • Recomendado: instale o pacote RPM do CIQ diretamente para configurar o repositório CIQ:

      sudo dnf install -y https://depot.ciq.com/public/files/gce-accelerator/irdma-kernel-modules-el8-x86_64/irdma-repos.rpm
      
    • Como alternativa, atualize os repositórios YUM diretamente:

      sudo tee /etc/yum.repos.d/irdma-kernel-modules.repo > /dev/null << 'EOF'
      [irdma-kernel-modules]
      name = irdma kernel modules for EL $releasever ($basearch)
      baseurl = https://depot.ciq.com/public/files/gce-accelerator/irdma-kernel-modules-el$releasever-$basearch
      metadata_expire = 5m
      priority = -1
      repo_gpgcheck = false
      gpgcheck = false
      enabled = true
      skip_if_unavailable = true
      
      [irdma-kernel-modules-source]
      name = irdma kernel modules for EL $releasever (source)
      baseurl = https://depot.ciq.com/public/files/gce-accelerator/irdma-kernel-modules-el$releasever-source
      metadata_expire = 5m
      priority = -1
      repo_gpgcheck = false
      gpgcheck = false
      enabled = false
      skip_if_unavailable = true
      
      [irdma-kernel-modules-testing]
      name = irdma kernel modules for EL $releasever ($basearch) - testing
      baseurl = https://depot.ciq.com/public/files/gce-accelerator/irdma-kernel-modules-testing-el$releasever-$basearch
      metadata_expire = 5m
      priority = -1
      repo_gpgcheck = false
      gpgcheck = false
      enabled = false
      skip_if_unavailable = true
      
      [irdma-kernel-modules-testing-source]
      name = irdma kernel modules for EL $releasever (source) - testing
      baseurl = https://depot.ciq.com/public/files/gce-accelerator/irdma-kernel-modules-testing-el$releasever-source
      metadata_expire = 5m
      priority = -1
      repo_gpgcheck = false
      gpgcheck = false
      enabled = false
      skip_if_unavailable = true
      EOF
      
  4. Instale o pacote de driver kmod-idpf-irdma, que inclui os drivers IDPF e IRDMA:

    sudo dnf install kmod-idpf-irdma
    

    O pacote CIQ exige versões específicas do kernel, que podem afetar a instalação das seguintes maneiras:

    • Se a versão do kernel for mais antiga que a necessária, a instalação do pacote vai fazer upgrade automático do kernel e de outros pacotes do sistema como dependência.
    • Se a versão do kernel for mais recente que a versão compatível com o repositório CIQ, a instalação poderá falhar. Nesse caso, use uma imagem do SO otimizada para Google Cloud, que usa uma versão do kernel compatível.
  5. Verifique se o pacote kmod-idpf-irdma está instalado:

    sudo dnf list --installed
    

    A saída inclui uma entrada semelhante a esta:

    kmod-idpf-irdma.ARCHITECTURE VERSION@REPO_NAME
  6. Instale os pacotes de espaço do usuário:

    sudo dnf install -y \
        libibverbs libibverbs-devel libibverbs-utils \
        librdmacm librdmacm-devel librdmacm-utils \
        infiniband-diags
    

    Os pacotes librdmacm-utils e libibverbs-utils instalam utilitários complementares para verificar a funcionalidade RDMA, como rping e ibv_devinfo.

  7. Recomendado: depois de atualizar o sistema operacional na instância de computação para usar o IRDMA, crie uma imagem personalizada com base nessa imagem do SO. Em seguida, use a imagem personalizada para criar outras instâncias de computação que usem o IRDMA nesse SO.

    Siga as instruções em Criar a imagem para criar uma imagem personalizada usando o disco de inicialização da instância criada em a primeira etapa.

Criar uma imagem do SO personalizada com base em uma imagem do SO pública compatível com o Cloud RDMA

É possível criar a imagem do SO usando a Google Cloud CLI ou uma arquitetura REST. Para informações detalhadas e práticas recomendadas para criar imagens do SO personalizadas, consulte Criar imagens do SO personalizadas.

gcloud

  1. Selecione uma imagem do SO ou família de imagens compatível com o driver e a interface IRDMA. Para mais informações, consulte Detalhes do sistema operacional e selecione a guia Interfaces.

  2. Usando a imagem do SO ou a família de imagens selecionada na etapa anterior, crie uma imagem do SO personalizada. Para criar a imagem do SO personalizada, use o gcloud compute images create comando. Por exemplo, o comando a seguir cria uma imagem do SO personalizada compatível com o driver IRDMA, baseada em uma imagem específica do SO.

    gcloud compute images create IMAGE_NAME \
        --source-image=SOURCE_IMAGE \
        --source-image-project=SOURCE_IMAGE_PROJECT
    

    Substitua:

    • IMAGE_NAME: o nome da imagem que você quer criar.
    • SOURCE_IMAGE: uma imagem do SO específica compatível com o driver IRDMA, por exemplo: hpc-rocky-linux-8-v20250721.

      Se você quiser usar a imagem do SO mais recente em uma família de imagens, substitua a flag --source-image pela flag --source-image-family e defina o valor dela como uma família de imagens compatível com o driver IRDMA. Por exemplo: --source-image-family=hpc-rocky-linux-8.

    • SOURCE_IMAGE_PROJECT: o nome do projeto que contém a imagem do SO de origem ou a família de imagens

    Para mais informações sobre quando usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

REST

  1. Selecione uma imagem do SO ou família de imagens compatível com a interface de rede IRDMA. Para mais informações, consulte Detalhes do sistema operacional.

  2. Usando a imagem do SO ou a família de imagens selecionada na etapa anterior, crie uma imagem do SO usando o images.insert método.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/images
    {
      "name":"IMAGE_NAME",
      "sourceImage":"SOURCE_IMAGE_URI"
    }
    

    Substitua:

    • PROJECT_ID: ID do projeto em que a nova imagem será criada.
    • IMAGE_NAME: um nome para a imagem personalizada
    • SOURCE_IMAGE_URI: o URI da imagem do SO ou família de imagens específica que você quer usar

      Exemplo:

      • Imagem do SO específica: "sourceImage": "projects/rocky-linux-cloud/global/images/hpc-rocky-linux-8-v20250721"
      • Família de imagens: "sourceImage": "projects/rocky-linux-cloud/global/images/family/hpc-rocky-linux-8"

      Quando você especifica uma família de imagens, o Compute Engine cria uma VM a partir da imagem do SO mais recente e não obsoleta nessa família. Para mais informações sobre quando usar famílias de imagens, consulte Práticas recomendadas para famílias de imagens.

Criar uma VM com suporte ao driver IRDMA

É possível criar uma VM usando uma das imagens do SO públicas compatíveis ou uma imagem do SO personalizada que você criou seguindo as etapas em Criar uma imagem do SO personalizada compatível com IRDMA.

Para usar o Cloud RDMA com sua instância, é necessário configurar várias interfaces de rede (NICs) para a instância. Uma NIC precisa usar o driver gVNIC (especifique nic-type=GVNIC) e outra NIC precisa usar o driver IRDMA (especifique nic-type=IRDMA).

Criar uma VM usando uma imagem do SO pública

Para criar VMs usando imagens de computação avançada, a imagem de VM de HPC ou uma imagem do SO pública compatível com o Cloud RDMA, siga as instruções nas páginas a seguir:

Criar uma VM usando uma imagem do SO personalizada

Se você criou uma imagem do SO personalizada compatível com o Cloud RDMA, então é possível usar essa imagem do SO personalizada para criar uma VM usando o Google Cloud console, a Google Cloud CLI ou REST.

Para instruções sobre como criar uma instância usando uma imagem personalizada, consulte Criar uma instância com base em uma imagem personalizada.

Verificar se o Cloud RDMA está ativado

Depois que a VM for implantada, execute o teste de largura de banda de performance a seguir para garantir que você esteja executando em uma instância de VM compatível com o Cloud RDMA.

ib_send_bw -aF & # start the server
ib_send_bw -aF $(hostname) # start the client (can be done on the same machine)

A largura de banda de conexão única informada BW average [MB/s] precisa atingir pelo menos 11.000 MBps para linhas maiores que 4.096 B. Valores menores são esperados para tamanhos de mensagens menores.

A seguir