Kami menginstal SAP HANA di mesin RAID . Sebagai bagian dari langkah instalasi, disebutkan bahwa,
To disable the usage of transparent hugepages set the kernel settings
at runtime with echo never > /sys/kernel/mm/transparent_hugepage/enabled
Jadi alih-alih runtime, jika saya ingin membuat ini perubahan permanen, haruskah saya menambahkan baris di dalam /proc/vmstat
file?
Jawaban:
Untuk membuat opsi seperti ini permanen, Anda biasanya akan menambahkannya ke file
/etc/sysctl.conf
. Anda dapat melihat daftar lengkap opsi yang tersedia menggunakan perintah ini:Contoh
Anda dapat mencari
hugepage
dalam output seperti ini:Itu tidak ada di sana?
Namun melihat melalui output saya tidak melihat
transparent_hugepage
. Googling sedikit lagi saya menemukan halaman Oracle ini yang membahas topik ini. Halaman tersebut berjudul: Mengkonfigurasi HugePages untuk Oracle di Linux (x86-64) .Khususnya pada halaman itu mereka menyebutkan cara menonaktifkan fitur hugepage .
kutipan
Atau Anda dapat menambahkan perintah ke
/etc/rc.local
file Anda .Saya pikir saya akan memilih opsi ke-2, karena yang pertama akan beresiko menjadi tidak disetel ketika Anda meningkatkan dari satu kernel ke kernel berikutnya.
Anda dapat mengkonfirmasi bahwa itu berhasil dengan perintah berikut setelah reboot
sumber
cat /sys/kernel/mm/transparent_hugepage/enabled
adalah[always] madvise never
, maka statusnyaalways
atau itu diaktifkan (perhatikan[]
tanda kurung di sekitaralways
)sudo update-grub
untuk mendapatkan pengaturan baru "ditulis dalam batu". +1 untuk menunjuk baris file grub.Saya hanya ingin menambahkan pertanyaan ini karena saya mencoba untuk menonaktifkan hugepages transparan pada CentOS v6 untuk mengaktifkan TokuDB untuk MariaDB. Saya menambahkan script yang disebutkan oleh @slm ke
/etc/rc.local
dan menonaktifkan hugepages transparan. Namun, karena cara skrip startup bekerja di Linux,/etc/rc.local
dijalankan setelah semua layanan dimulai. Oleh karena itu, halaman besar transparan sedang dinonaktifkan setelah MariaDB sudah dimulai dan mesin TokuDB tidak akan menginisialisasi. Satu-satunya cara lain untuk menonaktifkan hugepages transparan adalah dengan menambahkantransparent_hugepage=never
ke parameter kernel.Saya perhatikan komentar @ 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.
dan menemukan bahwa CentOS tidak mendukung/etc/default/grub
file dan khawatir akantransparent_hugepage=never
menghilang dari parameter kernel ketika diperbarui. Tetapi tidak perlu khawatir, CentOS diatur untuk menjaga setiap perubahan yang dilakukan pada parameter kernel di grub sehingga ketika diperbarui mereka disimpan.Untuk menambahkan, cara yang tepat untuk memodifikasi parameter kernel untuk grub adalah dengan
grubby
. Saya membuat skrip sederhana ini untuk ditambahkantransparent_hugepage=never
ke setiap kernel dengangrubby
:sumber
etc/sysctl.conf
karena itu akan secara konsisten diterapkan pada Kernel yang mungkin pernah diinstal pada kotak.grub-mkconfig
sebagai 'root' untuk menghasilkan file konfigurasi aktual untuk grub./etc/default/grub.d/50-cloudimg-settings.cfg
file alih-alih/etc/default/grub
membuatnya berfungsi./etc/rc.local
tetapi tidak berfungsi untuk saya. Bisakah Anda jelaskan kasus root kepada saya./etc/rc.local is executed after all the services are started
jadi itu harus dinonaktifkan pada tingkat kernelBerikut ini adalah implementasi menggunakan boneka:
sumber
Semua hal di atas tidak berhasil bagi saya di EC2 Ubuntu 16.04, tetapi ini berhasil:
sumber
Karena garis kernel
transparent_hugepage=never
hanya menonaktifkan setengah dari apa yang saya butuhkan (baik, karena gagal mongodb mengganggu / log), bahwa saya tidak bertahan melaluisystemd
skrip startup tapi sekarang memiliki:echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
. Itu bekerja di salah satu skrip boot systemctl (bila dikonfigurasi dengan benar satu di/etc/systemd/system
) atau langsung dari cli apa adanya.sumber
Dalam kasus Redis, itu juga mengeluarkan peringatan yang menyarankan untuk menonaktifkan THP. Tetapi seperti yang disebutkan dalam laporan bug , pada banyak distro
/etc/rc.local
dieksekusi setelah layanan dan tidak berpengaruh pada mereka sampai mereka me-restart. Perhatikan juga bahwa di lingkungan tervirtualisasi (misalnya Digitalocean) Anda tidak dapat mengontrol pengaturan GRUB.Solusi dalam kasus ini adalah menggunakan skrip init khusus untuk menonaktifkan halaman besar transparan seperti halaman ini menyarankan, dengan pengaturan
X-Start-Before
. Misalnya, skrip init Debian untuk Redis:sumber
Berkat github & PyYoshi
saya menemukan contoh ini untuk systemd
Buat file
Masukkan ini ke dalam file layanan
Untuk pengguna debian / ubuntu
Kemudian aktifkan layanan
sumber
Jika Anda menemui masalah
bahkan dengan sudo, coba perintah di bawah ini:
sumber
Ini adalah hack cepat untuk Ansible (Saya tidak ingin mengelola template untuk
/etc/rc.local
):sumber
Dalam SLES11 SP3 dengan YAST dan GRUB bootloader kita harus menambahkan
transparent_hugepage=never
[YAST-bootloader-edit-line dengan parameter kernel opsional]. CATATAN: Alat ini mengubah file/boot/grub/menu.lst
.Hanya setelah melakukan perubahan dan reboot ini menghasilkan penonaktifan THP.
sumber
Berikut solusi boneka lain di Forge: https://forge.puppetlabs.com/ramseymcgrath/remove_hugepage/
Cukup gunakan:
dalam definisi simpul boneka Anda.
sumber