Snažím se podle pokynů k dokumentaci MongoDB správně nakonfigurovat LTH pro stroj spuštěním MongoDB.

Jedna z pokynů spočívá ve vytvoření skriptu, který běží při bootování. Bohužel ani navrhovaný skript, ani podobný kód nebyl přepsán jako služba systemd funguje.

Při ladění problému jsem narazil na další. Když spustím:

root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled 

příkaz Zdá se, že běží úspěšně, ale soubor zůstane beze změny, takže pokud spustím:

root@demo:/# cat /sys/kernel/mm/transparent_hugepage/enabled 

vrátí původní obsah:

always madvise [never] 

Pokusil jsem se upravit soubor pomocí vim; při pokusu o uložení souboru si stěžuje, že Fsync selhal . Zatímco byla tato chyba zdokumentována , v mém případě je na disku / dostatek místa (20% použito) , 7 GB k dispozici.)

Spustím příkaz v režimu sudo a oprávnění k souboru se zdají správná:

-rw-r--r-- 1 root root 4096 ... 

The /sys adresář není připojen v režimu jen pro čtení , jak ukazuje:

root@demo:/# grep sysfs /proc/mounts sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 

Co se to tady děje?

Odpověď

sysfs, souborový systém obvykle připojený k /sys, je speciální virtuální souborový systém pro propojení s linuxovým jádrem.

Soubory v něm nejsou“ Skutečné soubory představují datové struktury v jádře a podporují pouze poměrně jednoduché přístupové metody. Čtení z takového souboru vyžaduje jádro o informace. Zápis do takového souboru dává jádru pokyn, aby změnil nastavení nebo provedl akci.

Proto vim selže. Pokouší se o přístup k virtuálním souborům v způsoby optimalizované pro skutečné soubory a toto není podporováno v sysfs.

Váš první příkaz

root@demo:/# echo never > /sys/kernel/mm/transparent_hugepage/enabled 

již bylo úspěšné!

Mnoho „souborů“ sysfs, včetně /sys/kernel/mm/transparent_hugepage/enabled, nevytiskne aktuální nastavení pouze při čtení, ale vytiskne vše možné režimy a pomocí závorek popište, který z více režimů je místo toho aktivní.

Ve vašem případě je never v závorkách, takže režim, který jste se pokusili aktivovat pomocí echo je již aktivní:

always madvise [never] 

Pokud vás zajímá, jak sysfs funguje, více si o něm můžete přečíst na Wikipedii nebo v dokumentaci k jádru systému Linux .

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *