J'utilise mongodb 3.0 et je trouve un avertissement:
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
J'essaie d'utiliser l'écho, mais ce n'est pas permanent, après le redémarrage, il sera réinitialisé.
echo never > /sys/kernel/mm/transparent_hugepage/defrag
Comment puis-je modifier en /sys/kernel/mm/transparent_hugepage/enabled
permanence?
Réponses:
Vous pouvez
installez le
sysfsutils
paquet:et ajoutez une ligne avec ce paramètre pour
/etc/sysfs.conf
:C'est la solution la plus propre car elle conserve toute la configuration sysfs au même endroit au lieu de s'appuyer sur des scripts de démarrage personnalisés. Les autres réponses, avec les scripts et les expressions conditionnelles, conviennent si vous ne savez pas par quel chemin le noyau exposera ce paramètre, c'est-à-dire si vous n'avez même pas une idée approximative de la version du noyau s'exécutant sur la machine affectée.
la source
cat /sys/kernel/mm/transparent_hugepage/enabled
? Existe-t-il du tout?sysfs.conf
est normalement évalué au démarrage par/etc/init.d/sysutils
. Est-ce activé? Que se passe-t-il quand vous invoquez/etc/init.d/sysutils start
?sysfs.conf
fichier et/etc/init.d/sysutils
. Ubuntu 16.04sysctl
est destiné aux paramètres que vous pouvez également obtenir avec les paramètres du noyau;sysfs.conf
est pour les entrées dans/sys
.Les documents MongoDB ont quelques suggestions. http://docs.mongodb.org/manual/reference/transparent-huge-pages/
La façon « préférée » est d'éditer
/etc/default/grub
et appendtransparent_hugepage=never
pourGRUB_CMDLINE_LINUX_DEFAULT
ensuite exécuterupdate-grub
pour reconstruire la configuration de GRUB.C'est ce que feront les deux lignes suivantes. Assurez-vous de vérifier le résultat!
Notez que
update-grub
c'est un wrapper pourgrub-mkconfig
.grub-mkconfig
clobber entrées/etc/default/grub
avec ceux de/etc/default/grub.d/*
. Si par hasard vous utilisez AWS, vous devrez plutôt éditer/etc/default/grub.d/50-cloudimg-settings.cfg
.La méthode "alternative" consiste à éditer
/etc/rc.local
et à ajouter les éléments suivantsexit 0
:Personnellement, j'ai fini par utiliser les méthodes «préférée» et «alternative», car elles ne s'excluent pas mutuellement et élimine l'avertissement concernant la défragmentation.
* Travaillé pour moi sur Ubuntu 14.04, MongoDB 3.0.2 et AWS.
la source
50-cloudimg-settings.cfg
Voici une solution qui a été testée pour fonctionner sur Ubuntu 16.04 sur AWS EC2. Ubuntu 16.04 utilise le système systemd init et ce fichier de configuration indique que ces paramètres doivent être modifiés avant le démarrage de MongoDB.
Créez un fichier nommé
/etc/systemd/system/mongodb-hugepage-fix.service
et ajoutez le contenu suivant:Pour charger le fichier dans systemd:
Pour activer le fichier en tant que dépendance de MongoDB au démarrage
Si vous souhaitez activer les modifications immédiatement (avant le prochain démarrage)
Cette solution ne convient pas à Ubuntu 14.04, qui utilise la solution Upstart init à la place de systemd.
la source
Ajoutez les lignes suivantes ci-dessous dans /etc/rc.local.
Cela fonctionnera lorsque vous redémarrez le serveur.
la source
rc.local
n’est pas une bonne idée, car rc.local sera exécuté à la fin du démarrage du système. Donc, le service mongodb utilisera toujours le paramètre par défaut./sys/kernel/mm/transparent_hugepage/defrag
? Lorsque je redémarre, le shell mongo me dit également "** AVERTISSEMENT: / sys / kernel / mm / transparent_hugepage / defrag est" toujours "."GRUB changera après la mise à niveau et rc.local ne fonctionnera qu’après le démarrage de mongo. Nous devrions peut-être ajouter le service mongo restart à la fin de rc.local comme ceci
ou peut-être que quelqu'un a ajouté avec succès les lignes ci-dessus pour initier le script dans Ubuntu 14.04?
la source
Comme nous déployons des machines avec Ansible, je n’aime pas modifier les fichiers rc.
J'ai essayé d'utiliser
sysfsutils
/sysfs.conf
mais j'ai rencontré des problèmes de synchronisation lors du démarrage des services sur des machines rapides (ou lentes). Il semblait que parfois mongod avait commencé avant sysfsutils. Parfois cela fonctionnait, parfois non.Étant donné que mongod est un processus rapide, j'ai trouvé que la solution la plus propre était d'ajouter le fichier
/etc/mongo_vm_settings.conf
avec le contenu suivant:Cela lancera le script juste avant que mongod ne soit lancé. Redémarrez Mongod (
sudo service mongod restart
) et c'est fait.la source
Après avoir lu un peu dans le journal d’avertissement, j’ai ajouté ces deux lignes dans
/etc/sysfs.conf
vo voáRedémarrez l'ordinateur après avoir appliqué ces modifications.
la source
sysfsutils
paquet (voir ma réponse).