Quiero deshabilitar transparent_hugepage (THP) en una instancia de CentOS 7 EC2, que está habilitada de manera predeterminada:
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
Esta configuración se puede cambiar manualmente:
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
... pero los cambios se pierden después de reiniciar.
Traté de poner la echo never [...]instrucción en mi rc.localy cloud.cfgarchivos, pero no funcionó.
También intenté agregar la configuración transparent_hugepage=nevera la línea del kernel de /etc/grub.conf(como se explica allí ), pero no funcionó mejor.
Entonces ... ¿cómo puedo desactivar THP en CentOS 7 que se ejecuta en una instancia de AWS EC2?
editar: título cambiado ... Necesito deshabilitar THP y THP defrag
amazon-ec2
centos7
grub
vcarel
fuente
fuente

Respuestas:
La solución está en sintonía , como lo señaló @ michael-hampton. La parte difícil es que el complemento vm solo puede configurar la
/sys/kernel/mm/transparent_hugepage/enabledconfiguración.Para deshabilitar la
/sys/kernel/mm/transparent_hugepage/defragconfiguración también, tuve que crear una secuencia de comandos que el perfil llama al inicio.Al final, la solución completa es:
Paso 1 : crea el directorio para contener el perfil personalizado:
Paso 2 : crea el perfil
/etc/tuned/custom/tuned.conf:Tenga en cuenta que este perfil hereda de virtual-guest , que era mi perfil activo, en realidad parece apropiado para el servidor virtualizado (EC2). Puede ver su perfil activo con el comando
tuned-adm active. Si tiene curiosidad, puede consultar el contenido de los perfiles predefinidos en/usr/lib/tuned/Paso 3 : crea el script
/etc/tuned/custom/script.sh:Hazlo ejecutable:
Paso 4 : activa el nuevo perfil:
Ahora deberías obtener:
Persistirá después del reinicio.
fuente
Además de configurar la línea de comandos de grub, también necesita configurar sintonizado. Pero no utiliza las instrucciones a las que se vinculó, ya que están tan llenas de errores que tomaría medio día explicarlas todas.
Cree un perfil personalizado (que llamaré
custom) y luego configure el perfil. Lo basará en un perfil existente, comovirtual-guestsi está ejecutando en una máquina virtual (EC2 es, por supuesto), othroughput-performancesi está en una máquina física.Cree el directorio para contener el perfil personalizado:
Cree el perfil personalizado
/etc/tuned/custom/tuned.conf, por ejemplo:Ahora configure el perfil:
fuente
Prueba también esto
fuente
Puede editar el archivo /etc/rc.local y agregar el siguiente comando a ese archivo:
y ejecutar
chmod +x /etc/rc.d/rc.localpara garantizar que el script se ejecutará durante el arranque. probado en Amazon Linux 2.fuente
EDITAR: la respuesta anterior es incorrecta , porque en este momento faltan los botones de página enormes transparentes de sysctl. Perdón por el ruido.
Puede poner los valores deseados en
/etc/sysctl.conf.Desde la página del comando man sysctl.conf (5):
SYSCTL.CONF (5) Formatos de archivo SYSCTL.CONF (5) NOMBRE sysctl.conf: archivo de precarga / configuración de sysctl DESCRIPCIÓN sysctl.conf es un archivo simple que contiene valores sysctl para ser leídos y establecidos por sysctl. La sintaxis es simplemente la siguiente: # comentario ; comentario token = valor Tenga en cuenta que las líneas en blanco se ignoran y los espacios en blanco antes y después de un token o valor se ignoran, aunque un valor puede contener espacios en blanco. Líneas que comienzan con un # o; son considerados comentarios e ignorados. EJEMPLO # muestra sysctl.conf # # kernel.domainname = example.com ; ¡éste tiene un espacio que se escribirá en el sysctl! kernel.modprobe = / sbin / mod sondafuente