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

自己管理型配置での THP(Transparent Huge Pages)の無効化

重要

MongoDB 8.0で TCMalloc をアップグレードしました

MongoDB 8.0以降、 MongoDBは TCMalloc のアップグレード バージョンを使用しており、Transparent Huge Page を有効にするとパフォーマンスが向上します。 MongoDB 8.0以降を使用している場合は、 「Transparent Huge Page(THP)の有効化」 を参照してください。

Transparent Huge Pages(THP)は、TLB(TransparentLookaideになります。)の検索のオーバーヘッドを削減するLinuxメモリ管理システムです。 THP は、小さなページを結合し、アプリケーションに対してより大きなメモリページとして表示されるようにすることで、これを実現します。

LinuxでMongoDB 7.0またはそれ以前のバージョンを実行中する場合、最高のパフォーマンスを得るために THP を無効にする必要があります。 MongoDBの以前のバージョンでは、データベースワークロードは非連続的なメモリ アクセス パターンを使用することが多いため、THP を有効にするとパフォーマンスが低下することがよくありました。

注意

THP はシステム レベルで動作するため、システムの下のすべてのプロセスに適用されます。プロセスごとのレベルで THP を有効または無効にすることはできません。

mongodが起動する前に THP が無効になっていることを確認するには、起動時に THP を無効にするオペレーティング システム用のサービスファイルを作成します。 次の手順には、 systemdおよびSystem V init初期化システムの例が含まれています。

さらに、 ktunetunedパフォーマンス プロファイルを使用するRHELおよびCentOSシステムでは、カスタムtunedプロファイルも作成する必要があります。

THP を無効にするサービスファイルを作成するには、オペレーティング システムに組み込まれている初期化システムを使用します。 最近のバージョンのLinux通常、 systemctlコマンドが使用されるsystemdが使用されます。 古いバージョンのLinuxserviceコマンドを使用するSystem V initが使用されます。 詳細については、ご使用のオペレーティング システムのドキュメントを参照してください。

お使いのオペレーティング システム用の初期化システムを使用します。

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

RHEL / CentOS でtunedまたはktuneプロファイルを使用する場合は、カスタムtunedプロファイルも作成する必要があります。

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

RHEL / CentOS でtunedまたはktuneプロファイルを使用している場合は、カスタムtunedプロファイルも作成する必要があります。

重要

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

tunedktune は、システムの THP(Transparent Huge Pages)設定に影響する可能性のあるカーネル チューニング ユーティリティです。mongod を実行中にRHEL または CentOS システムでtuned またはktune を使用する場合は、THP が無効のままになるようにカスタム tuned プロファイルを作成する必要があります。

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