transparent_hugepage remota enabled defrag conexion linux mongodb linux-kernel

linux - remota - cat sys kernel mm transparent_hugepage enabled



¿Cómo evitar la advertencia transparent_hugepage/defrag de mongodb? (6)

  1. Abrir / etc / default / grub

    sudo vi / etc / default / grub

  2. Actualizar
    GRUB_CMDLINE_LINUX_DEFAULT = "" a GRUB_CMDLINE_LINUX_DEFAULT = "transparent_hugepage = nunca"

  3. Guardar el archivo
    : wq (en vi)
  4. Ejecute update-grub

    sudo update-grub

  5. Reiniciar la máquina

Actualización: si está utilizando un proveedor de alojamiento virtual, esto funcionará. DigitalOcean NO admite arranque de grub.

Recibo la siguiente advertencia de mongodb sobre THP

2015-03-06T21:01:15.526-0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ''always''. 2015-03-06T21:01:15.526-0800 I CONTROL [initandlisten] ** We suggest setting it to ''never''

Pero logré apagar el THP manualmente

frederick@UbuntuVirtual:~$ cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] frederick@UbuntuVirtual:~$ cat /sys/kernel/mm/transparent_hugepage/defrag always madvise [never]

Hice el truco agregando transparent_hugepage=never a GRUB_CMDLINE_LINUX_DEFAULT en /etc/default/grub y agregando

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi

a /etc/rc.local

¿Cómo puedo evitar la advertencia?



Para Ubuntu 14.04 usando upstart:

Como estamos implementando máquinas con Ansible, no me gusta modificar archivos rc o configuraciones GRUB.

Intenté usar sysfsutils / sysfs.conf pero encontré problemas de sincronización al iniciar los servicios en máquinas rápidas (o lentas). Parecía que a veces mongod se iniciaba antes que sysfsutils. A veces funcionaba, a veces no.

Como mongod es un proceso inicial, descubrí que la solución más limpia era agregar el archivo /etc/init/mongod_vm_settings.conf con el siguiente contenido:

# Ubuntu upstart file at /etc/init/mongod_vm_settings.conf # # This file will set the correct kernel VM settings for MongoDB # This file is maintained in Ansible start on (starting mongod) script echo "never" > /sys/kernel/mm/transparent_hugepage/enabled echo "never" > /sys/kernel/mm/transparent_hugepage/defrag end script

Esto ejecutará el script justo antes de que se inicie mongod. Reinicie mongod ( sudo service mongod restart ) y listo.


Ubuntu 16.04 usando systemd:

systemctl edit mongod

Pegue lo siguiente:

[Service] PermissionsStartOnly=true ExecStartPre=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled" ExecStartPre=/bin/sh -c "echo never > /sys/kernel/mm/transparent_hugepage/defrag"


Verificado que la desfragmentación se examine sin tener en cuenta lo habilitado:

$ cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] $ cat /sys/kernel/mm/transparent_hugepage/defrag [always] madvise never $ service mongod start ... (in log) WARNING: /sys/kernel/mm/transparent_hugepage/defrag is ''always'' $ echo ''never'' > /sys/kernel/mm/transparent_hugepage/defrag $ cat /sys/kernel/mm/transparent_hugepage/defrag always madvise [never] $ service mongod stop $ service mongod start ... (no warning in log)

Por lo tanto, la solución a este error es mirar primero transparent_hugepage / enabled, y si nunca lo está, no se moleste en mirar la configuración irrelevante transparent_hugepage / defrag.

Source


La documentación oficial de MongoDB ofrece varias soluciones para este problema. También puedes probar esta solución , que funcionó para mí:

Nota: Pruebe las directivas de documentación oficial si la versión de MongoDB es superior a la 3.0

  1. Abra el archivo /etc/init.d/mongod .
    (si no existe dicho archivo, puede consultar los archivos /etc/init.d/mongod , /etc/init/mongod.conf - crédito: los comentarios a continuación)

  2. Agregue las líneas a continuación inmediatamente después de chown $DAEMONUSER /var/run/mongodb.pid y antes de end script .

  3. Reinicie mongod ( service mongod restart ).

Aquí están las líneas para agregar a /etc/init.d/mongod :

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

¡Eso es!