Red Hat Training
A Red Hat training course is available for RHEL 8
23.4. Configuración de HugeTLB en el arranque
El tamaño de las páginas que soporta el subsistema HugeTLB depende de la arquitectura. La arquitectura x86_64 soporta páginas enormes de 2 MB y páginas gigantes de 1 GB.
Este procedimiento describe cómo reservar una página de 1 GB en el momento del arranque.
Procedimiento
Cree un pool HugeTLB para páginas de 1 GB añadiendo la siguiente línea a las opciones de línea de comandos del kernel en el archivo
/etc/default/grub
como root:default_hugepagesz=1G hugepagesz=1G
Regenerar la configuración de
GRUB2
utilizando el archivo por defecto editado:Si su sistema utiliza el firmware de la BIOS, ejecute el siguiente comando:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Si su sistema utiliza el marco UEFI, ejecute el siguiente comando:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Cree un nuevo archivo llamado
hugetlb-gigantic-pages.service
en el directorio/usr/lib/systemd/system/
y añada el siguiente contenido:[Unit] Description=HugeTLB Gigantic Pages Reservation DefaultDependencies=no Before=dev-hugepages.mount ConditionPathExists=/sys/devices/system/node ConditionKernelCommandLine=hugepagesz=1G [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/lib/systemd/hugetlb-reserve-pages.sh [Install] WantedBy=sysinit.target
Cree un nuevo archivo llamado
hugetlb-reserve-pages.sh
en el directorio/usr/lib/systemd/
y añada el siguiente contenido:Al añadir el siguiente contenido, sustituya number_of_pages por el número de páginas de 1GB que desea reservar, y node por el nombre del nodo en el que se van a reservar estas páginas.
#!/bin/sh nodes_path=/sys/devices/system/node/ if [ ! -d $nodes_path ]; then echo "ERROR: $nodes_path does not exist" exit 1 fi reserve_pages() { echo $1 > $nodes_path/$2/hugepages/hugepages-1048576kB/nr_hugepages } reserve_pages number_of_pages node
Por ejemplo, para reservar dos páginas de 1GB en node0 y una página de 1GB en node1, sustituya number_of_pages por 2 para node0 y 1 para node1:
reserve_pages 2 node0 reserve_pages 1 node1
Crear un script ejecutable:
# chmod x /usr/lib/systemd/hugetlb-reserve-pages.sh
Habilitar la reserva de arranque anticipado:
# systemctl enable hugetlb-gigantic-pages
-
Puedes intentar reservar más páginas de 1GB en tiempo de ejecución escribiendo en
nr_hugepages
en cualquier momento. Sin embargo, estas reservas pueden fallar debido a la fragmentación de la memoria. La forma más fiable de reservar páginas de 1GB es usando este scripthugetlb-reserve-pages.sh
, que se ejecuta antes durante el arranque. - Reservar páginas enormes estáticas puede reducir efectivamente la cantidad de memoria disponible para el sistema, y evita que éste utilice adecuadamente toda su capacidad de memoria. Aunque una reserva de páginas enormes reservadas del tamaño adecuado puede ser beneficiosa para las aplicaciones que la utilizan, una reserva de páginas enormes reservadas sobredimensionada o no utilizada acabará siendo perjudicial para el rendimiento general del sistema. Al establecer un pool de páginas enormes reservadas, asegúrese de que el sistema puede utilizar correctamente toda su capacidad de memoria.
Recursos adicionales
-
Para más información, consulte la documentación pertinente del núcleo, que se instala en el archivo
/usr/share/doc/kernel-doc-kernel_version/Documentation/vm/hugetlbpage.txt
. -
Para más información, consulte la página de manual
systemd.service
.