Yo uso mongodb 3.0 y encuentro una advertencia:
MongoDB shell version: 3.0.0
connecting to: test
Server has startup warnings:
2015-03-13T16:28:29.405+0800 I CONTROL [initandlisten]
2015-03-13T16:28:29.406+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2015-03-13T16:28:29.406+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2015-03-13T16:28:29.406+0800 I CONTROL [initandlisten]
2015-03-13T16:28:29.407+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2015-03-13T16:28:29.407+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2015-03-13T16:28:29.407+0800 I CONTROL [initandlisten]
~# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
~# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
Intento usar echo, pero no es permanente, después de reiniciar se restablecerá.
echo never > /sys/kernel/mm/transparent_hugepage/defrag
¿Cómo modifico /sys/kernel/mm/transparent_hugepage/enabledpermanentemente?

Respuestas:
Usted puede
instale el
sysfsutilspaquete:y agregue una línea con esa configuración a
/etc/sysfs.conf:Esta es la solución más limpia, porque mantiene toda la configuración de sysfs en un solo lugar en lugar de depender de scripts de inicio personalizados. Las otras respuestas, con los scripts y las expresiones condicionales, son adecuadas si no sabe a través de qué ruta el kernel expondrá esa configuración, es decir, si ni siquiera tiene una idea aproximada de la versión del kernel que se ejecuta en la máquina afectada.
fuente
cat /sys/kernel/mm/transparent_hugepage/enabled? ¿Existe en absoluto?sysfs.confnormalmente se evalúa en el arranque por/etc/init.d/sysutils. ¿Está habilitado? ¿Qué sucede cuando invocas/etc/init.d/sysutils start?sysfs.confarchivo y/etc/init.d/sysutils. ubuntu 16.04sysctles para configuraciones que también podría lograr con los parámetros del kernel;sysfs.confes para entradas en/sys.Los documentos de MongoDB tienen algunas sugerencias. http://docs.mongodb.org/manual/reference/transparent-huge-pages/
La forma "preferida" es editar
/etc/default/gruby agregartransparent_hugepage=neveryGRUB_CMDLINE_LINUX_DEFAULTluego ejecutarupdate-grubpara reconstruir la configuración de GRUB.El siguiente dos líneas hará exactamente eso. ¡Asegúrese de verificar la salida!
Tenga en cuenta que
update-grubes un contenedor paragrub-mkconfig.grub-mkconfiggolpeará las entradas/etc/default/grubcon las de/etc/default/grub.d/*. Si por casualidad se está ejecutando en AWS, deberá editar en su lugar/etc/default/grub.d/50-cloudimg-settings.cfg.El método "alternativo" es editar
/etc/rc.localy agregar lo siguiente antesexit 0:Personalmente, terminé haciendo los métodos "preferidos" y "alternativos" ya que no son mutuamente excluyentes y elimina la advertencia sobre la desfragmentación.
* Me funcionó en Ubuntu 14.04, MongoDB 3.0.2 y AWS.
fuente
50-cloudimg-settings.cfgAquí hay una solución que ha sido probada para funcionar en Ubuntu 16.04 en AWS EC2. Ubuntu 16.04 usa el sistema systemd init, y este archivo de configuración expresa que esta configuración debe cambiarse antes de que se inicie MongoDB.
Cree un archivo llamado
/etc/systemd/system/mongodb-hugepage-fix.servicey agregue el siguiente contenido:Para cargar el archivo en systemd:
Para activar el archivo como una dependencia del tiempo de arranque de MongoDB
Si desea activar los cambios inmediatamente (antes del próximo arranque)
Esta solución no es adecuada para Ubuntu 14.04, que usa la solución de inicio Upstart en lugar de systemd.
fuente
Agregue las siguientes líneas a continuación en /etc/rc.local.
Esto se ejecutará cuando reinicie el servidor.
fuente
rc.localno es una buena idea, porque rc.local se ejecutará al final del inicio del sistema. Por lo tanto, el servicio mongodb seguirá utilizando la configuración predeterminada./sys/kernel/mm/transparent_hugepage/defrag? Cuando reinicio, mongo shell también me dice "** ADVERTENCIA: / sys / kernel / mm / transparent_hugepage / defrag es 'siempre'".GRUB cambiará después de la actualización, y rc.local se ejecutará solo después de que se inicie mongo, por lo que tal vez deberíamos agregar el servicio de reinicio de mongo al final de rc.local de esta manera
¿O tal vez alguien agregó con éxito las líneas anteriores al script de inicio en Ubuntu 14.04?
fuente
Como estamos implementando máquinas con Ansible, no me gusta modificar archivos rc.
Intenté usar
sysfsutils/sysfs.confpero me encontré con 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/mongo_vm_settings.confcon el siguiente contenido:Esto ejecutará el script justo antes de que se inicie mongod. Reinicie mongod (
sudo service mongod restart) y listo.fuente
Después de leer un poco en el registro de advertencia, he agregado estas dos líneas en
/etc/sysfs.confy voiláReinicie la máquina después de aplicar estos cambios.
fuente
sysfsutilspaquete (ver mi respuesta).