Le Transparent Huge Pages (THP) sono abilitate per impostazione predefinita in RHEL 6 per tutte le applicazioni. Il kernel tenterà sempre di soddisfare un'allocazione di memoria usando hugepages. Se non sono disponibili pagine enormi (a causa della non disponibilità di memoria continua fisica, ad esempio), il kernel tornerà alle normali pagine da 4 KB.
Pagine enormi esplicite V/s Pagine enormi trasparenti
Possono esserci due tipi di HugePages nel sistema:Explicit Huge Pages che sono allocati esplicitamente dal parametro sysctl vm.nr_hugepages e Pagine enormi trasparenti che vengono allocati automaticamente dal kernel.
Verifica se THP è abilitato
"tuned.service" su CentOS / RHEL 7 imposta transparent_hugepage su sempre per impostazione predefinita. Anche se è disabilitato nella riga di comando del kernel grub, il servizio ottimizzato lo imposterà su "sempre ' durante l'avvio. Il file /sys/kernel/mm/redhat_transparent_hugepage/enabled fornisce lo stato attuale di THP (abilitato/disabilitato). I valori per /sys/kernel/mm/redhat_transparent_hugepage/enabled possono essere uno dei seguenti:
always - always use THP never - disable THP
Sotto l'output del comando conferma che i THP sono abilitati o disabilitati sul sistema.
Uscita quando THP è abilitato
# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
Uscita quando THP è disattivato
# cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]
1. Per disabilitare THP all'avvio
1. Aggiungi il parametro transparent_hugepage=never alla riga di comando del kernel in /etc/grub.conf:
# vim /etc/grub.conf default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux 6 (2.6.32-504.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg_os-lv_os rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_os/lv_os KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet transparent_hugepage=never initrd /initramfs-2.6.32-504.el6.x86_64.img
2. Aggiungi un piccolo script riportato di seguito al file /etc/rc.d/rc.local .
# vi /etc/rc.d/rc.local .... 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
3. Riavvia il sistema per rendere effettive le modifiche.
# shutdown -r now
2. Per disabilitare THP in fase di esecuzione
Esegui i seguenti comandi per disabilitare THP senza riavviare il sistema.
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled # echo never > /sys/kernel/mm/redhat_transparent_hugepage/defragNota :L'esecuzione dei comandi precedenti interromperà solo la creazione e l'utilizzo del nuovo THP. Il THP che è stato creato e utilizzato nel momento in cui sono stati eseguiti i comandi di cui sopra non sarebbe stato disassemblato nelle normali pagine di memoria. Per eliminare completamente THP, il sistema deve essere riavviato con THP disabilitato all'avvio.
Risoluzione dei problemi
Se Transparent Huge Pages (THP) non è ancora disabilitato, continua e utilizza una delle opzioni seguenti.
1. Disattiva i servizi Tuned/ktune
1. Disattiva i servizi sintonizzati se sta riabilitando il THP utilizzando uno dei comandi seguenti.
# service tuned stop # chkconfig tuned off # service ktune stop # chkconfig ktune off
O
# tuned-adm offNota :il comando tuning-adm ripristinerà tutte le impostazioni a quelle che erano prima dell'avvio di tuning e disabiliterà l'esecuzione dei servizi di ottimizzazione all'avvio.
2. Verifica che ktune e i servizi sintonizzati siano disabilitati per l'avvio all'avvio:
# chkconfig --list |egrep -i "ktune|tuned" ktune 0:off 1:off 2:off 3:off 4:off 5:off 6:off tuned 0:off 1:off 2:off 3:off 4:off 5:off 6:off
2. Crea un profilo ottimizzato personalizzato con THP disabilitato
1. Creeremo una versione personalizzata del profilo attualmente in esecuzione. La versione personalizzata disabiliterà THP. Scopri quale profilo è attivo, creane una copia. Nell'esempio seguente utilizziamo attualmente il profilo di prestazioni di throughput:
# tuned-adm active Current active profile: throughput-performance Service tuned: enabled, running Service ktune: enabled, running
2. Creare un profilo duplicato dal profilo esistente. Useremo il nuovo profilo per disabilitare il THP. Per fare ciò copia tutto il contenuto dalla directory del profilo corrente alla directory del profilo appena creata.
# cd /etc/tune-profiles/ # cp -r /etc/tune-profiles/throughput-performance /etc/tune-profiles/nothp_profile
3. Disabiliteremo ora THP nel nuovo profilo e attiveremo il nuovo profilo. Modifica la riga mostrata di seguito:
Da :
# vi /etc/tune-profiles/nothp_profile/ktune.sh set_transparent_hugepages always
A :
# vi /etc/tune-profiles/nothp_profile/ktune.sh set_transparent_hugepages never
4. Attiva il nuovo profilo per rendere effettive le modifiche.
# tuned-adm profile nothp_profile
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled always [never]CentOS / RHEL 7:come disabilitare le pagine trasparenti enormi (THP)