NVMe-oF sobre TCP vs RDMA: o impacto real no overhead de CPU em alta densidade

      Roberto Lemos 8 min de leitura
      NVMe-oF sobre TCP vs RDMA: o impacto real no overhead de CPU em alta densidade

      Análise técnica profunda sobre NVMe-oF: comparamos o custo de processamento (CPU overhead) entre transportes TCP e RDMA (RoCEv2). Entenda como o kernel bypass reduz a latência de cauda em bancos de dados críticos.

      Compartilhar:

      Você investiu pesado em arrays All-Flash NVMe de última geração. Os datasheets prometem milhões de IOPS e latências na casa dos microssegundos. No entanto, ao colocar a carga real do banco de dados em produção, o top ou o htop mostram algo perturbador: seus núcleos de CPU estão saturados. Não processando SQL, mas presos em %sys ou %si (software interrupts).

      O culpado provável não é o disco, nem o banco de dados. É o protocolo de transporte.

      A batalha entre NVMe sobre TCP (NVMe/TCP) e NVMe sobre RDMA (RoCEv2 ou iWARP) não é apenas uma discussão de rede. É uma questão de arquitetura de CPU e eficiência de interrupções. Para um DBA ou Arquiteto de Workloads, entender onde seus ciclos de processamento estão sendo queimados é a diferença entre um sistema responsivo e um que engasga sob carga.

      Resumo em 30 segundos

      • O Problema do TCP: O stack TCP/IP padrão exige múltiplas cópias de dados na memória e trocas de contexto (context switches) intensivas, consumindo até 30% da CPU do host apenas para mover dados de storage.
      • A Solução RDMA: O RDMA (Remote Direct Memory Access) permite que o storage escreva diretamente na memória da aplicação (Zero-Copy), ignorando o kernel e liberando a CPU para processar queries.
      • O Veredito: Para densidades extremas e latência sensível (OLTP pesado), o RDMA é obrigatório. Para flexibilidade e menor custo operacional em escalas moderadas, o NVMe/TCP com SmartNICs é o caminho.

      Comparação visual do fluxo de dados: O caminho tortuoso do TCP através do Kernel vs. a via expressa do RDMA direto para a memória. Figura: Comparação visual do fluxo de dados: O caminho tortuoso do TCP através do Kernel vs. a via expressa do RDMA direto para a memória.

      O custo oculto do TCP: Anatomia de um gargalo

      O protocolo TCP é a cola da internet, robusto e confiável. Mas ele não foi desenhado para a velocidade dos SSDs NVMe modernos. Quando transportamos comandos NVMe encapsulados em TCP, introduzimos uma sobrecarga significativa.

      Cada operação de I/O (leitura ou escrita) no modelo tradicional dispara uma cadeia de eventos custosa:

      1. Interrupção de Hardware: A placa de rede (NIC) avisa a CPU que um pacote chegou.

      2. Troca de Contexto: A CPU para o que está fazendo (executar sua query SQL) para atender o Kernel.

      3. Cópia de Buffer: O Kernel copia os dados do buffer da placa de rede para o buffer do Kernel e, em seguida, para o espaço do usuário (onde o banco de dados reside).

      4. Processamento de Protocolo: Cálculo de checksums, reordenação de pacotes e controle de fluxo.

      Em um cenário de 10.000 IOPS, isso é trivial. Em um cenário de 1.000.000 de IOPS, estamos falando de milhões de interrupções por segundo. Isso gera o que chamamos de "poluição de cache L3" e saturação de ciclos em modo kernel. O banco de dados compete pela CPU com o próprio tráfego de dados que ele solicitou.

      ⚠️ Perigo: Em testes de alta densidade, é comum ver um servidor de banco de dados atingir 100% de uso de CPU com apenas 50% de carga real de aplicação. Os outros 50% são desperdiçados gerenciando o stack TCP.

      RDMA e RoCEv2: O bypass cirúrgico

      O RDMA (Remote Direct Memory Access) resolve esse problema fundamentalmente alterando quem faz o trabalho. Em vez da CPU mover os dados, a Placa de Rede (RNIC) possui a inteligência para colocar os dados diretamente no endereço de memória final da aplicação.

      Isso é alcançado através de dois conceitos vitais:

      1. Kernel Bypass: A aplicação (banco de dados) fala diretamente com a placa de rede, ignorando o sistema operacional para o caminho de dados (data path). O Kernel só se envolve no estabelecimento da conexão (control path).

      2. Zero-Copy: Os dados não são copiados de buffer em buffer. Eles saem do fio da rede direto para a RAM alocada pelo banco de dados.

      O papel do RoCEv2

      Historicamente, o RDMA exigia InfiniBand, uma rede dedicada e cara. O RoCEv2 (RDMA over Converged Ethernet version 2) democratizou isso ao encapsular pacotes RDMA dentro de UDP/IP. Isso torna o tráfego roteável em switches Ethernet padrão, desde que suportem controle de fluxo (PFC/ECN) para evitar perda de pacotes, já que o RDMA odeia retransmissões.

      Gráfico de decomposição de uso de CPU: Note como o RDMA elimina quase totalmente a camada de processamento do Kernel (SoftIRQ). Figura: Gráfico de decomposição de uso de CPU: Note como o RDMA elimina quase totalmente a camada de processamento do Kernel (SoftIRQ).

      Comparativo Técnico: TCP vs RDMA

      Para arquitetar a solução correta, precisamos sair do teórico e ir para os números e características operacionais.

      Característica NVMe/TCP NVMe/RoCEv2 (RDMA)
      Uso de CPU (Host) Alto (proporcional aos IOPS/Bandwidth). Muito Baixo (Offload na NIC).
      Latência Média Baixa (adiciona ~10-20µs sobre local). Mínima (adiciona ~3-5µs sobre local).
      Latência de Cauda (p99) Variável (Jitter devido ao agendamento da CPU). Consistente e Determinística.
      Complexidade de Rede Baixa (Funciona em qualquer switch). Média/Alta (Exige DCB, PFC, ECN - Lossless Ethernet).
      Custo de Hardware Baixo (NICs padrão). Médio (Exige RNICs ou SmartNICs com suporte RDMA).
      Escalabilidade Excelente para muitas conexões. Limitada pela memória da NIC (Queue Pairs).

      O mito da latência média e a realidade do p99

      DBAs experientes sabem que a latência média é uma métrica de vaidade. O que mata a experiência do usuário e causa locks no banco de dados é a latência de cauda (p99 ou p99.9) — aqueles 1% das requisições que demoram muito.

      No NVMe/TCP, a latência de cauda sofre devido ao agendamento da CPU. Se o processador estiver ocupado com outra tarefa ou lidando com uma tempestade de interrupções, o pacote TCP espera. Isso cria "jitter".

      No RDMA, como a transferência é feita via hardware (ASIC da placa de rede), a latência é extremamente determinística. Um READ de 4KB levará quase sempre o mesmo tempo, independentemente da carga da CPU do servidor. Para bancos de dados transacionais (OLTP) de alta frequência, essa consistência é mais valiosa do que a largura de banda bruta.

      💡 Dica Pro: Se o seu workload é puramente sequencial (ex: Data Warehouse, Backups, Streaming de Vídeo), o NVMe/TCP é suficiente e mais simples de gerenciar. O overhead de CPU é menor em transferências de grandes blocos (Large Block I/O) do que em milhares de pequenos I/Os aleatórios.

      A ascensão das SmartNICs e DPUs

      O cenário mudou recentemente com a introdução de SmartNICs e DPUs (Data Processing Units). Fabricantes como NVIDIA (Mellanox), Intel e AMD (Pensando) oferecem placas que podem fazer "TCP Offload".

      Basicamente, essas placas processam o stack TCP/IP no silício da placa, entregando uma experiência próxima ao RDMA sem a complexidade de configurar uma rede Lossless (sem perdas) exigida pelo RoCEv2 puro. Se sua equipe de redes se recusa a configurar Priority Flow Control (PFC) nos switches, o NVMe/TCP com offload em SmartNIC é o meio-termo ideal.

      O papel da SmartNIC: Processando o stack TCP no hardware para aliviar a CPU principal. Figura: O papel da SmartNIC: Processando o stack TCP no hardware para aliviar a CPU principal.

      Veredito do Arquiteto

      A escolha entre TCP e RDMA para NVMe-oF não é binária, é contextual.

      1. Use NVMe/RoCEv2 (RDMA) se:

        • Você precisa extrair o máximo absoluto de IOPS do seu storage All-Flash.
        • Seu workload é sensível a latência (Bancos de dados OLTP, High-Frequency Trading).
        • Você tem controle sobre a infraestrutura de rede para garantir configurações de QoS e Flow Control (Lossless Ethernet).
      2. Use NVMe/TCP se:

        • Sua infraestrutura de rede é genérica ou você não controla os switches (ex: Nuvem Pública padrão, redes legadas).
        • O custo de implementação e complexidade operacional são fatores limitantes.
        • Você está usando SmartNICs modernas que mitigam o overhead de CPU.

      Para a maioria dos datacenters on-premise de alta performance hoje, o RoCEv2 continua sendo o rei da eficiência. Ele entrega o que prometemos ao negócio: o banco de dados rodando na velocidade do silício, não na velocidade da burocracia do Kernel.

      Referências & Leitura Complementar

      • NVM Express Base Specification 2.0: Detalhes oficiais sobre os transportes NVMe-oF.

      • SNIA (Storage Networking Industry Association): Whitepapers sobre performance de Ethernet Storage.

      • Mellanox/NVIDIA OFED Documentation: Guia prático de implementação de RoCEv2 e configurações de PFC/ECN.

      • RFC 5040: Especificação do protocolo RDMA sobre IP.


      Perguntas Frequentes (FAQ)

      O NVMe/TCP exige hardware de rede proprietário? Não. Uma das grandes vantagens do NVMe/TCP é funcionar na infraestrutura Ethernet padrão existente (switches e cabos comuns), embora placas com offload (SmartNICs) melhorem significativamente a performance ao retirar a carga da CPU.
      Qual a principal vantagem do RDMA sobre o TCP para bancos de dados? A redução drástica do uso de CPU no host. O RDMA permite que os dados vão da memória do storage direto para a memória da aplicação (Zero Copy), liberando a CPU para processar queries SQL e transações em vez de mover pacotes de rede e tratar interrupções.
      O que é RoCEv2 e como ele se relaciona com NVMe-oF? RoCEv2 (RDMA over Converged Ethernet version 2) é um protocolo que permite rodar RDMA sobre redes Ethernet IP roteáveis (Camada 3). Ele é atualmente o transporte mais comum e eficiente para implementações de NVMe-oF de alta performance em datacenters modernos.
      #NVMe-oF #RDMA vs TCP #RoCEv2 #Storage Latency #CPU Overhead #Kernel Bypass #High Density Storage
      Roberto Lemos
      Assinatura Técnica

      Roberto Lemos

      Arquiteto de Workloads

      "Projeto infraestrutura onde o perfil de I/O dita as regras. Sei que a latência do acesso aleatório de um banco difere da vazão sequencial de vídeos. Mapeio o hardware exato para cada aplicação."