¿Cuáles son las páginas enormes en Linux?

Aprenda sobre páginas enormes en Linux. Comprenda qué son las páginas enormes, cómo configurarlas, cómo verificar el estado actual y cómo deshabilitarlas.

HugePages en Linux

En este artículo, le guiaremos a través de detalles sobre páginas enormes para que pueda responder: ¿qué son las páginas enormes en Linux? ¿Cómo habilitar / deshabilitar páginas enormes? ¿Cómo determinar el valor de página enorme? en Linux como RHEL6, RHEL7, Ubuntu, etc.

Vamos a empezar con lo básico de páginas enormes.

¿Qué es Huge page en Linux?

Las páginas grandes son útiles en la gestión de memoria virtual en el sistema Linux. Como su nombre indica, ayudan a administrar páginas de gran tamaño en memoria, además del tamaño de página estándar de 4 KB. Puede definir un tamaño de página tan grande como 1 GB utilizando páginas enormes.

Durante el arranque del sistema, usted reserva su porción de memoria con páginas enormes para su aplicación. Esta porción de memoria, es decir, esta memoria ocupada por páginas enormes, nunca se intercambia de memoria. Se quedará allí hasta que cambie su configuración. Esto aumenta el rendimiento de las aplicaciones en gran medida, como Oracle Database, con requisitos de memoria bastante grandes.

¿Por qué usar la página enorme?

En administración de memoria virtual, el núcleo mantiene una tabla en la que tiene una asignación de la dirección de memoria virtual a una dirección física. Para cada transacción de página, el núcleo necesita cargar la asignación relacionada. Si tiene páginas de tamaño pequeño, entonces necesita cargar más números de páginas resultantes del núcleo para cargar más tablas de asignación. Esto disminuye el rendimiento.

Usar páginas enormes significa que necesitará menos páginas. Esto reduce en gran medida el número de tablas de asignación a cargar por el núcleo. Esto aumenta el rendimiento a nivel de núcleo, lo que en última instancia beneficia a su aplicación.

En resumen, al habilitar páginas enormes, el sistema tiene menos tablas de páginas para tratar y, por lo tanto, menos sobrecarga para acceder a ellas/mantenerlas.

¿Cómo configurar páginas grandes?

Ejecute el comando debajo para verificar los detalles de las páginas enormes actuales.

root@kerneltalks # grep Huge /proc/meminfoAnonHugePages: 0 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kB

En la salida anterior, puede ver que el tamaño de una página es de 2 MB Hugepagesize y un total de 0 páginas en el sistema HugePages_Total. Este enorme tamaño de página se puede aumentar de 2 MB a un máximo de 1 GB.

Ejecute el script siguiente para obtener la cantidad de páginas enormes que su sistema necesita actualmente. El script es de Oracle y se puede encontrar.

#!/bin/bash## hugepages_settings.sh## Linux bash script to compute values for the# recommended HugePages/HugeTLB configuration## Note: This script does calculation for all shared memory# segments available when the script is run, no matter it# is an Oracle RDBMS shared memory segment or not.# Check for the kernel versionKERN=`uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }'`# Find out the HugePage sizeHPG_SZ=`grep Hugepagesize /proc/meminfo | awk {'print $2'}`# Start from 1 pages to be on the safe side and guarantee 1 free HugePageNUM_PG=1# Cumulative number of pages required to handle the running shared memory segmentsfor SEG_BYTES in `ipcs -m | awk {'print $5'} | grep "*"`do MIN_PG=`echo "$SEG_BYTES/($HPG_SZ*1024)" | bc -q` if ; then NUM_PG=`echo "$NUM_PG+$MIN_PG+1" | bc -q` fidone# Finish with resultscase $KERN in '2.4') HUGETLB_POOL=`echo "$NUM_PG*$HPG_SZ/1024" | bc -q`; echo "Recommended setting: vm.hugetlb_pool = $HUGETLB_POOL" ;; '2.6' | '3.8' | '3.10' | '4.1' ) echo "Recommended setting: vm.nr_hugepages = $NUM_PG" ;; *) echo "Unrecognized kernel version $KERN. Exiting." ;;esac# End

puede guardarlo en el /tmphugepages_settings.sh y, a continuación, ejecútelo como el de abajo :

root@kerneltalks # sh /tmp/hugepages_settings.shRecommended setting: vm.nr_hugepages = 124

La salida será similar a algún número como se muestra en la salida de muestra anterior.

¡Esto significa que su sistema necesita 124 páginas enormes de 2 MB cada una! Si ha establecido 4 MB como tamaño de página, la salida habría sido de 62. Entendiste el punto, ¿verdad?

Configurar páginas hug en el kernel

Ahora la última parte es configurar el parámetro del kernel mencionado anteriormente y recargarlo. Agregue el valor inferior en /etc/sysctl.conf y vuelva a cargar la configuración emitiendo el comando sysctl -p.

vm.nr_hugepages=126

Tenga en cuenta que hemos añadido 2 páginas adicionales en el núcleo, ya que queremos mantener un par de páginas de sobra que el número real requerido.

Ahora, se han configurado páginas enormes en el núcleo, pero para permitir que su aplicación las use, también necesita aumentar los límites de memoria. El nuevo límite de memoria debe ser de 126 páginas x 2 MB cada una = 252 MB, es decir, 258048 KB.

Necesita editar la configuración a continuación en /etc/security/limits.conf

soft memlock 258048 hard memlock 258048

A veces, estas configuraciones se configuran en archivos específicos de la aplicación, como para Oracle DB its en /etc/security/limits.d/99-grid-oracle-limits.conf

¡Eso es todo! Es posible que desee reiniciar su aplicación para hacer uso de estas nuevas páginas enormes.

¿Cómo deshabilitar las páginas de hug?

Las páginas de HUG generalmente están habilitadas de forma predeterminada. Utilice el siguiente comando para comprobar el estado actual de las páginas grandes.

root@kerneltalks # cat /sys/kernel/mm/transparent_hugepage/enabled madvise never

el indicador de salida muestra que las páginas de hug están habilitadas en el sistema.

Para sistemas basados en RedHat ruta de acceso del archivo /sys/kernel/mm/redhat_transparent_hugepage/enabled

Si desea deshabilitar la enorme páginas, a continuación, agregue transparent_hugepage=never al final de kernel línea /etc/grub.conf y reiniciar el sistema.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.