Tous les produits
Search
Centre de documentation

Elastic Compute Service:Déployer des applications bRPC haute performance avec eRDMA

Dernière mise à jour :Aug 20, 2026

Déployez bRPC sur des instances ECS compatibles avec eRDMA pour réduire la latence, augmenter le débit et diminuer l'utilisation du CPU.

Remarque
  • bRPC est un framework RPC généraliste haute performance écrit en C++. Il fournit des outils qui simplifient le développement et le déploiement de services. Les cas d'usage courants incluent la recherche, le stockage, l'apprentissage automatique et la publicité. bRPC convient aux microservices à forte concurrence et faible latence, ainsi qu'aux systèmes distribués à grande échelle. Consultez les instructions de compilation de bRPC.

  • eRDMA (elastic Remote Direct Memory Access) est un service de mise en réseau RDMA natif du cloud qui offre une faible latence, un débit élevé et une grande élasticité. Consultez la Présentation d'eRDMA.

Étape 1 : Préparer l'environnement

Créez deux instances ECS compatibles avec eRDMA pour servir respectivement de serveur et de client. Spécifiez les éléments de configuration suivants :

  • Type d'instance : choisissez un type d'instance compatible avec eRDMA. Consultez les Limites. Cette rubrique utilise le type ecs.g8a.8xlarge.

  • Image : choisissez une image compatible avec eRDMA. Consultez les Limites. Cette rubrique utilise Alibaba Cloud Linux 3.2104 LTS 64 bits.

  • Installation du pilote eRDMA : Sélectionnez Installer le pilote eRDMAInstall eRDMA driver. Le pilote s'installe automatiquement au démarrage de l'instance.

    Remarque

    Après le démarrage de l'instance, attendez 3 à 5 minutes que l'installation du pilote se termine. Consultez la section Activer eRDMA sur les instances de niveau entreprise.

  • Mise en réseau :

    • Activez l'accès à Internet pour les deux instances.

    • L'interconnexion des services est activée par défaut au sein du même VPC.

    • Pour l'ENI, sélectionnez Interface Elastic RDMAElastic RDMA interface à côté de la carte réseau.

Pour les autres paramètres, consultez la rubrique Personnaliser et acheter une instance.

Étape 2 : Déployer et compiler bRPC

Déployez et compilez bRPC sur les deux instances. Les étapes suivantes utilisent Alibaba Cloud Linux 3 comme exemple. Pour les autres systèmes d'exploitation, consultez la page Compiler bRPC.

  1. Connectez-vous aux deux instances ECS. Consultez la section Utiliser Workbench pour se connecter à une instance Linux.

  2. Modifiez le mode d'établissement de connexion pour eRDMA et bRPC afin d'assurer la compatibilité.

    Remarque

    Par défaut, eRDMA utilise RDMA_CM pour établir les connexions, tandis que bRPC utilise le mode Out-of-Band (OOB). Modifiez le mode de connexion des deux composants pour garantir leur compatibilité.

    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. Supprimez les limites de verrouillage de la mémoire. Les applications eRDMA nécessitent généralement de grandes quantités de mémoire.

    1. Modifiez le fichier limits.conf.

      sudo vi /etc/security/limits.conf
    2. Ajoutez les lignes suivantes à la fin du fichier et enregistrez les modifications.

      * soft memlock unlimited
      * hard memlock unlimited
  4. Déployez l'application 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. Appliquez le correctif suivant sur les deux instances pour améliorer les performances de bRPC avec eRDMA.

    1. Dans le répertoire brpc, créez un fichier nommé erdma-multi-sge.patch :

      cd ~/brpc
      sudo vi erdma-multi-sge.patch
    2. Ajoutez le contenu suivant et enregistrez le fichier.

      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. Appliquez le correctif au code source de bRPC.

      patch -p1 < erdma-multi-sge.patch
    4. Compilez le code source de bRPC.

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

Étape 3 : Tester les performances

Testez les performances de bRPC avec et sans eRDMA, puis comparez les résultats.

  1. Testez les performances de bRPC dans les deux scénarios suivants.

    Avec eRDMA activé

    1. Sur le serveur, démarrez le serveur avec eRDMA activé.

      ./server --rdma_gid_index=1 --rdma_prepared_qp_cnt=0 --use_rdma=true
    2. Sur le client, connectez-vous au serveur avec eRDMA activé.

      ./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

      Paramètres :

      • Remplacez <server private IP address> par l'adresse IP privée du serveur.

      • --attachment_size : taille des données jointes à chaque appel bRPC. Des valeurs plus élevées permettent de mieux tirer parti d'eRDMA, mais augmentent la complexité de la gestion de la mémoire. Définissez cette valeur en fonction de vos besoins de test.

      • --queue_depth : nombre de requêtes simultanées que la file d'attente peut contenir. Une profondeur plus élevée aide à gérer les pics de trafic, mais consomme davantage de mémoire. Définissez cette valeur en fonction de vos besoins de test.

    Sans eRDMA activé

    1. Sur le serveur, démarrez le serveur avec TCP.

      ./server --rdma_gid_index=1 --rdma_prepared_qp_cnt=0 --use_rdma=false
    2. Sur le client, connectez-vous au serveur avec 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

      Paramètres :

      • Remplacez <server private IP address> par l'adresse IP privée du serveur.

      • --attachment_size : taille des données jointes à chaque appel bRPC. Des valeurs plus élevées permettent de mieux tirer parti d'eRDMA, mais augmentent la complexité de la gestion de la mémoire. Définissez cette valeur en fonction de vos besoins de test.

      • --queue_depth : nombre de requêtes simultanées que la file d'attente peut contenir. Une profondeur plus élevée aide à gérer les pics de trafic, mais consomme davantage de mémoire. Définissez cette valeur en fonction de vos besoins de test.

  2. Comparez les résultats des deux scénarios. Vérifiez le champ Avg-Latency pour la latence et le champ QPS pour le débit afin d'évaluer les gains de performance apportés par eRDMA.