AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

THP(Transparent Huge Pages)の無効化

Transparent Huge Pages(THP)は、より大きなメモリ ページを使用することで、大容量のメモリを搭載したマシン上の Translation Lookaside Buffer(TLB)検索のオーバーヘッドを削減する Linux メモリ管理システムです。

ただし、データベース ワークロードは連続したメモリ アクセス パターンではなく、散在したメモリ アクセス パターンになる傾向があるため、THP を有効にするとパフォーマンスが低下することがよくあります。Linux 上で MongoDB を実行する場合、最高のパフォーマンスを得るために THP を無効にする必要があります。

mongod が起動する前に THP が無効になっていることを確認するには、起動時に THP を無効にするプラットフォームの初期化システム用のサービス ファイルを作成する必要があります。systemd および System V init 初期化システムの手順を以下に示します。

Additionally, for RHEL / CentOS systems that make use of ktune and tuned performance profiles, you must create a custom tuned profile as well.

THP を無効にするサービス ファイルを作成するには、プラットフォームに組み込まれている初期化システムを使用します。最近のバージョンの Linux では systemdsystemctl コマンドを使用)が使用される傾向があり、古いバージョンの Linux ではSystem V initservice コマンドを使用)が使用される傾向があります。詳細については、オペレーティング システムのドキュメントを参照してください。

お使いのプラットフォームに適した初期化システムを使用してください。

1

次のファイルを作成し、 /etc/systemd/system/disable-transparent-huge-pages.serviceに保存します。

[Unit]
Description=Disable Transparent Hugepages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=mongod.service
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo never | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null'
[Install]
WantedBy=basic.target

注意

Red Hat Enterprise Linux の一部のバージョン、およびその他の Red Hat ベースの派生製品では、THP enabled ファイルに異なるパスが使用されます。

/sys/kernel/mm/redhat_transparent_hugepage/enabled

システムでどのパスが使用されているかを確認し、それに応じてdisable-transparent-huge-pages.serviceファイルを更新します。

2

systemdユニット ファイルを再読み込みし、 disable-transparent-huge-pages.serviceを使用できるようにするには、次のコマンド を実行します。

sudo systemctl daemon-reload
3

実行:

sudo systemctl start disable-transparent-huge-pages

関連する THP 設定が変更されたことを確認するには、次のコマンドを実行します。

cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag

Red Hat Enterprise Linux およびその他の Red Hat ベースの派生物では、代わりに以下を使用する必要があります。

cat /sys/kernel/mm/redhat_transparent_hugepage/enabled && cat /sys/kernel/mm/redhat_transparent_hugepage/defrag

出力は、次のようになります。

never
never
4

オペレーティング システムを起動するたびにこの設定が適用されるようにするには、以下のコマンドを実行します。

sudo systemctl enable disable-transparent-huge-pages
5

If you use tuned or ktune profiles on RHEL/ CentOS, you must also create a custom tuned profile.

1

次のファイルを作成し、 /etc/init.d/disable-transparent-hugepagesに保存します。

#!/bin/bash
### BEGIN INIT INFO
# Provides: disable-transparent-hugepages
# Required-Start: $local_fs
# Required-Stop:
# X-Start-Before: mongod mongodb-mms-automation-agent
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Disable Linux Transparent Hugepages
# Description: Disable Linux Transparent Hugepages, to improve
# database performance.
### END INIT INFO
case $1 in
start)
if [ -d /sys/kernel/mm/transparent_hugepage ]; then
thp_path=/sys/kernel/mm/transparent_hugepage
elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then
thp_path=/sys/kernel/mm/redhat_transparent_hugepage
else
return 0
fi
echo 'never' | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null && echo 'never' | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null
unset thp_path
;;
esac
2

実行:

sudo chmod 755 /etc/init.d/disable-transparent-hugepages
3

実行:

sudo /etc/init.d/disable-transparent-hugepages start

関連する THP 設定が変更されたことを確認するには、次のコマンドを実行します。

cat /sys/kernel/mm/transparent_hugepage/enabled && cat /sys/kernel/mm/transparent_hugepage/defrag

Red Hat Enterprise Linux およびその他の Red Hat ベースの派生物では、代わりに以下を使用する必要があります。

cat /sys/kernel/mm/redhat_transparent_hugepage/enabled && cat /sys/kernel/mm/redhat_transparent_hugepage/defrag

出力は、次のようになります。

never
never
4

オペレーティング システムが起動するたびにこの設定が適用されるようにするには、Linux ディストリビューションに対して次のコマンドを実行します。

ディストリビューション
コマンド

Ubuntu と Debian

sudo update-rc.d disable-transparent-hugepages defaults

SUSE

sudo insserv /etc/init.d/disable-transparent-hugepages

Red Hat、CentOS、Amazon Linux、および派生製品

sudo chkconfig --add disable-transparent-hugepages
5

If you are using tuned or ktune profiles on RHEL/ CentOS, you must also create a custom tuned profile.

重要

tuned または ktune を使用する場合は、上記のサービス ファイルを作成した後、このセクションの手順も実行する必要があります。

tuned and ktune are dynamic kernel tuning tools that can affect the transparent huge pages setting on your system. If you are using tuned / ktune on your RHEL / CentOS system while running mongod, you must create a custom tuned profile to ensure that THP remains disabled.

1

関連するディレクトリをコピーして、既存のプロファイルから新しいプロファイルを作成します。この例では、virtual-guest プロファイルをベースとして使用し、virtual-guest-no-thp を新しいプロファイルとして使用します。

sudo cp -r /etc/tune-profiles/virtual-guest /etc/tune-profiles/virtual-guest-no-thp
2

/etc/tune-profiles/virtual-guest-no-thp/ktune.sh を編集し、set_transparent_hugepages の設定を以下のように変更します。

set_transparent_hugepages never
3

新しいプロファイルを有効にします。

sudo tuned-adm profile virtual-guest-no-thp
1

カスタム tuned プロファイルを保持するための新しいディレクトリを作成します。この例では、既存の virtual-guest プロファイルを継承し、新しいプロファイルとして virtual-guest-no-thp を使用しています。

sudo mkdir /etc/tuned/virtual-guest-no-thp
2

/etc/tuned/virtual-guest-no-thp/tuned.conf を作成して編集し、以下の内容を含むようにします。

[main]
include=virtual-guest
[vm]
transparent_hugepages=never

この例は、既存の virtual-guest プロファイルを継承しています。システムに最も適したプロファイルを選択します。

3

新しいプロファイルを有効にします。

sudo tuned-adm profile virtual-guest-no-thp