Comprobar si Hugepages están habilitadas en Linux

Problema:

En tu sistema Linux, quieres comprobar si las transparent hugepages están habilitadas en tu sistema.

Solución

Es bastante simple:

check_hugepages.sh
cat /sys/kernel/mm/transparent_hugepage/enabled

Obtendrás una salida como esta:

hugepages_output.txt
always [madvise] never

Verás una lista de todas las opciones posibles ( always, madvise, never ), con la opción actualmente activa encerrada entre corchetes. madvise es el valor por defecto.

Esto significa que las transparent hugepages solo están habilitadas para regiones de memoria que solicitan explícitamente hugepages usando madvise(2).

always significa que las transparent hugepages siempre están habilitadas para cada proceso. Esto normalmente aumenta el rendimiento, pero si tienes un caso de uso con muchos procesos que solo consumen una pequeña cantidad de memoria cada uno, tu uso general de memoria podría crecer drásticamente.

never significa que las transparent hugepages no se habilitarán incluso si se solicitan usando madvise.

Para más detalles, echa un vistazo a Documentation/vm/transhuge.txt en la documentación del kernel de Linux.

Cómo cambiar el valor por defecto

Opción 1: Modificar sysfs directamente (el ajuste se revierte al valor por defecto al reiniciar):

set_hugepages_sysfs.sh
echo always >/sys/kernel/mm/transparent_hugepage/enabled
echo madvise >/sys/kernel/mm/transparent_hugepage/enabled
echo never >/sys/kernel/mm/transparent_hugepage/enabled

Opción 2: Cambiar el valor por defecto del sistema recompilando el kernel con la configuración modificada (esto solo se recomienda si estás usando tu propio kernel personalizado de todos modos):

Para establecer el valor por defecto en always, establece estas opciones:

set_hugepages_always.sh
CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y
# Comment out CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y

Para establecer el valor por defecto en madvise, establece estas opciones:

set_hugepages_madvise.sh
CONFIG_TRANSPARENT_HUGEPAGE_MADVISE=y
# Comment out CONFIG_TRANSPARENT_HUGEPAGE_ALWAYS=y

Echa un vistazo a artículos similares por categoría: Linux Rendimiento