Linux
禁用透明大頁面
我們在RAID機器上安裝 SAP HANA。作為安裝步驟的一部分,有人提到,
To disable the usage of transparent hugepages set the kernel settings at runtime with echo never > /sys/kernel/mm/transparent_hugepage/enabled
因此,如果我想讓它成為永久更改,而不是執行時,我應該在
/proc/vmstat
文件中添加上面的行嗎?
要使諸如此類的選項永久存在,您通常會將它們添加到文件
/etc/sysctl.conf
中。您可以使用此命令查看可用選項的完整列表:$ sysctl -a
例子
$ 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
您可以
hugepage
像這樣在輸出中查找:$ 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
它不在那裡嗎?
但是查看輸出我沒有看到
transparent_hugepage
。Google搜尋了一下,我確實遇到了這個討論這個主題的 Oracle 頁面。該頁面的標題為:在 Linux (x86-64) 上為 Oracle 配置 HugePages。特別是在該頁面上,他們提到瞭如何禁用大頁面功能。
摘抄
禁用透明 HugePages 的首選方法是將“transparent_hugepage=never”添加到“/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
必須重新啟動伺服器才能使其生效。
或者,您可以將命令添加到
/etc/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
我想我會選擇第二個選項,因為當您從一個核心升級到下一個核心時,第一個選項將面臨未設置的風險。
您可以在重新啟動後確認它與以下命令一起工作:
$ cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]