Contabilidad de uso de páginas enormes de Linux

Contabilidad de uso de páginas enormes de Linux

He configurado Huge Pages para usar con Java y parece estar funcionando bien, aunque tengo una pregunta sobre la contabilidad en /proc/meminfo. Para ilustrar

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

Mi pregunta se refiere a los números "Free" y "Rsvd": ¿por qué no suman el "Total" de 1008? En realidad suman 1190. ¿Qué es lo que no entiendo aquí?

Respuesta1

Esto se debe a que HugePages_rsvd se lee esencialmente desde HugePages_Free. Es decir, de 596 enormes páginas que son gratuitas, 594 ya están reservadas por alguna aplicación para su uso. Es decir, el kernel se ha comprometido a que esas 594 páginas enormes estén disponibles para la aplicación.

Si hay una solicitud de 3 páginas grandes ahora, fallará ya que solo hay 2 disponibles para reservar. Piense en ello como una llamada a malloc(), cuando reserva páginas virtuales de memoria para dar cuenta del VSZ para el proceso, pero cuando el proceso realmente las usa, se convierte en el RSZ (conjunto en ejecución) del proceso.

Como las páginas grandes siempre residen en la memoria principal, cuando una aplicación las solicita, el kernel las reduce del grupo libre y aumenta el contador Rsvd.

Esto es de la fuente del 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.

información relacionada