Estamos instalando SAP HANA en una máquina RAID . Como parte del paso de instalación, se menciona que,
To disable the usage of transparent hugepages set the kernel settings
at runtime with echo never > /sys/kernel/mm/transparent_hugepage/enabled
Entonces, en lugar de tiempo de ejecución, si quisiera hacer esto un cambio permanente, ¿debería agregar la línea anterior dentro del /proc/vmstat
archivo?
Respuestas:
Para hacer que opciones como esta sean permanentes, generalmente las agregará al archivo
/etc/sysctl.conf
. Puede ver una lista completa de las opciones disponibles con este comando:Ejemplo
Puede buscar
hugepage
en la salida así:¿No está ahí?
Sin embargo, mirando a través de la salida no vi
transparent_hugepage
. Buscando en Google un poco más, me encontré con 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
Alternativamente, puede agregar el comando a su
/etc/rc.local
archivo.Creo que elegiría la segunda opción, ya que la primera correrá el riesgo de desarmarse cuando actualice de un núcleo a otro.
Puede confirmar que funcionó con el siguiente comando después de reiniciar:
fuente
cat /sys/kernel/mm/transparent_hugepage/enabled
es[always] madvise never
, entonces el estado esalways
o está habilitado (tenga en cuenta los[]
corchetesalways
)sudo update-grub
para obtener la nueva configuración "escrita en piedra". +1 para señalar la línea del archivo grub.Solo quería agregar a esta pregunta, ya que estaba tratando de deshabilitar enormes páginas transparentes en CentOS v6 para habilitar TokuDB para MariaDB. Agregué el script mencionado por @slm
/etc/rc.local
y deshabilitó las enormes páginas 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 enormes transparentes se deshabilitaron después de que MariaDB ya se inició y el motor TokuDB no se inicializó. La única otra forma de deshabilitar las enormes páginas transparentes es agregandotransparent_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 el/etc/default/grub
archivo y estaba preocupado portransparent_hugepage=never
desaparecer de los parámetros del núcleo cuando se actualiza. Pero no se preocupe, CentOS está configurado para mantener cualquier cambio realizado en los parámetros del kernel en grub para 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 agregartransparent_hugepage=never
a cada núcleo congrubby
:fuente
etc/sysctl.conf
ya que se aplicará de manera consistente a cualquier Kernel que alguna vez se instale en la caja.grub-mkconfig
como 'root' para generar el archivo de configuración real de grub./etc/default/grub.d/50-cloudimg-settings.cfg
archivo en lugar de/etc/default/grub
hacerlo para que funcione./etc/rc.local
pero no funciona para mí. ¿Me puede explicar el caso raíz?/etc/rc.local is executed after all the services are started
, debe deshabilitarse en el nivel del kernelAquí hay una implementación con títeres:
fuente
Todo lo anterior no funcionó para mí en un Ubuntu EC.04 16.04, pero esto sí:
fuente
Desde la línea del kernel
transparent_hugepage=never
sólo se desactiva la mitad de lo que necesito (ambos, por molesto mongodb su defecto / logs), que no persistió a través desystemd
script de inicio, pero ahora tienen:echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
. Eso funciona en el script de arranque systemctl (cuando está configurado correctamente/etc/systemd/system
) o directamente desde el cli tal como está.fuente
En el caso de Redis, también emite una advertencia que sugiere desactivar THP. Pero como se señaló en el informe de error , en muchas distribuciones
/etc/rc.local
se ejecuta después de los servicios y no tiene ningún efecto sobre ellos hasta que se reinicie. También tenga en cuenta que en entornos virtualizados (por ejemplo, Digitalocean) no puede controlar la configuración de GRUB.La solución en tal caso es usar un script de inicio dedicado para deshabilitar páginas enormes transparentes como sugiere esta página , por configuración
X-Start-Before
. Por ejemplo, Debian init script para Redis:fuente
Gracias a github y PyYoshi
encontré este ejemplo para systemd
Crea el archivo
Pon esto en el archivo de servicio
Para usuarios de debian / ubuntu
Luego habilite el servicio
fuente
Si te encuentras con el problema
incluso con sudo, prueba los siguientes comandos:
fuente
Aquí hay un truco rápido para Ansible (no quiero administrar una plantilla
/etc/rc.local
):fuente
En SLES11 SP3 con el gestor de arranque YAST y GRUB, tenemos que agregar
transparent_hugepage=never
[YAST-bootloader-edit-line con parámetro de kernel opcional]. NOTA: Esta herramienta cambia el archivo/boot/grub/menu.lst
.Solo después de hacer este cambio y reiniciar resultó en la desactivación de THP.
fuente
Aquí hay otra solución de títeres en Forge: https://forge.puppetlabs.com/ramseymcgrath/remove_hugepage/
Solo usa:
en la definición de su nodo títere.
fuente