Contabilidade de uso de páginas enormes do Linux

4

Eu configurei o Huge Pages para uso com Java e ele parece estar funcionando bem, embora eu tenha uma pergunta sobre a contabilidade em / proc / meminfo. Para 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 "Free" e "Rsvd" - por que eles não somam "Total" de 1008? Eles realmente somam 1190. O que eu não estou entendendo aqui?

    
por Fred Clausen 15.10.2012 / 14:03

1 resposta

5

Isso ocorre porque o HugePages_rsvd é essencialmente lido em HugePages_Free. Ou seja, das 596 páginas enormes que são gratuitas, 594 já estão reservadas por algum aplicativo para uso. Isso é o kernel confirmou que essas 594 páginas enormes estão disponíveis para o aplicativo.

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

Como páginas enormes são sempre residentes na memória principal, quando um aplicativo solicita a elas o kernel o desativa do pool livre e aumenta o contador de Rsvd.

Isto é da fonte do kernel. link

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.
    
por 15.10.2012 / 19:52