Contabilidade de uso de páginas enormes do Linux

Contabilidade de uso de páginas enormes do Linux

Configurei o Huge Pages para uso com Java e parece estar funcionando bem, embora eu tenha uma dúvida sobre a contabilidade em /proc/meminfo. Ilustrar

# grep HugePages /proc/meminfo 
AnonHugePages:    274432 kB
HugePages_Total:    1008
HugePages_Free:      596
HugePages_Rsvd:      594
HugePages_Surp:        0

Minha pergunta diz respeito aos números "Grátis" e "Rsvd" - por que eles não somam o "Total" de 1008? Na verdade, eles somam 1190. O que não estou entendendo aqui?

Responder1

Isso ocorre porque HugePages_rsvd é essencialmente lido em HugePages_Free. Ou seja, das 596 páginas enormes gratuitas, 594 já estão reservadas para uso por algum aplicativo. Isto é, o kernel comprometeu-se a que essas 594 páginas enormes estejam disponíveis para a aplicação.

Se houver uma solicitação de 3 páginas enormes agora, ela falhará, pois apenas 2 estão disponíveis para reserva. Pense nisso como uma chamada malloc(), quando você reserva páginas virtuais de memória para contabilizar o VSZ do processo, mas quando o processo realmente as utiliza, ele se torna o RSZ (conjunto em execução) do processo.

Como páginas enormes sempre residem na memória principal, quando um aplicativo as solicita, o kernel diminui o pool livre e aumenta o contador Rsvd.

Isto é da fonte do kernel.https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt

where:
HugePages_Total is the size of the pool of huge pages.
HugePages_Free  is the number of huge pages in the pool that are not yet
                allocated.
HugePages_Rsvd  is short for "reserved," and is the number of huge pages for
                which a commitment to allocate from the pool has been made,
                but no allocation has yet been made.  Reserved huge pages
                guarantee that an application will be able to allocate a
                huge page from the pool of huge pages at fault time.
HugePages_Surp  is short for "surplus," and is the number of huge pages in
                the pool above the value in /proc/sys/vm/nr_hugepages. The
                maximum number of surplus huge pages is controlled by
                /proc/sys/vm/nr_overcommit_hugepages.

informação relacionada