透明な巨大ページを動的に無効にできますか?

透明な巨大ページを動的に無効にできますか?

無効にする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上記のように本当に即時ですかdisabledTHP

注 - 一般的な機械の追加情報があります。

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

上記の手順1で実際にTHPはすぐに無効になりますか?

はい、あなたがするすべての事はsysfsすぐに完了します。カーネル文書に文書化されています/transhuge.html

しかし、、引用https://access.redhat.com/solutions/46111

メモ:上記のコマンドを実行すると、新しいTHPの作成と使用のみが停止されます。上記のコマンドを実行したときに生成され使用されたTHPは、通常のメモリページに分解されません。 THPを完全に削除するには、システムを再起動し、起動時にTHPを無効にする必要があります。

一つある郵便はがきあなたと同じ問題です。そこ、ub3rst4r/etc/rc.localすべてのサービスが開始された後に実行されるため、これは彼のユースケースでは機能しないと説明します。

したがって、同じカーネル文書に記載されている公式の方法に従うことをお勧めします。transhuge.html

...transparent_hugepage=never パラメータをカーネルコマンドラインに渡すことで、透明な hugepage サポートの sysfs 起動時間のデフォルト値を変更できます。

もちろん/etc/default/grub。また、再起動後のテストをお勧めします

grep AnonHugePages /proc/meminfo
AnonHugePages:         0 kB

正しく無効にすると、0の値が得られます。

おすすめ記事