第5章 メモリ
本章では、Red Hat Enterprise Linux で利用可能なメモリ管理機能の概要とこれらの機能を使ってシステムでメモリ使用率を最適化する方法を説明します。
5.1. Huge トランスレーションルックアサイドバッファ (HugeTLB)
物理メモリアドレスは、メモリ管理の一環として仮想メモリアドレスに変換されます。物理アドレスから仮想アドレスへのマッピング関係は、ページテーブルと呼ばれるデータ構造に保存されます。すべてのアドレスマッピングでページテーブルを読み取るのは時間がかかり、リソースを費やすことになるので、最近使用されたアドレスにはキャッシュがあります。このキャッシュは、トランスレーションルックアサイドバッファ (TLB) と呼ばれます。
しかし、TLB にキャッシュできるアドレスマッピングには限りがあります。要求されたアドレスマッピングが TLB にない場合、物理から仮想へのアドレスマッピングを決定するために依然としてページテーブルを読み取る必要があります。これは、「TLB ミス」と呼ばれます。メモリ要件の大きいアプリケーションは最低限のメモリ要件のアプリケーションよりも TLB ミスの影響を受ける可能性が大きくなります。これは、メモリ要件と TLB におけるキャッシュアドレスマッピングに使用されるページサイズの関係が理由です。各ミスにはページテーブルの読み取りが関わるため、可能な限りこれらのミスを避けることが重要です。
Huge トランスレーションルックアサイドバッファ (HugeTLB) は、非常に大きなセグメントでのメモリ管理を可能にすることで、一度にキャッシュ可能なアドレスマッピングを増やすことができます。こうすることで TLB ミスの確率が下がり、その結果、メモリ要件の大きいアプリケーションのパフォーマンスが改善します。
HugeTLB の設定に関する情報は、カーネルドキュメンテーション:
/usr/share/doc/kernel-doc-version/Documentation/vm/hugetlbpage.txt
を参照してください。