Estoy tratando de seguir las instrucciones de documentación de MongoDB para configurar LTH correctamente para una máquina ejecutando MongoDB.

Una de las instrucciones consiste en crear un script que se ejecuta en el arranque. Desafortunadamente, ni el script sugerido, ni el código similar reescrito como un systemd service funciona.

Al depurar el problema, encontré otro. Cuando ejecuto:

root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled 

el comando parece ejecutarse correctamente, pero el archivo permanece sin cambios, así que si luego ejecuto:

root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled 

devuelve el contenido original:

always madvise [never] 

Intenté modificar el archivo con vim; al intentar guardar el archivo, se queja de que Fsync falló . Si bien este error ha sido documentado , en mi caso, hay suficiente espacio en disco en / (20% usado , 7 GB disponibles.)

Ejecuto el comando en sudo modo, y los permisos de archivo parecen correctos:

-rw-r--r-- 1 root root 4096 ... 

El /sys el directorio tampoco está montado en modo de solo lectura , como se muestra en:

root@demo:/# grep sysfs /proc/mounts sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 

¿Qué está pasando aquí?

Responder

sysfs, el sistema de archivos normalmente montado en /sys, es un sistema de archivos virtual especial para interactuar con el kernel de Linux.

Los archivos que contiene no» En archivos reales, representan estructuras de datos en el kernel y solo admiten métodos de acceso bastante simples. La lectura de un archivo de este tipo solicita información al núcleo. Escribir en un archivo de este tipo le indica al kernel que cambie una configuración o realice una acción.

Por eso vim falla. Intenta acceder a los archivos virtuales en formas optimizadas para archivos reales y esto no es compatible con sysfs.

Su primer comando

root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled 

¡ya fue exitoso!

Muchos «archivos» sysfs, incluido /sys/kernel/mm/transparent_hugepage/enabled, no solo imprimen la configuración actual cuando se leen, sino que imprimen todo lo posible modos y use corchetes para describir cuál de los múltiples modos está activo en su lugar.

En su caso, never está entre paréntesis, por lo que el modo que intentó activar con echo ya está activo:

always madvise [never] 

Si está interesado en cómo sysfs funciona, puedes leer más sobre él en Wikipedia o en la documentación del kernel de Linux .

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *