GNU/Linux >> Tutoriales Linux >  >> Linux

deshabilitar páginas gigantes transparentes

Para hacer que opciones como esta sean permanentes, normalmente las agregará al archivo /etc/sysctl.conf . Puede ver una lista completa de las opciones disponibles usando este comando:

$ sysctl -a

Ejemplo

$ sudo sysctl -a | head -5
kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 6000000
kernel.sched_latency_ns = 18000000
kernel.sched_wakeup_granularity_ns = 3000000
kernel.sched_shares_ratelimit = 750000

Puedes buscar hugepage en la salida así:

$ sudo sysctl -a | grep hugepage
vm.nr_hugepages = 0
vm.nr_hugepages_mempolicy = 0
vm.hugepages_treat_as_movable = 0
vm.nr_overcommit_hugepages = 0

¿No está ahí?

Sin embargo, mirando a través de la salida no vi transparent_hugepage . Buscando en Google un poco más, encontré esta página de Oracle que analiza este mismo tema. La página se titula:Configuración de HugePages para Oracle en Linux (x86-64).

Específicamente en esa página mencionan cómo deshabilitar la función de página enorme.

extracto

El método preferido para deshabilitar Transparent HugePages es agregar "transparent_hugepage=never" a la línea de inicio del kernel en el archivo "/etc/grub.conf".

   title Oracle Linux Server (2.6.39-400.24.1.el6uek.x86_64)
            root (hd0,0)
            kernel /vmlinuz-2.6.39-400.24.1.el6uek.x86_64 ro root=/dev/mapper/vg_ol6112-lv_root rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=uk
    LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16  rd_NO_DM rd_LVM_LV=vg_ol6112/lv_swap rd_LVM_LV=vg_ol6112/lv_root rhgb quiet numa=off
    transparent_hugepage=never
            initrd /initramfs-2.6.39-400.24.1.el6uek.x86_64.img

El servidor debe reiniciarse para que esto surta efecto.

Alternativamente, puede agregar el comando a su /etc/rc.local archivo.

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

Creo que optaría por la segunda opción, ya que la primera correrá el riesgo de desactivarse cuando actualice de un kernel al siguiente.

Puede confirmar que funcionó con el siguiente comando después de reiniciar:

$ cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

Solo quería agregar a esta pregunta ya que estaba tratando de deshabilitar las páginas gigantes transparentes en CentOS v6 para habilitar TokuDB para MariaDB. Agregué el script mencionado por @slm a /etc/rc.local y deshabilitó las páginas gigantes transparentes. Sin embargo, debido a la forma en que funcionan los scripts de inicio en Linux, /etc/rc.local se ejecuta después de que se inician todos los servicios. Por lo tanto, las páginas grandes transparentes se deshabilitaban después de que MariaDB ya se había iniciado y el motor TokuDB no se inicializaba. La única otra forma de deshabilitar las páginas gigantes transparentes es agregando transparent_hugepage=never al parámetro del núcleo.

Noté el comentario de @Rwky You can make the first option survive kernel updates by adding transparent_hugepage=never to the GRUB_CMDLINE_LINUX_DEFAULT option in /etc/default/grub on most distributions. y descubrí que CentOS no es compatible con /etc/default/grub archivo y estaba preocupado por transparent_hugepage=never desapareciendo de los parámetros del kernel cuando se actualiza. Pero no se preocupe, CentOS está configurado para mantener los cambios realizados en los parámetros del kernel en grub, de modo que cuando se actualice se mantengan.

Para agregar también, la forma correcta de modificar los parámetros del kernel para grub es con grubby . Creé este script simple para agregar transparent_hugepage=never a cada kernel con grubby :

#!/bin/sh

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

for KERNEL in /boot/vmlinuz-*; do
    grubby --update-kernel="$KERNEL" --args='transparent_hugepage=never'
done

Todo lo anterior no funcionó para mí en un EC2 Ubuntu 16.04, pero esto sí:

sudo apt install hugepages
sudo hugeadm --thp-never

Linux
  1. Seguimiento del kernel con trace-cmd

  2. Linux:¿un núcleo corrupto en Linux?

  3. ¿Desactivar Ethernet de forma permanente para acelerar el tiempo de arranque?

  4. Deshabilitar el modo de mantenimiento en Magento

  5. ¿Cómo desactivo la compatibilidad con I2C Designware cuando no está integrado como módulo?

Comando Dmesg en Linux

Comando Sysctl en Linux

¿Linux es un sistema operativo o un kernel?

Núcleo de Linux vs. Núcleo de Mac

¿Cómo deshabilitar la creación de sockets para un proceso de Linux, para sandboxing?

¿Cómo deshabilito el inicio de sesión del kernel en el diario systemd?