Instalujemy SAP HANA na maszynie RAID . W ramach etapu instalacji wspomina się, że:
To disable the usage of transparent hugepages set the kernel settings
at runtime with echo never > /sys/kernel/mm/transparent_hugepage/enabled
Czy zamiast runtime, jeśli chciałbym, aby była to trwała zmiana, czy powinienem dodać powyższą linię do /proc/vmstat
pliku?
Odpowiedzi:
Aby takie opcje stały się trwałe, zazwyczaj dodajesz je do pliku
/etc/sysctl.conf
. Możesz zobaczyć pełną listę opcji dostępnych za pomocą tego polecenia:Przykład
Możesz poszukać
hugepage
w danych wyjściowych w następujący sposób:Nie ma tam
Jednak patrząc przez wyjście nie widziałem
transparent_hugepage
. Googlując jeszcze trochę, natknąłem się na tę stronę Oracle, która omawia ten właśnie temat. Strona nosi tytuł: Konfigurowanie HugePages dla Oracle w systemie Linux (x86-64) .W szczególności na tej stronie wspominają, jak wyłączyć funkcję ukrywania strony .
fragment
Alternatywnie możesz dodać polecenie do swojego
/etc/rc.local
pliku.Myślę, że wybrałbym drugą opcję, ponieważ pierwsza będzie zagrożona rozbrajaniem podczas aktualizacji z jednego jądra do następnego.
Możesz potwierdzić, że zadziałało z następującą komendą po ponownym uruchomieniu:
źródło
cat /sys/kernel/mm/transparent_hugepage/enabled
jest[always] madvise never
, oznaczaalways
to, że jest włączony lub włączony (zwróć uwagę na[]
nawiasyalways
sudo update-grub
aby uzyskać nowe ustawienia „zapisane w kamieniu”. +1 za wskazanie linii pliku grub.Chciałem tylko dodać do tego pytania, ponieważ próbowałem wyłączyć przezroczyste strony testowe na CentOS v6, aby włączyć TokuDB dla MariaDB. Dodałem skrypt wymieniony przez @slm
/etc/rc.local
i wyłączał on przezroczyste strony testowe. Jednak ze względu na sposób działania skryptów startowych w systemie Linux/etc/rc.local
jest uruchamiany po uruchomieniu wszystkich usług. Dlatego przezroczyste ogromne strony zostały wyłączone po uruchomieniu MariaDB, a silnik TokuDB nie zainicjował się. Jedynym innym sposobem wyłączenia przezroczystych stronicowania jest dodanietransparent_hugepage=never
parametru jądra.Zauważyłem komentarz @ Rwky
You can make the first option survive kernel updates by adding transparent_hugepage=never to the GRUB_CMDLINE_LINUX_DEFAULT option in /etc/default/grub on most distributions.
i dowiedziałem się, że CentOS nie obsługuje/etc/default/grub
pliku i martwiłem się, żetransparent_hugepage=never
zniknie on z parametrów jądra podczas jego aktualizacji. Ale nie martw się, CentOS jest tak skonfigurowany, aby zachowywał wszelkie zmiany parametrów jądra w grub, więc po aktualizacji są one zachowywane.Aby dodać, właściwym sposobem modyfikowania parametrów jądra dla grub jest
grubby
. Stworzyłem ten prosty skrypt, aby dodaćtransparent_hugepage=never
do każdego jądra za pomocągrubby
:źródło
etc/sysctl.conf
ponieważ będzie ona konsekwentnie stosowana do każdego jądra, które kiedykolwiek może być zainstalowane na pudełku.grub-mkconfig
jako „root”, aby wygenerować rzeczywisty plik konfiguracyjny dla grub./etc/default/grub.d/50-cloudimg-settings.cfg
plik zamiast,/etc/default/grub
aby działał./etc/rc.local
ale to nie działa dla mnie. Czy możesz mi wyjaśnić podstawową sprawę./etc/rc.local is executed after all the services are started
, należy go wyłączyć na poziomie jądraOto implementacja wykorzystująca marionetkę:
źródło
Wszystkie powyższe nie działały dla mnie na EC2 Ubuntu 16.04, ale to działało:
źródło
Ponieważ linia kernel
transparent_hugepage=never
wyłącza połowę tego, co muszę, (zarówno dla uciążliwego MongoDB upadającego / kłody) tylko, że nie utrzymują się przezsystemd
skryptu startowego, ale teraz mamy:echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
. Działa to albo w skrypcie rozruchowym systemctl (jeśli jest odpowiednio skonfigurowany/etc/systemd/system
), albo bezpośrednio z cli w obecnej postaci.źródło
W przypadku Redis emituje również ostrzeżenie, które sugeruje wyłączenie THP. Ale jak zauważono w raporcie o błędzie , na wielu dystrybucjach
/etc/rc.local
jest wykonywana po usługach i nie ma na nich wpływu, dopóki nie zostaną ponownie uruchomione. Należy również pamiętać, że w środowiskach zwirtualizowanych (np. Digitalocean) nie można kontrolować ustawień GRUB-a.Rozwiązaniem w takim przypadku jest użycie dedykowanego skryptu inicjującego, aby wyłączyć przezroczyste ogromne strony, jak sugeruje ta strona , według ustawień
X-Start-Before
. Na przykład skrypt inicjujący Debiana dla Redis:źródło
Dzięki github i PyYoshi
znalazłem ten przykład dla systemd
Utwórz plik
Umieść to w pliku usługi
Dla użytkowników debian / ubuntu
Następnie włącz usługę
źródło
Jeśli napotkasz problem
nawet z sudo, wypróbuj poniższe polecenia:
źródło
Oto szybki hack dla Ansible (nie chcę zarządzać szablonem
/etc/rc.local
):źródło
W SLES11 SP3 z bootloaderem YAST i GRUB-a musimy dodać
transparent_hugepage=never
[linię edycji bootloadera-YAST z opcjonalnym parametrem jądra]. UWAGA: To narzędzie zmienia plik/boot/grub/menu.lst
.Dopiero po wprowadzeniu tej zmiany i ponownym uruchomieniu nastąpiło wyłączenie THP.
źródło
Oto kolejne rozwiązanie marionetkowe w Forge: https://forge.puppetlabs.com/ramseymcgrath/remove_hugepage/
Po prostu użyj:
w twojej definicji węzła lalkowego.
źródło