GNU/Linux >> Belajar Linux >  >> Linux

nonaktifkan halaman besar transparan

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:

$ sysctl -a

Contoh

$ sudo sysctl -a | head -5
kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 6000000
kernel.sched_latency_ns = 18000000
kernel.sched_wakeup_granularity_ns = 3000000
kernel.sched_shares_ratelimit = 750000

Anda dapat mencari hugepage dalam output seperti ini:

$ sudo sysctl -a | grep hugepage
vm.nr_hugepages = 0
vm.nr_hugepages_mempolicy = 0
vm.hugepages_treat_as_movable = 0
vm.nr_overcommit_hugepages = 0

Tidak ada?

Namun melihat melalui output saya tidak melihat transparent_hugepage . Googling sedikit lagi saya menemukan halaman Oracle ini yang membahas topik ini. Halaman tersebut berjudul:Mengonfigurasi HugePages untuk Oracle di Linux (x86-64).

Khususnya di halaman tersebut mereka menyebutkan cara menonaktifkan fitur hugepage.

kutipan

Metode yang disukai untuk menonaktifkan HugePages Transparan adalah menambahkan "transparent_hugepage=never" ke baris boot kernel di file "/etc/grub.conf".

   title Oracle Linux Server (2.6.39-400.24.1.el6uek.x86_64)
            root (hd0,0)
            kernel /vmlinuz-2.6.39-400.24.1.el6uek.x86_64 ro root=/dev/mapper/vg_ol6112-lv_root rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=uk
    LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16  rd_NO_DM rd_LVM_LV=vg_ol6112/lv_swap rd_LVM_LV=vg_ol6112/lv_root rhgb quiet numa=off
    transparent_hugepage=never
            initrd /initramfs-2.6.39-400.24.1.el6uek.x86_64.img

Server harus di-boot ulang agar ini berlaku.

Atau Anda dapat menambahkan perintah ke /etc/rc.local Anda berkas.

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
   echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
   echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

Saya pikir saya akan menggunakan opsi ke-2, karena yang pertama berisiko tidak disetel saat Anda memutakhirkan dari satu kernel ke kernel berikutnya.

Anda dapat mengonfirmasi bahwa ini berfungsi dengan perintah berikut setelah mem-boot ulang:

$ cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

Saya hanya ingin menambahkan pertanyaan ini karena saya mencoba untuk menonaktifkan halaman besar transparan di CentOS v6 untuk mengaktifkan TokuDB untuk MariaDB. Saya menambahkan skrip yang disebutkan oleh @slm ke /etc/rc.local dan itu menonaktifkan halaman besar transparan. Namun, karena cara kerja skrip startup di Linux, /etc/rc.local dijalankan setelah semua layanan dimulai. Oleh karena itu, halaman besar transparan dinonaktifkan setelah MariaDB sudah dimulai dan mesin TokuDB tidak dapat diinisialisasi. Satu-satunya cara lain untuk menonaktifkan halaman besar transparan adalah dengan menambahkan transparent_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 tentang transparent_hugepage=never menghilang dari parameter kernel ketika diperbarui. Tapi jangan khawatir, CentOS diatur untuk menyimpan setiap perubahan yang dibuat pada parameter kernel di grub sehingga ketika diperbarui, perubahan itu disimpan.

Sebagai tambahan, cara yang tepat untuk memodifikasi parameter kernel untuk grub adalah dengan grubby . Saya membuat skrip sederhana ini untuk menambahkan transparent_hugepage=never ke setiap kernel dengan grubby :

#!/bin/sh

if [[ $EUID -ne 0 ]]; then
   echo "This script must be run as root" 1>&2
   exit 1
fi

for KERNEL in /boot/vmlinuz-*; do
    grubby --update-kernel="$KERNEL" --args='transparent_hugepage=never'
done

Semua hal di atas tidak berfungsi untuk saya di EC2 Ubuntu 16.04, tetapi ini berhasil:

sudo apt install hugepages
sudo hugeadm --thp-never

Linux
  1. "Kepanikan kernel"?

  2. Linux – Kernel:Dukungan Namespaces?

  3. Linux – Penerusan Ip Kernel?

  1. Linux – Kernel Tercemar Di Linux?

  2. Nonaktifkan Ethernet Secara Permanen Untuk Mempercepat Waktu Booting?

  3. Bagaimana Cara Menonaktifkan SELinux di CentOS?

  1. Pelacakan kernel dengan trace-cmd

  2. CentOS / RHEL 7 :Cara menonaktifkan halaman Transparan Besar (THP)

  3. Bagaimana cara menonaktifkan pembuatan soket untuk proses Linux, untuk kotak pasir?