GNU/Linux >> Linux Esercitazione >  >> Linux

disabilita le pagine enormi trasparenti

Per rendere permanenti opzioni come questa, generalmente le aggiungi al file /etc/sysctl.conf . Puoi vedere un elenco completo delle opzioni disponibili usando questo comando:

$ sysctl -a

Esempio

$ 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

Puoi cercare hugepage nell'output in questo modo:

$ 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

Non c'è?

Tuttavia, guardando l'output non ho visto transparent_hugepage . Cercando ancora un po' su Google mi sono imbattuto in questa pagina Oracle che tratta proprio questo argomento. La pagina è intitolata:Configurazione di HugePages per Oracle su Linux (x86-64).

Nello specifico in quella pagina menzionano come disabilitare la funzione hugepage.

estratto

Il metodo preferito per disabilitare Transparent HugePages è aggiungere "transparent_hugepage=never" alla riga di avvio del kernel nel 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

Il server deve essere riavviato affinché ciò abbia effetto.

In alternativa puoi aggiungere il comando al tuo /etc/rc.local file.

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

Penso che sceglierei la seconda opzione, dato che la prima rischia di essere annullata quando aggiorni da un kernel all'altro.

Puoi confermare che ha funzionato con il seguente comando dopo il riavvio:

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

Volevo solo aggiungere a questa domanda mentre stavo cercando di disabilitare le enormi pagine trasparenti su CentOS v6 per abilitare TokuDB per MariaDB. Ho aggiunto lo script menzionato da @slm a /etc/rc.local e ha disabilitato le pagine enormi trasparenti. Tuttavia, a causa del modo in cui gli script di avvio funzionano in Linux, /etc/rc.local viene eseguito dopo l'avvio di tutti i servizi. Pertanto, le pagine enormi trasparenti venivano disabilitate dopo che MariaDB era già stato avviato e il motore TokuDB non si inizializzava. L'unico altro modo per disabilitare le hugepage trasparenti è aggiungere transparent_hugepage=never al parametro del kernel.

Ho notato il commento di @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. e ho scoperto che CentOS non supporta /etc/default/grub ed ero preoccupato per transparent_hugepage=never scomparendo dai parametri del kernel quando viene aggiornato. Ma non preoccuparti, CentOS è configurato per mantenere tutte le modifiche apportate ai parametri del kernel in grub, quindi quando viene aggiornato vengono mantenute.

Inoltre, il modo corretto per modificare i parametri del kernel per grub è con grubby . Ho creato questo semplice script per aggiungere transparent_hugepage=never a ciascun kernel con 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

Tutto quanto sopra non ha funzionato per me su un EC2 Ubuntu 16.04, ma questo ha funzionato:

sudo apt install hugepages
sudo hugeadm --thp-never

Linux
  1. Un "panico del kernel"?

  2. Linux – Inoltro IP del kernel?

  3. Linux:un kernel contaminato in Linux?

  4. Come disabilitare SELinux su CentOS?

  5. CentOS / RHEL 7:come disabilitare le pagine trasparenti enormi (THP)

Comando Dmesg in Linux

Comando Sysctl in Linux

Linux è un sistema operativo o un kernel?

Kernel Linux vs. Kernel Mac

Disabilitare Ethernet in modo permanente per accelerare il tempo di avvio?

Disabilita la modalità di manutenzione in Magento