FERRAMENTAS LINUX: A NVIDIA envia o suporte do THP de 1 GB para o Linux x86_64

quinta-feira, 3 de setembro de 2020

A NVIDIA envia o suporte do THP de 1 GB para o Linux x86_64




Confira !!



O engenheiro de software da NVIDIA, Zi Yan, especializado no subsistema de gerenciamento de memória do kernel Linux, enviou hoje um conjunto de patches propondo a adição de suporte THP de 1GB para o kernel Linux.

O engenheiro da NVIDIA está propondo suporte a enormes páginas transparentes de 1 GB para Linux em hardware x86_64 por ser mais flexível na redução da sobrecarga de tradução e aumentar o desempenho de aplicativos que ocupam uma grande área de memória. Ao contrário do código de tabelas de páginas enormes (HugeTLB) do Linux para suportar grandes pegadas de memória, a abordagem de 1 GB THP não requer alterações de aplicativo.

Design
======= A implementação de 1 GB THP é semelhante à saída do código do THP, exceto alguns novos designs para o nível de tabela de página adicional.
1. Depósito e saque da tabela de páginas usando uma nova estrutura de dados de pagechain: em vez de uma página de tabela de página PTE, 1GB THP requer 513 páginas de tabela de página (uma página de tabela de página PMD e 512 páginas de tabela de página PTE) a serem depositadas no tempo de alocação de página , para que possamos dividir a página mais tarde. Atualmente, o depósito da tabela de página está usando -> lru, portanto, apenas uma página pode ser depositada. Uma nova estrutura de dados pagechain foi adicionada para permitir o depósito de várias páginas.
2. O THP de 1 GB com mapeamento triplo: THP de 1 GB pode ser mapeado por uma combinação de entradas PUD, PMD e PTE. A combinação de mapeamento PUD e PTE pode ser obtida com o mecanismo PageDoubleMap existente. Para adicionar o mapeamento PMD, PMDPageInPUD e sub_compound_mapcount são introduzidos. PMDPageInPUD é a página base alinhada a 512 em um THP de 1GB e sub_compound_mapcount conta o mapeamento PMD usando a página [N * 512 + 3] .compound_mapcount.
3. Usando a alocação CMA para THP de 1 GB: em vez de bump MAX_ORDER, é mais lógico usar algo menos intrusivo. Portanto, todos os THPs de 1 GB são alocados de áreas CMA reservadas compartilhadas com o hugetlb. No momento da divisão da página, o bitmap para o THP de 1 GB é limpo, pois as páginas resultantes podem ser liberadas por meio do caminho normal de página livre. Podemos recorrer a alloc_contig_pages para 1 GB de THP, se necessário.

Mais detalhes sobre a proposta do NVIDIA 1GB THP para o kernel Linux por meio desta série de patch .

Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário