Otimização avançada

NVIDIA propõe novos patches Linux para otimizar GPU direct RDMA com páginas privadas de dispositivos

A NVIDIA apresentou novos patches para o Linux, expandindo o suporte a GPU Direct RDMA com páginas privadas de dispositivos, otimizando a comunicação entre GPUs e NICs, sem passar pela memória do sistema.

Imagem com logomarca da NVIDIA

A NVIDIA apresentou uma série de novos patches para o kernel Linux, visando aprimorar a funcionalidade do GPU Direct RDMA (Acesso Direto à Memória Remota) e DMA ponto a ponto (P2P DMA). Esses patches estendem o suporte ao P2P DMA para páginas privadas de dispositivos, uma melhoria crucial para otimizar o desempenho de comunicação entre GPUs e dispositivos, como adaptadores de rede, sem a necessidade de passar pela memória do sistema.

Avanços no DMA ponto a ponto no Linux

Imagem com logomarca da NVIDIA

Nos últimos anos, o kernel Linux tem evoluído para oferecer melhor suporte ao P2P DMA, o que permite a comunicação direta entre dispositivos, como aceleradores, GPUs e adaptadores de rede. Essa abordagem elimina cópias desnecessárias de dados na memória do sistema, melhorando a eficiência e o desempenho geral das transferências. Os novos patches da NVIDIA vão além, habilitando o P2P DMA para páginas de memória privada de dispositivos, o que representa um avanço significativo no fluxo de dados entre dispositivos conectados.

Patches otimizam uso de páginas privadas de dispositivos

Yonatan Maman, engenheiro da NVIDIA, explicou que a série de patches foi projetada para permitir que aplicativos centrados em GPUs, que utilizam RDMA, se beneficiem do acesso DMA ponto a ponto a páginas privadas de dispositivos. Isso elimina a necessidade de trafegar dados pela memória do sistema, o que é o método convencional de exposição de páginas privadas de dispositivos.

As mudanças propostas incluem ajustes no código de gerenciamento de memória do Linux e no Gerenciamento Heterogêneo de Memória (HMM), que agora passam a permitir que a GPU mapeie diretamente essas páginas privadas para operações de P2P DMA. O uso da função hmm_range_fault foi otimizado para permitir conexões P2P sem a necessidade de gerenciar falhas de página da maneira tradicional, reduzindo a sobrecarga de transferência de dados.

Atualizações nos drivers NVIDIA e de código aberto

Os patches também trazem melhorias para drivers-chave no ecossistema Linux, incluindo o driver NVIDIA Mellanox MLX5 e o driver de código aberto Nouveau.

Driver NVIDIA Mellanox MLX5

O driver Mellanox MLX5 foi atualizado para otimizar o suporte a P2P via PCIe, com melhorias no uso da memória ODP (On-Demand Paging). Isso inclui a ativação do serviço de tradução de endereços (ATS), que garante um melhor desempenho ao acessar páginas privadas de dispositivos em operações P2P.

Driver Nouveau

Embora o driver Nouveau não seja amplamente utilizado em workloads exigentes, ele recebeu suporte para operações de P2P DMA por meio da função de callback p2p_page. Esse suporte demonstra a capacidade de lidar com operações de páginas P2P em um ambiente totalmente de código aberto, seguindo as políticas de upstream do kernel Linux. A integração no Nouveau serve como uma demonstração prática do uso dessas funcionalidades com drivers open-source.

Principais atualizações técnicas:

  • Gerenciamento de Memória (MM): Foi implementado o suporte para operações de páginas P2P utilizando a estrutura pagemap_ops, que permite à GPU mapear diretamente as páginas privadas de dispositivos.
  • Driver IB/Core: Uma nova flag chamada TRY_P2P_REQ foi adicionada ao chamar a função hmm_range_fault, facilitando o mapeamento eficiente de páginas P2P.
  • Driver Nouveau: O suporte ao DMA P2P foi integrado ao driver Nouveau, com uma nova função de callback chamada p2p_page, que lida com operações de páginas ponto a ponto.
  • Driver MLX5: Melhorias no driver da NVIDIA Mellanox MLX5, com ativação do serviço ATS para otimizar a memória ODP, garantindo maior eficiência em operações P2P.

Essas mudanças reforçam o compromisso da NVIDIA com a otimização do desempenho de suas GPUs e a interoperabilidade com outros dispositivos, garantindo que o suporte a drivers de código aberto seja mantido e aprimorado.

Conclusão

Com esses novos patches, a NVIDIA não apenas melhora a eficiência do DMA ponto a ponto no Linux, mas também reforça a interoperabilidade entre GPUs e outros dispositivos de alta performance. A otimização para páginas privadas de dispositivos representa um avanço importante para aplicações que demandam altíssimo desempenho, como inteligência artificial e computação de alto desempenho.

Para mais detalhes, consulte a série de patches publicada pela equipe da NVIDIA.