O Google avança com a implementação HugeTLB HGM para o kernel Linux. No ano passado, enviaram como “solicitação de comentários”, duas rodadas de patches do engenheiro do Google, James Houghton. O objetivo principal é para introduzir o conceito de HugeTLB High Granularity Mapping (HGM) no kernel do Linux. No início deste novo ano, o conjunto de 46 patches em situação pós-RFC saíram para revisão por parte dos desenvolvedores.
O HugeTLB HGM permite que as páginas HugeTLB tenham um mapeamento em alta granularidade de maneira semelhante às páginas enormes transparentes (THPs) com mapeamento por PTE. A motivação do Google em torno do HugeTLB HGM para páginas no PAGE_SIZE do kernel tem implicações úteis para migração ao vivo de VM e tratamento de falha de memória.
Google avança com HugeTLB HGM para o kernel do Linux
Alguns dos principais detalhes de benefícios da série de patches HugeTLB HGM:
Ser capaz de retomar uma vCPU 100 vezes mais rápido é útil para a estabilidade do host. Assim, passa a ser capaz de usar páginas 1G pode melhorar significativamente o desempenho do convidado em estado estável.
Depois de copiar totalmente uma página enorme na rede, queremos reduzir o mapeamento ao que seria normalmente (por exemplo, um PUD para uma página 1G). Em vez de fazer com que o kernel faça isso automaticamente, deixamos que o espaço do usuário nos diga para recolher um intervalo (via MADV_COLLAPSE).
- Falha de memória
Quando um erro de memória surge em uma página HugeTLB, seria ideal se pudéssemos desmapear apenas a seção PAGE_SIZE que continha o erro. Isso é o que os THPs são capazes de fazer. Usando o mapeamento de alta granularidade, poderíamos fazer isso, mas não há nada neste sentido nesta série de patches.
O usuário inicial da API de espaço de usuário proposta para esta adição de kernel é a pós-cópia userfaultfd de alta granularidade para manipulação de HugeTLB.
Inicialmente, esse suporte de mapeamento de alta granularidade HugeTLB é apenas x86_64, mas há planos para AArch64 e potencialmente outras arquiteturas de CPU também.
Mais detalhes sobre o suporte HugeTLB HGM através da série de patches de hoje.