nr_hugepages
ainda existe porque é complementar aos outros valores que você mencionou. A documentação do kernel tem todos os detalhes, mas basicamente, /proc/sys/vm/nr_hugepages
mostra o número de persistentes enormes páginas do tamanho padrão dentro do enorme pool de páginas do kernel (cujo tamanho é mostrado por HugePages_Total
in /proc/meminfo
). nr_hugepages
é uma configuração controlada pelo administrador, definida na inicialização usando o parâmetro hugepages
kernel e / ou em tempo de execução gravando em nr_hugepages
(desde que o sistema seja capaz de fornecer o número solicitado de páginas grandes).
O objetivo de nr_hugepages
é disponibilizar páginas enormes para programas userspace , via hugetlbfs
ou memória compartilhada ou mmap
. O número de páginas alocadas via nr_hugepages
constitui um conjunto de páginas grandes reservadas para esse uso; Se os recursos do sistema permitirem, mais páginas grandes podem estar disponíveis (até o limite definido por nr_overcommit_hugepages
), mas isso não é garantido. Está disponível em todas as plataformas que suportam páginas enormes. Essas páginas são úteis para programas que fazem grandes alocações de memória, mas introduzem restrições - em particular, elas não podem ser trocadas.
Como mencionado em o que significa, por hardware, os campos DirectMap4k, DirectMap2M no arquivo “/ proc / meminfo” do Linux? / a>, DirectMap
é um detalhe de implementação específico do x86. Mede o uso de mapas de páginas para páginas de vários tamanhos, pelo kernel ; Isso mostra o quanto o kernel conseguiu mapear páginas como páginas enormes de vários tamanhos. Isso não é limitado por nr_hugepages
: mesmo em um sistema sem páginas enormes no enorme pool de páginas (para espaço do usuário), o kernel tentará coalescer os mapeamentos de página para reduzir a carga de TLB (veja try_preserve_large_page
em pageattr.c
).