Todos os produtos
Search
Central de documentação

Elastic Compute Service:Implantação de SMC-R e Redis com eRDMA

Última atualização: Jul 03, 2026

O Elastic RDMA (eRDMA) oferece latência ultrabaixa para processar solicitações com mais rapidez. Este tópico descreve como implantar comunicações de memória compartilhada (SMC) e Redis com eRDMA e como avaliar o desempenho deles.

Informações básicas

  • As comunicações de memória compartilhada (SMC) são uma pilha de protocolos de espaço do kernel de alto desempenho que usa memória compartilhada e é compatível com a camada de socket. O SMC possui duas versões, dependendo da tecnologia de memória compartilhada utilizada: SMC over DMA (SMC-D), baseado em memória compartilhada interna (ISM), e SMC over RDMA (SMC-R), baseado em acesso remoto direto à memória (RDMA). Para obter mais informações, consulte Aplicabilidade do SMC.

  • O Alibaba Cloud Linux 3 usa o Elastic RDMA (eRDMA) para fornecer aceleração SMC-R. Para usar o SMC-R no Alibaba Cloud, crie instâncias ECS compatíveis com eRDMA.

Pré-requisitos

Crie duas instâncias ECS compatíveis com eRDMA. Durante a criação da instância, selecione a opção para instalar automaticamente o driver eRDMA e ative a interface eRDMA na ENI primária. Uma instância ECS servirá como servidor e a outra como cliente. Para obter mais informações, consulte Criar uma instância pelo assistente.

Este tópico usa os seguintes parâmetros como exemplo:

  • Tipo de instância: ecs.g8i.8xlarge

  • Imagem: Alibaba Cloud Linux 3.2104 LTS 64 bits

  • Rede: ambas as instâncias estão no mesmo grupo de segurança e podem se comunicar pela rede interna por padrão.

  • Endereços IP privados das ENIs primárias: 192.168.0.25 (servidor) e 192.168.0.24 (cliente). Substitua os endereços IP de exemplo pelos seus próprios.

    Nota
    • Este tópico usa um exemplo em que a interface eRDMA está ativada na ENI primária de uma instância. Nesse caso, 192.168.0.25 é o endereço IP privado da ENI primária na instância do servidor.

    • Se você ativar a interface eRDMA em uma interface de rede elástica secundária para o teste, substitua esse endereço IP pelo endereço IP privado dessa ENI secundária. Para obter mais informações, consulte Etapa 3: Vincular um ERI a uma instância ECS.

Exemplo de configuração de parâmetros específicos durante a criação de instâncias ECS

Observe os seguintes parâmetros ao criar as instâncias. Para outros parâmetros, consulte Iniciar instâncias ECS personalizadas.

  • Instances & Images: selecione um tipo de instância compatível com eRDMA e instale o driver eRDMA.

    • Instance: consulte Limitações.

    • Images: selecione Public Image e depois selecione Install eRDMA Driver. O driver eRDMA é instalado automaticamente quando a instância é iniciada.

      image

  • ENIs: à direita de Primary ENI, ative o recurso ERI para vincular um ERI à instância ECS.

    Nota

    Ao criar uma instância de nível empresarial, ative o recurso ERI apenas para a ENI primária. Se precisar configurar o eRDMA para uma ENI secundária, ative o recurso ERI para a ENI secundária no console ou por meio de uma chamada de API. Para obter mais informações, consulte Interface de rede Elastic RDMA (ERI).

Etapa 1: Implantar o SMC

  1. Conecte-se remotamente às instâncias ECS do servidor e do cliente.

    Para obter mais informações, consulte Conectar-se a uma instância Linux pelo Workbench.

  2. Em ambas as instâncias ECS, execute o seguinte comando para implantar o módulo SMC-R:

    modprobe smc && modinfo smc
  3. Em ambas as instâncias, execute o seguinte comando para desativar o IPv6, permitindo que conexões eRDMA sejam estabelecidas pela interface eRDMA.

    Importante
    • Os dispositivos eRDMA do Alibaba Cloud e o SMC atualmente não suportam endereços IPv6. Se sua aplicação usar um endereço IPv6, o SMC reverterá para TCP. Para obter mais informações, consulte SMC reverte para TCP com endereços IPv6.

    • A partir do ANCK 5.10.134-17.3, o SMC suporta endereços IPv4-mapped IPv6.

    sysctl net.ipv6.conf.all.disable_ipv6=1
  4. Em ambas as instâncias, execute o seguinte comando para ativar o SMC para eRDMA, priorizando o tráfego pelo eRDMA.

    Os sockets TCP recém-criados são convertidos em sockets SMC. Os sockets TCP existentes não são afetados.

    sysctl net.smc.tcp2smc=1
  5. Em ambas as instâncias, execute o seguinte comando para instalar o smc-tools, o kit de ferramentas de monitoramento e diagnóstico do SMC.

    O smc-tools é um kit de ferramentas desenvolvido pela IBM para monitoramento e diagnóstico do SMC-R. Ele oferece ferramentas abrangentes de diagnóstico e rastreamento para o SMC-R, incluindo:

    • smcr: fornece estatísticas sobre recursos do SMC-R.

    • smcss: fornece informações sobre sockets SMC.

    yum install -y smc-tools

    Após a conclusão da instalação, execute o comando smcss -a para visualizar o caminho atual do tráfego.

    [root@iZxxx]# smcss -a
    State          UID   Inode  Local Address            Peer Address              Intf Mode
    ACTIVE      00000 4257589 192.168.8.123:45058      192.168.8.126:20003       0000 SMCR
    ACTIVE      00000 4264206 192.168.8.123:20004      192.168.8.130:54626       0000 SMCR
    ACTIVE      00000 4264207 192.168.8.123:20004      192.168.8.136:54900       0000 SMCR
    ACTIVE      00000 4308684 192.168.8.123:20004      192.168.8.134:38578       0000 SMCR
    ACTIVE      00000 4308694 192.168.8.123:20004      192.168.8.126:60554       0000 SMCR
    ACTIVE      00000 4308692 192.168.8.123:20004      192.168.8.126:60568       0000 SMCR
    ACTIVE      00000 4261731 192.168.8.123:49490      192.168.8.122:20004       0000 SMCR
    ACTIVE      00000 4257634 192.168.8.123:49500      192.168.8.122:20004       0000 SMCR
    ACTIVE      00000 4257638 192.168.8.123:42866      192.168.8.129:20003       0000 SMCR
    ACTIVE      00000 4264236 192.168.8.123:53768      192.168.8.135:20003       0000 SMCR
    ACTIVE      00000 4272479 192.168.8.123:34978      192.168.8.128:20003       0000 SMCR
    ACTIVE      00000 4277256 192.168.8.123:42840      192.168.8.127:20003       0000 SMCR
    LISTEN      00000 4253132 0.0.0.0:38567

Etapa 2: Implantar o Redis

Após implantar o SMC nas instâncias ECS, implante também o Redis.

  1. Conecte-se remotamente às instâncias ECS do servidor e do cliente.

    Para obter mais informações, consulte Conectar-se a uma instância Linux pelo Workbench.

  2. Execute o seguinte comando para instalar o Redis em ambas as instâncias:

    sudo yum install -y redis
  3. Na instância do servidor, execute o seguinte comando para iniciar o servidor Redis:

    redis-server --bind 192.168.0.25 --port 6379 --protected-mode no --save
    Nota

    No comando, 192.168.0.25 é o endereço IP privado da ENI primária do servidor, e 6379 é a porta de escuta. Substitua esses valores pelos seus próprios.

    [root@xxx Z ~]# redis-server --bind 192.168.0.25 --port 6379 --protected-mode no --save
    69313:C 23 Apr 2025 15:14:05.302 # o000o000o000o Redis is starting o000o000o000o
    69313:C 23 Apr 2025 15:14:05.302 # Redis version=6.2.17, bits=64, commit=00000000, modified=0, pid=69313, just started
    69313:C 23 Apr 2025 15:14:05.302 # Configuration loaded
    69313:M 23 Apr 2025 15:14:05.302 * monotonic clock: POSIX clock_gettime
                    Redis 6.2.17 (00000000/0) 64 bit
      Running in standalone mode
      Port: 6379
      PID: 69313
                    https://redis.io
    69313:M 23 Apr 2025 15:14:05.303 # Server initialized
    69313:M 23 Apr 2025 15:14:05.303 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
    69313:M 23 Apr 2025 15:14:05.303 * Ready to accept connections
  4. No cliente Redis, conecte-se ao servidor e execute um teste.

    • Execute o seguinte comando para conectar-se ao servidor Redis:

      redis-cli -h 192.168.0.25 -p 6379
    • Execute o seguinte comando para iniciar um teste de estresse com o redis-benchmark.

      O seguinte comando simula 100 clientes enviando 1.000.000 de solicitações SET ao servidor:

      redis-benchmark -h 192.168.0.25 -p 6379 -n 1000000 -t set -c 100

Para um teste de estresse com carga mista, execute vários processos após ativar o SMC-R. Primeiro, implante um segundo cliente Redis seguindo as etapas acima. Depois, inicie os testes de estresse em ambos os clientes e monitore as operações por segundo (OPS) no servidor Redis.

  • Exemplo de comando para iniciar oito processos de teste de estresse SET em um cliente Redis:

    redis-benchmark -h 192.168.0.25 -p 6379 -n 100000000 -t set --threads 8 -c 100
  • Exemplo de comando para iniciar oito processos de teste de estresse GET em um cliente Redis:

    redis-benchmark -h 192.168.0.25 -p 6379 -n 1000000 -t get --threads 8 -c 100
  • Exemplo de comando para verificar as OPS no servidor Redis:

    redis-cli -h 192.168.0.25 -p 6379 info | grep instantaneous_ops_per_sec
    Nota

    Execute o comando em uma nova janela de conexão remota.