Quiero configurar HugePages en mi instancia de Linux de Amazon Elastic Compute Cloud (Amazon EC2).
Solución
Nota: Se recomienda configurar HugePages en un entorno de prueba y comparar el rendimiento antes de desplegar HugePages en producción. El tamaño de HugePage solo puede ser de 2 MB o 1 GB en sistemas x86_64. Para obtener más información sobre HugePages, consulta Configuring HugePages on Linux (Configuración de HugePages en Linux) en el sitio web de Oracle.
Requisitos previos: Para verificar que tu aplicación o base de datos sea compatible con HugePages, consúltalo con tu proveedor. Además, para determinar la cantidad de memoria disponible, ejecuta el siguiente comando para verificar la memoria total de la instancia de EC2:
free -m
Para configurar HugePages en tu instancia de Linux, completa los siguientes pasos:
-
Ejecuta el siguiente comando para verificar que tu kernel no tenga HugePages activado:
sudo cat /proc/sys/vm/nr_hugepages
Si la salida del comando es 0, HugePages no está activado.
-
Para calcular la cantidad de HugePages que necesitas, usa la siguiente fórmula:<br id=hardline_break/>
Número de HugePages = memoria requerida/tamaño de HugePage<br id=hardline_break/>
Nota: Redondea el resultado para asegurarte de que has creado suficientes páginas.
-
Ejecuta el siguiente comando para activar HugePages y establecer el valor del parámetro del kernel:
sudo sysctl -w vm.nr_hugepages=2048
Nota: Sustituye 2048 por el número de HugePages que calculaste.<br id=hardline_break/>
Resultado de ejemplo:
vm.nr_hugepages = 2048
-
Para comprobar que el sistema asigna HugePages tras el reinicio, agrega la siguiente entrada al archivo /etc/sysctl.conf:
sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf
Nota: Sustituye 2048 por el número de HugePages que calculaste.
-
Para comprobar los cambios, ejecuta el siguiente comando:
sudo cat /etc/sysctl.conf
En el resultado del comando, comprueba que haya un valor para vm.nr_hugepages.<br id=hardline_break/>
Resultado de ejemplo:
# sudo cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
vm.zone_reclaim_mode=1
vm.nr_hugepages=2048
-
Reinicia la instancia.
-
Vuelve a ejecutar el siguiente comando para verificar el valor y la configuración de HugePages:
sudo cat /proc/sys/vm/nr_hugepages
Si el resultado es el número de HugePages que has calculado, se activa HugePages.<br id=hardline_break/>
Resultado de ejemplo:
# sudo cat /proc/sys/vm/nr_hugepages
2048
-
Para comprobar las HugePages disponibles en /proc/meminfo, ejecuta el siguiente comando:
sudo grep Huge /proc/meminfo
Resultado de ejemplo:
# sudo grep Huge /proc/meminfo
HugePages_Total: 2048
HugePages_Free: 2048
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Para ver las definiciones de cada valor de HugePages, consulta HugePages en kernel.org.
Para desactivar HugePages, sigue estos pasos:
-
Ejecuta el siguiente comando para restablecer nr_hugepages a 0:
sudo sysctl -w vm.nr_hugepages=0
-
Elimina la siguiente entrada de sysctl.conf:
sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf
-
Reinicia la instancia.