Las páginas gigantes transparentes (THP) están habilitadas de forma predeterminada en RHEL 6 para todas las aplicaciones. El núcleo siempre intentará satisfacer una asignación de memoria utilizando páginas gigantes. Si no hay páginas enormes disponibles (debido a la falta de disponibilidad de memoria físicamente continua, por ejemplo), el núcleo volverá a las páginas normales de 4 KB.
Páginas enormes explícitas frente a páginas enormes transparentes
Puede haber dos tipos de páginas enormes en el sistema:páginas enormes explícitas que se asignan explícitamente mediante el parámetro sysctl vm.nr_hugepages y Transparent Huge Pages que son asignados automáticamente por el kernel.
Verificar si THP está habilitado
“tuned.service” en CentOS/RHEL 7 establece la página transparente_huge en siempre de forma predeterminada. Incluso si está deshabilitado en la línea de comando del kernel de grub, el servicio ajustado lo establecerá en 'siempre ' durante el arranque. El archivo /sys/kernel/mm/redhat_transparent_hugepage/enabled da el estado actual de THP (habilitado/deshabilitado). Los valores para /sys/kernel/mm/redhat_transparent_hugepage/enabled pueden ser uno de los siguientes:
always - always use THP never - disable THP
A continuación, la salida del comando confirma que los THP están habilitados o deshabilitados en el sistema.
Salida cuando THP está habilitado
# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
Salida cuando THP está deshabilitado
# cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]
1. Para deshabilitar THP en el momento del arranque
1. Agregue el parámetro transparent_hugepage=never a la línea de comandos del kernel en /etc/grub.conf:
# vim /etc/grub.conf default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux 6 (2.6.32-504.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg_os-lv_os rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_os/lv_os KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet transparent_hugepage=never initrd /initramfs-2.6.32-504.el6.x86_64.img
2. Agregue un pequeño script que se proporciona a continuación al archivo /etc/rc.d/rc.local .
# vi /etc/rc.d/rc.local .... if test −f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test −f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi
3. Reinicie el sistema para que los cambios surtan efecto.
# shutdown -r now
2. Para deshabilitar THP en tiempo de ejecución
Ejecute los siguientes comandos para deshabilitar THP sin reiniciar el sistema.
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled # echo never > /sys/kernel/mm/redhat_transparent_hugepage/defragNota :La ejecución de los comandos anteriores solo detendrá la creación y el uso del nuevo THP. El THP que se creó y usó en el momento en que se ejecutaron los comandos anteriores no se desarmaría en las páginas de memoria regulares. Para deshacerse de THP por completo, el sistema debe reiniciarse con THP deshabilitado en el momento del arranque.
Resolución de problemas
Si Transparent Huge Pages (THP) aún no está deshabilitado, continúe y use una de las opciones a continuación.
1. Deshabilitar los servicios tuned/ktune
1. Deshabilite los servicios sintonizados si está volviendo a habilitar el THP usando cualquiera de los siguientes comandos.
# service tuned stop # chkconfig tuned off # service ktune stop # chkconfig ktune off
O
# tuned-adm offNota :El comando tuned-adm revertirá todas sus configuraciones a lo que eran antes de que se iniciara la sintonización y deshabilitará la ejecución de los servicios de sintonización en el arranque.
2. Verifique que los servicios ktune y tuned estén deshabilitados para comenzar en el arranque:
# chkconfig --list |egrep -i "ktune|tuned" ktune 0:off 1:off 2:off 3:off 4:off 5:off 6:off tuned 0:off 1:off 2:off 3:off 4:off 5:off 6:off
2. Cree un perfil sintonizado personalizado con THP deshabilitado
1. Crearemos una versión personalizada del perfil que se está ejecutando actualmente. La versión personalizada deshabilitará THP. Averigüe qué perfil está activo, cree una copia. En el siguiente ejemplo, actualmente usamos el perfil rendimiento-rendimiento:
# tuned-adm active Current active profile: throughput-performance Service tuned: enabled, running Service ktune: enabled, running
2. Cree un perfil duplicado a partir del perfil existente. Usaremos el nuevo perfil para deshabilitar el THP. Para hacer esto, copie todo el contenido del directorio de perfil actual al directorio de perfil recién creado.
# cd /etc/tune-profiles/ # cp -r /etc/tune-profiles/throughput-performance /etc/tune-profiles/nothp_profile
3. Ahora deshabilitaremos THP en el nuevo perfil y activaremos el nuevo perfil. Cambie la línea que se muestra a continuación:
Desde :
# vi /etc/tune-profiles/nothp_profile/ktune.sh set_transparent_hugepages always
A :
# vi /etc/tune-profiles/nothp_profile/ktune.sh set_transparent_hugepages never
4. Active el nuevo perfil para que los cambios surtan efecto.
# tuned-adm profile nothp_profile
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled always [never]CentOS / RHEL 7:Cómo deshabilitar las páginas gigantes transparentes (THP)