Red Hat Training
A Red Hat training course is available for RHEL 8
36.3. 起動時の HugeTLB の設定
HugeTLB サブシステムがサポートするページサイズは、アーキテクチャーによって異なります。x86_64 アーキテクチャーは、2 MB
の Huge Page および 1 GB
のギガンティックページをサポートします。
この手順では、システムの起動時に 1 GB
ページを予約する方法を説明します。
手順
1 GB
ページの HugeTLB プールを作成するには、default_hugepagesz=1G
およびhugepagesz=1G
カーネルオプションを有効にします。# grubby --update-kernel=ALL --args="default_hugepagesz=1G hugepagesz=1G"
/usr/lib/systemd/system/
ディレクトリーにhugetlb-gigantic-pages.service
という新しいファイルを作成し、以下の内容を追加します。[Unit] Description=HugeTLB Gigantic Pages Reservation DefaultDependencies=no Before=dev-hugepages.mount ConditionPathExists=/sys/devices/system/node ConditionKernelCommandLine=hugepagesz=1G [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/lib/systemd/hugetlb-reserve-pages.sh [Install] WantedBy=sysinit.target
/usr/lib/systemd/
ディレクトリーにhugetlb-reserve-pages.sh
という新しいファイルを作成し、以下の内容を追加します。以下の内容を追加する場合、number_of_pages を、予約する 1GB ページ数に置き換え、node を、これらのページを予約するノードの名前に置き換えます。
#!/bin/sh nodes_path=/sys/devices/system/node/ if [ ! -d $nodes_path ]; then echo "ERROR: $nodes_path does not exist" exit 1 fi reserve_pages() { echo $1 > $nodes_path/$2/hugepages/hugepages-1048576kB/nr_hugepages } reserve_pages number_of_pages node
たとえば、node0 で 2 つの
1 GB
ページ、node1 で 1GB のページを予約するには、number_of_pages を、node0 の場合は 2 に置き換え、node1 の場合は 1 に置き換えます。reserve_pages 2 node0 reserve_pages 1 node1
実行可能なスクリプトを作成します。
# chmod +x /usr/lib/systemd/hugetlb-reserve-pages.sh
初期のブート予約を有効にします。
# systemctl enable hugetlb-gigantic-pages
-
nr_hugepages
にいつでも書き込みを行い、ランタイム時に 1 GB を超えるページを予約できます。ただし、メモリーの断片化により、このような予約が失敗する可能性があります。1 GB
ページを予約する最も信頼できる方法は、システムの起動の初期段階で実行するこのhugetlb-reserve-pages.sh
スクリプトを使用することです。 - 静的 Huge Page を確保することで、システムで利用可能なメモリー量を効果的に減らすことができます。ただし、メモリーの全容量を適切に使用できなくなります。予約された Huge Page の適切なサイズプールは、これを使用するアプリケーションにとって有益になりますが、予約済み Huge Page の過度なサイズや未使用のプールは最終的にシステムパフォーマンス全体に悪影響を及ぼします。予約済みの Huge Page プールを設定する場合は、システムによってメモリーの最大容量を適切に利用できるようになります。
関連情報
-
systemd.service(5)
man ページ -
/usr/share/doc/kernel-doc-kernel_version/Documentation/vm/hugetlbpage.txt
file