Linux
是否可以動態禁用透明大頁面?
為了禁用
THP
我們在所有 635
RHEL
台機器上做了以下操作(我們有rhel 7.5
版本)這些行來自我們在所有機器上執行的 bash 腳本
第1步
[[ -f /sys/kernel/mm/transparent_hugepage/enabled ]] && echo never > /sys/kernel/mm/transparent_hugepage/enabled [[ -f /sys/kernel/mm/transparent_hugepage/defrag ]] && echo never > /sys/kernel/mm/transparent_hugepage/defrag
確認:
cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never] cat /sys/kernel/mm/transparent_hugepage/defrag always madvise [never]
但眾所周知,機器時不考慮這些步驟
restarted/rebooted
第2步
所以我們也這樣做了,我們將以下行添加到
/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
問題是:
step 1
正如我上面提到的那樣真的disabled
是THP
在飛行中嗎?注意 - 還有來自一台典型機器的其他資訊
sysctl -a | grep hugepage vm.hugepages_treat_as_movable = 0 vm.nr_hugepages = 0 vm.nr_hugepages_mempolicy = 0 vm.nr_overcommit_hugepages = 0
參考 -配置透明大頁面。
我上面提到的第 1 步真的會即時禁用 THP 嗎?
是的,您所做的任何事情
sysfs
都是即時完成的。它已經記錄在核心文件/ transhuge.html 中但是,引用自https://access.redhat.com/solutions/46111
**注意:**執行上述命令將僅停止新 THP 的創建和使用。在執行上述命令時創建和使用的 THP 不會被反彙編為正常記憶體頁面。要完全擺脫 THP,應在啟動時禁用 THP 重新啟動系統。
有一個文章有你同樣的問題。在那裡,ub3rst4r解釋說這
/etc/rc.local
不適用於他的案例,因為它是在所有服務啟動後執行的因此,我強烈建議遵循同一個核心文件/ transhuge.html中提到的官方方式
您可以通過將參數 … transparent_hugepage=never 傳遞給核心命令行來更改透明大頁面支持的 sysfs 引導時間預設值。
您當然可以使用
/etc/default/grub
. 另外,我建議在重啟後進行測試grep AnonHugePages /proc/meminfo AnonHugePages: 0 kB
如果正確禁用它,您應該得到一個值 0。