Jessaie de suivre les instructions de documentation MongoDB pour configurer correctement LTH pour une machine exécutant MongoDB.
Lune des instructions consiste à créer un script qui sexécute au démarrage. Malheureusement, ni le script suggéré, ni le code similaire réécrit comme un service systemd fonctionne.
Lors du débogage du problème, jen ai rencontré un autre. Lorsque jexécute:
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
la commande semble fonctionner correctement, mais le fichier reste inchangé, donc si je lance ensuite:
root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled
il renvoie le contenu dorigine:
always madvise [never]
Jai essayé de modifier le fichier avec vim
; en essayant de sauvegarder le fichier, il se plaint que Fsync a échoué . Alors que cette erreur a été documentée , dans mon cas, il y a suffisamment despace disque sur /
(20% utilisé , 7 Go disponibles.)
Jexécute la commande en mode sudo
, et les permissions du fichier semblent correctes:
-rw-r--r-- 1 root root 4096 ...
Le Le répertoire /sys
nest pas monté en lecture seule non plus, comme indiqué par:
root@demo:/# grep sysfs /proc/mounts sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
Que se passe-t-il ici?
Réponse
sysfs
, le système de fichiers généralement monté sur /sys
, est un système de fichiers virtuel spécial pour sinterfacer avec le noyau Linux.
Les fichiers quil contient ne sont pas » t de vrais fichiers, ils représentent des structures de données dans le noyau et ne supportent que des méthodes daccès assez simples. La lecture dun tel fichier demande des informations au noyau. Lécriture dans un tel fichier demande au noyau de modifier un paramètre ou deffectuer une action.
Cest pourquoi vim
échoue. Il essaie daccéder aux fichiers virtuels dans méthodes optimisées pour les fichiers réels et ce nest pas pris en charge sur sysfs
.
Votre première commande
root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled
a déjà réussi!
De nombreux « fichiers » sysfs, y compris /sys/kernel/mm/transparent_hugepage/enabled
, nimpriment pas uniquement le paramètre actuel lors de la lecture, mais affichent tout ce qui est possible et utilisez des crochets pour décrire lequel des multiples modes est actif à la place.
Dans votre cas, never
est entre crochets, donc le mode que vous avez essayé dactiver avec echo
est déjà actif:
always madvise [never]
Si vous « êtes intéressé par la façon dont sysfs
fonctionne, vous pouvez en savoir plus sur Wikipédia ou dans la documentation du noyau Linux .