はじめに
この実験では、Linux システムでカーネルのヒュージページが有効になっているか、構成されているかを確認する方法を学びます。ヒュージページは、より大きなメモリページを使用することで、メモリを大量に消費するアプリケーションのパフォーマンスを向上させることができるカーネル機能です。
一連の実践的な手順を通じて、ヒュージページの設定を検証するさまざまな方法を探索します。まず、/proc/meminfo ファイルを調べて、現在のヒュージページの統計情報(合計、空き、予約済みのヒュージページ、およびヒュージページのサイズを含む)を表示します。次に、sysctl コマンドを使用して、vm.nr_hugepages カーネルパラメータを確認します。このパラメータは、希望するヒュージページの数を示します。最後に、/sys/kernel/mm ディレクトリを調べて、カーネルのメモリ管理サブシステム内のヒュージページの構成についてさらに詳しく理解します。これらの手順を完了することで、Linux システムでのヒュージページの状態を判断する方法をしっかりと理解することができます。
/proc/meminfo でヒュージページを確認する
このステップでは、Linux システムで現在のヒュージページの設定を確認する方法を説明します。ヒュージページは Linux カーネルの機能で、システムがデフォルトの 4KB よりも大きなメモリページを使用できるようにします。これにより、データベースや仮想化ソフトウェアなど、大量のメモリを使用するアプリケーションのパフォーマンスを向上させることができます。
ヒュージページに関する情報は /proc/meminfo ファイルに記載されています。このファイルには、システムの様々なメモリ関連の統計情報が含まれています。
まだターミナルを開いていない場合は、開いてください。デスクトップの左側にある Xfce Terminal アイコンをクリックすることで開くことができます。
では、cat コマンドを使用して /proc/meminfo の内容を表示しましょう。cat コマンドは、ファイルの内容を表示するために使用されます。
ターミナルに以下のコマンドを入力し、Enter キーを押してください。
cat /proc/meminfo
このコマンドを実行すると、/proc/meminfo ファイルの全内容がターミナルに表示されます。システムのメモリに関する多くの情報が表示されます。
具体的にヒュージページに関する情報を探すには、grep コマンドを使用して cat の出力をフィルタリングすることができます。grep コマンドは、特定のパターンに一致する行を検索します。
以下のコマンドを入力し、Enter キーを押してください。
cat /proc/meminfo | grep HugePages
| 記号はパイプと呼ばれ、左側のコマンド (cat /proc/meminfo) の出力を受け取り、右側のコマンド (grep HugePages) の入力として渡します。これにより、grep は cat の出力内でのみ検索を行います。
以下のような行が表示されるはずです(正確な数値は異なる場合があります)。
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
これらの行の意味を解説しましょう。
HugePages_Total: システムで構成されているヒュージページの総数。HugePages_Free: 現在使用可能な空きヒュージページの数。HugePages_Rsvd: 将来の使用のために予約されているヒュージページの数。HugePages_Surp:vm.nr_hugepages設定を超えたヒュージページの数(次のステップで説明します)。Hugepagesize: 各ヒュージページのサイズ。ほとんどのシステムでは 2048 kB (2MB) です。
この環境では、デフォルトでヒュージページの総数が 0 に設定されている可能性が高く、これは汎用システムで一般的な設定です。
Continue をクリックして次のステップに進んでください。
sysctl vm.nr_hugepages でヒュージページ設定を検証する
前のステップでは、現在のヒュージページの使用状況を確認するために /proc/meminfo を調べました。今度は、sysctl コマンドを使用して、ヒュージページの総数を制御するカーネルパラメータを確認しましょう。
sysctl コマンドは、実行時にカーネルパラメータを表示および変更するために使用されます。カーネルパラメータは、Linux カーネルの動作に影響を与える設定です。
私たちが関心を持っている特定のパラメータは vm.nr_hugepages です。このパラメータは、カーネルが予約すべきヒュージページの総数を決定します。
ターミナルに以下のコマンドを入力し、Enter キーを押してください。
sysctl vm.nr_hugepages
このコマンドを実行すると、vm.nr_hugepages カーネルパラメータの現在の値が表示されます。
以下のような出力が表示されるはずです。
vm.nr_hugepages = 0
この出力は、ヒュージページの総数の現在の設定が 0 であることを確認しています。これは、/proc/meminfo で HugePages_Total が 0 であったことと一致しています。
sysctl コマンドは、カーネルの動作の多くの側面を調査および変更するための強力なツールです。ここでは vm.nr_hugepages のみを見ていますが、sysctl -a を使用して他の多くのパラメータを探索することができます。
vm.nr_hugepages のようなカーネルパラメータを理解することは、特定のワークロードに対するシステムパフォーマンスを調整するために重要です。
Continue をクリックして次のステップに進んでください。
/sys/kernel/mm のヒュージページ設定を確認する
この最後のステップでは、ヒュージページの設定情報が格納されている別の場所、/sys ファイルシステムを調べます。/sys ファイルシステムは、カーネルのデータ構造にアクセスするためのインターフェースを提供し、カーネルオブジェクトの調査や、場合によっては変更を可能にします。
ヒュージページに関連する情報は、/sys/kernel/mm/transparent_hugepage の下にあります。透過的ヒュージページ (Transparent Hugepages, THP) は、アプリケーションから明示的な設定を必要とせずに自動的にヒュージページを使用しようとする機能です。
cd コマンドを使用してこのディレクトリに移動しましょう。cd は "change directory" の略です。
以下のコマンドを入力し、Enter キーを押してください。
cd /sys/kernel/mm/transparent_hugepage
/sys/kernel/mm/transparent_hugepage ディレクトリに移動したので、ls コマンドを使用してこのディレクトリ内のファイルを一覧表示しましょう。ls コマンドは、ディレクトリの内容を一覧表示します。
以下のコマンドを入力し、Enter キーを押してください。
ls
以下のような出力が表示されるはずです。
defrag enabled khugepaged numa_defrag shmem_enabled split_huge_pmd_size split_huge_pte_size
これらのファイルは、透過的ヒュージページのさまざまな設定オプションと状態インジケータを表しています。
cat コマンドを使用して enabled ファイルの内容を見てみましょう。このファイルは、透過的ヒュージページが有効、無効、または 'madvise' モード (アプリケーションがカーネルにヒュージページの使用方法をアドバイスできるモード) のいずれであるかを示します。
以下のコマンドを入力し、Enter キーを押してください。
cat enabled
以下のような出力が表示されるはずです。
[always] madvise never
この出力は現在の設定を示しています。[always] は、すべてのマッピングに対して THP が現在有効になっていることを意味します。
次に、defrag ファイルを見てみましょう。このファイルは、カーネルがメモリの断片整理を試みてヒュージページを利用可能にするかどうかを制御します。
以下のコマンドを入力し、Enter キーを押してください。
cat defrag
以下のような出力が表示されるはずです。
[always] defer defer+madvise madvise never
再び、[always] は、THP に関連するメモリ断片整理の現在の設定を示しています。
/sys ファイルシステムは、カーネルの内部状態と設定を理解するための貴重なリソースです。/sys/kernel/mm のようなディレクトリを調査することで、メモリ管理に関する深い洞察を得ることができます。
これで、/proc/meminfo、sysctl、/sys ファイルシステムの 3 つの異なる方法を使用してヒュージページの情報を調査することに成功しました。
Continue をクリックして、実験を完了してください。
まとめ
この実験では、Linux システムでカーネルのヒュージページが有効になっているか、設定されているかを確認する方法を学びました。これを達成するために 3 つの方法を調べました。まず、cat と grep を使用して /proc/meminfo ファイルを調べ、HugePages_Total、HugePages_Free、Hugepagesize などの重要なヒュージページ統計情報を表示しました。
次に、通常は sysctl vm.nr_hugepages を使用してヒュージページの設定を検証し、/sys/kernel/mm ディレクトリ内のヒュージページ設定を調べますが、これらの方法の詳細な手順は提供された内容では完全には記載されていません。これらの手順はまとめて、Linux システム上のヒュージページの現在の状態と設定を判断する方法を示しています。



