RDMA (Remote Direct Memory Access) é uma tecnologia de comunicação de rede derivada do DMA (Direct Memory Access). Ela permite que os aplicativos do usuário ignorem o kernel do sistema operacional (CPU) e interajam diretamente com as placas de interface de rede (NICs) para a transmissão de dados, fornecendo largura de banda ultra-alta e latência ultrabaixa. Inicialmente desenvolvido para computação de alto desempenho (HPC), o RDMA passou a ser amplamente adotado em data centers。
O princípio central do RDMA consiste em aproveitar o hardware especializado em adaptadores de rede (por exemplo, mecanismos RDMA em NICs) para contornar o kernel do sistema operacional e realizar transferências diretas de memória abaixo da camada de transporte da rede. Esse mecanismo minimiza a latência e a sobrecarga da CPU, além de aumentar a eficiência da rede。
No RDMA, a comunicação entre o remetente e o receptor é realizada por meio do adaptador RDMA. Primeiro, o remetente registra o buffer de dados a ser enviado na memória do adaptador RDMA e envia seu descritor (contendo o endereço, o tamanho e outras informações dos dados) para o receptor. O receptor registra o buffer de recebimento com o adaptador RDMA e informa ao adaptador o endereço do buffer de recebimento. Em seguida, o remetente transfere os dados diretamente do buffer de envio para o buffer de recebimento por meio do adaptador RDMA sem a intervenção do sistema operacional. Esse processo é chamado de operação de gravação RDMA. O receptor também pode ler os dados diretamente da memória do remetente por meio de uma operação de leitura RDMA.
O RDMA é compatível com três tipos básicos de operações: operações de gravação, operações de leitura e operações atômicas. As operações de gravação permitem que um nó grave dados diretamente na memória de outro nó. As operações de leitura permitem que um nó leia dados diretamente da memória de outro nó. As operações atômicas são operações especiais que podem executar algumas operações atômicas em nós remotos, como o CAS (compare-and-swap).
O princípio de funcionamento do RDMA é principalmente reduzir o atraso da transmissão de dados e a carga da CPU por meio do acesso direto à memória em nível de hardware. Em comparação com o método de comunicação TCP/IP tradicional, o RDMA não precisa estabelecer uma conexão entre o remetente e o destinatário, nem executar um processamento de protocolo complexo, portanto, apresenta maior desempenho e menor latência. Além disso, o RDMA também oferece suporte a recursos como cópia zero e desvio de kernel, o que pode aumentar ainda mais a eficiência da transmissão de dados.
Em geral, o princípio técnico do RDMA é usar hardware dedicado no adaptador de rede por meio de acesso direto à memória, ignorar o kernel do sistema operacional e obter uma comunicação de rede eficiente, de baixa latência e com pouca ocupação de CPU.
2. As características técnicas do RDMA incluem principalmente os seguintes aspectos:
* Não é necessária a intervenção da CPU: Uma das principais características da tecnologia RDMA é que ela não requer intervenção da CPU. Os aplicativos podem acessar diretamente a memória do host remoto sem consumir nenhum recurso da CPU no host remoto. Isso reduz muito o atraso e a ocupação da CPU durante a transmissão de dados e melhora o desempenho geral.
* Desvio do kernel: O RDMA oferece suporte à tecnologia de desvio de kernel, ou seja, os aplicativos podem executar diretamente a transmissão de dados no modo de usuário sem alternar o contexto entre o modo de kernel e o modo de usuário. Isso reduz ainda mais o atraso da transmissão de dados e aumenta a eficiência.
* Cópia zero: A tecnologia RDMA tem a característica de cópia zero, o que evita o processo de cópia de dados da CPU de um armazenamento para outro. Na comunicação TCP/IP, a transmissão de dados entre hosts exige operações de cópia frequentes, e o RDMA reduz essas operações de cópia desnecessárias por meio do acesso direto à memória, aumentando assim a eficiência da transmissão de dados.
* Alta largura de banda e baixa latência: Como o RDMA ignora a pilha de protocolos fornecida pelo sistema operacional e executa diretamente a transmissão de dados na camada de transporte da rede, ele tem maior utilização de largura de banda e menor latência. Isso torna o RDMA muito adequado para cenários de comunicação de rede que exigem alto desempenho e baixa latência.
* Suporte de hardware: O RDMA requer suporte específico de hardware da placa de rede, que geralmente tem um mecanismo RDMA dedicado para processar a comunicação RDMA. Esse suporte de hardware permite que o RDMA atinja suas características de alto desempenho e baixa latência.
Em geral, os recursos técnicos do RDMA incluem nenhuma intervenção da CPU, desvio do kernel, cópia zero, alta largura de banda e baixa latência, além de suporte de hardware. Esses recursos tornam o RDMA uma tecnologia de comunicação de rede eficiente e de baixa latência, especialmente adequada para cenários que exigem o processamento de grandes quantidades de dados e comunicações de rede de alto desempenho.
3. Cenários de aplicativos do RDMA
Os cenários de aplicação da tecnologia RDMA são muito amplos. Veja a seguir alguns dos principais cenários de aplicação:
* Data center: Em um data center, os servidores precisam transmitir e trocar grandes quantidades de dados com frequência. O alto desempenho e a baixa latência do RDMA o tornam muito adequado para comunicações de rede em data centers, o que pode aumentar a eficiência da transmissão de dados, reduzir a latência e melhorar o desempenho geral.
* Computação de alto desempenho (HPC): O campo da computação de alto desempenho exige o processamento de grandes quantidades de dados e a realização de cálculos complexos. O acesso direto à memória e a tecnologia de cópia zero do RDMA podem reduzir a sobrecarga de transmissão de dados e melhorar a eficiência da computação. Ao mesmo tempo, o RDMA oferece suporte ao processamento paralelo em grande escala e é muito adequado para a computação paralela de vários nós em ambientes de HPC.
* Sistema de armazenamento distribuído: Em um sistema de armazenamento distribuído, os nós precisam executar com frequência operações de leitura e gravação de dados. A transmissão eficiente de dados e as características de acesso direto à memória do RDMA podem aumentar a eficiência de leitura e gravação de dados entre os nós e melhorar o desempenho geral dos sistemas de armazenamento distribuído.
* Computação em nuvem: Em um ambiente de computação em nuvem, a comunicação e a transmissão de dados entre máquinas virtuais (VMs) são requisitos comuns. O RDMA pode ser usado para obter uma comunicação eficiente entre VMs e melhorar o desempenho geral do ambiente de computação em nuvem.
Em geral, embora o RDMA tenha algumas deficiências e limitações, ele ainda é uma tecnologia de comunicação de rede muito eficaz em muitos cenários de alto desempenho e baixa latência. Ao decidir usar o RDMA, é necessário avaliar sua aplicabilidade e desempenho com base em requisitos e ambientes de aplicativos específicos.