Todos os produtos
Search
Central de documentação

Elastic Compute Service:Deploy high-performance bRPC applications with eRDMA

Última atualização: Aug 20, 2026

Implante o bRPC em instâncias ECS compatíveis com eRDMA para obter menor latência, maior throughput e uso reduzido de CPU.

Nota
  • O bRPC é um framework RPC de alto desempenho e uso geral escrito em C++. Ele fornece ferramentas que simplificam o desenvolvimento e a implantação de services. Os casos de uso comuns incluem pesquisa, armazenamento, machine learning e publicidade. O bRPC é adequado para microsserviços de alta concorrência e baixa latência, além de sistemas distribuídos em grande escala. Consulte as instruções de compilação do bRPC.

  • O eRDMA (elastic Remote Direct Memory Access) é um service de rede RDMA nativo da cloud que oferece baixa latência, alto throughput e alta elasticidade. Consulte Overview of eRDMA.

Etapa 1: Preparar o ambiente

Crie duas instâncias ECS compatíveis com eRDMA para atuar como servidor e cliente. Especifique os seguintes itens de configuração:

  • Tipo de instância: Escolha um tipo de instância compatível com eRDMA. Consulte Limits. Este tópico utiliza ecs.g8a.8xlarge.

  • Imagem: Escolha uma imagem compatível com eRDMA. Consulte Limits. Este tópico utiliza Alibaba Cloud Linux 3.2104 LTS 64 bits.

  • Instale o driver eRDMA: Selecione Install eRDMA driver. O driver é instalado automaticamente durante a inicialização da instância.

    Nota

    Após a inicialização da instância, aguarde de 3 a 5 minutos para que a instalação do driver seja concluída. Consulte Enable eRDMA on enterprise-level instances.

  • Rede:

    • Ative o acesso à Internet para ambas as instâncias.

    • A interconexão de services é ativada por padrão dentro da mesma VPC.

    • Para a ENI, selecione Elastic RDMA interface ao lado da NIC.

Para outros parâmetros, consulte Customize and purchase an instance.

Etapa 2: Implantar e compilar o bRPC

Implante e compile o bRPC em ambas as instâncias. As etapas a seguir usam o Alibaba Cloud Linux 3 como exemplo. Para outros sistemas operacionais, consulte Compilar o bRPC.

  1. Faça login em ambas as instâncias ECS. Consulte Use Workbench to log on to a Linux instance.

  2. Modifique o modo de estabelecimento de conexão para eRDMA e bRPC para garantir compatibilidade.

    Nota

    Por padrão, o eRDMA usa RDMA_CM para estabelecer conexões, enquanto o bRPC usa o modo Out-of-Band (OOB). Modifique o modo de conexão de ambos para garantir a compatibilidade.

    sudo sh -c "echo 'options erdma compat_mode=Y' >> /etc/modprobe.d/erdma.conf"
    sudo dracut --force
    sudo rmmod erdma
    sudo modprobe erdma compat_mode=Y
  3. Remova os limites de bloqueio de memória. Aplicações eRDMA geralmente exigem grandes quantidades de memória.

    1. Edite o arquivo limits.conf.

      sudo vi /etc/security/limits.conf
    2. Adicione as seguintes linhas ao final do arquivo e salve.

      * soft memlock unlimited
      * hard memlock unlimited
  4. Implante a aplicação bRPC.

    sudo yum install git gcc-c++ make openssl-devel gflags-devel protobuf-devel protobuf-compiler leveldb-devel -y
    git clone https://github.com/apache/brpc.git
  5. Aplique o seguinte patch em ambas as instâncias para melhorar o desempenho do bRPC com eRDMA.

    1. No diretório brpc, crie um arquivo chamado erdma-multi-sge.patch:

      cd ~/brpc
      sudo vi erdma-multi-sge.patch
    2. Adicione o seguinte conteúdo e salve.

      diff --git a/src/brpc/rdma/rdma_helper.cpp b/src/brpc/rdma/rdma_helper.cpp
      index cf1cce95..d2592cbb 100644
      --- a/src/brpc/rdma/rdma_helper.cpp
      +++ b/src/brpc/rdma/rdma_helper.cpp
      @@ -619,7 +619,7 @@ void DeregisterMemoryForRdma(void* buf) {
       }
      
       int GetRdmaMaxSge() {
      -    return g_max_sge;
      +    return 4;
       }
      
       int GetRdmaCompVector() {
      --
      2.39.3
    3. Aplique o patch ao código-fonte do bRPC.

      patch -p1 < erdma-multi-sge.patch
    4. Compile o código-fonte do bRPC.

      sh config_brpc.sh --with-rdma --headers="/usr/include" --libs="/usr/lib64 /usr/bin"
      make -j
      cd example/rdma_performance; make -j

Etapa 3: Testar o desempenho

Teste o desempenho do bRPC com e sem eRDMA e compare os resultados.

  1. Teste o desempenho do bRPC nos dois cenários a seguir.

    Com eRDMA ativado

    1. No servidor, inicie o server com eRDMA ativado.

      ./server --rdma_gid_index=1 --rdma_prepared_qp_cnt=0 --use_rdma=true
    2. No cliente, conecte-se ao servidor com eRDMA ativado.

      ./client --servers=<server private IP address>:8002 --rpc_timeout_ms=-1 --attachment_size=1024 --rdma_gid_index=1 --rdma_prepared_qp_cnt=0 --use_rdma=true --queue_depth=16

      Parâmetros:

      • Substitua <server private IP address> pelo endereço IP privado do servidor.

      • --attachment_size: tamanho dos dados anexados a cada chamada bRPC. Valores maiores aproveitam melhor o eRDMA, mas aumentam a complexidade do gerenciamento de memória. Defina conforme seus requisitos de teste.

      • --queue_depth: número de solicitações simultâneas que a fila pode manter. Uma profundidade maior ajuda a lidar com picos de tráfego, mas consome mais memória. Defina conforme seus requisitos de teste.

    Sem eRDMA ativado

    1. No servidor, inicie o server com TCP.

      ./server --rdma_gid_index=1 --rdma_prepared_qp_cnt=0 --use_rdma=false
    2. No cliente, conecte-se ao servidor com TCP.

      ./client --servers=<server private IP address>:8002 --rpc_timeout_ms=-1 --attachment_size=1024 --rdma_gid_index=1 --rdma_prepared_qp_cnt=0 --use_rdma=false --queue_depth=16

      Parâmetros:

      • Substitua <server private IP address> pelo endereço IP privado do servidor.

      • --attachment_size: tamanho dos dados anexados a cada chamada bRPC. Valores maiores aproveitam melhor o eRDMA, mas aumentam a complexidade do gerenciamento de memória. Defina conforme seus requisitos de teste.

      • --queue_depth: número de solicitações simultâneas que a fila pode manter. Uma profundidade maior ajuda a lidar com picos de tráfego, mas consome mais memória. Defina conforme seus requisitos de teste.

  2. Compare os resultados de ambos os cenários. Verifique o campo Avg-Latency para latência e o campo QPS para throughput, a fim de avaliar os ganhos de desempenho do eRDMA.