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 .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *