第15章 huge page を使用してワークロードのメモリー管理を最適化する
特定のワークロードのメモリー管理を最適化するには、huge page を設定します。これらの Linux ベースのシステムページサイズを使用することで、メモリー割り当てを手動で制御し、システムの自動動作を上書きすることができます。
15.1. Huge Page の機能 リンクのコピーリンクがクリップボードにコピーされました!
メモリーマッピングの効率を最適化するには、huge page の機能を理解する必要があります。標準的な 4Ki ブロックとは異なり、huge page はより大きなメモリーセグメントであり、変換ルックアサイドバッファー (TLB) ハードウェアキャッシュへのトラッキング負荷を軽減します。
メモリーは Page と呼ばれるブロックで管理されます。ほとんどのシステムでは、1 ページは 4 キロバイト (Ki) です。1 メガバイト (Mi) のメモリーは 256 ページに相当し、1 ギガバイト (Gi) のメモリーは 25 万 6000 ページに相当します。CPU には、内蔵のメモリー管理ユニットがあり、ハードウェアでこのようなページリストを管理します。トランスレーションルックアサイドバッファー (TLB) は、仮想ページと物理ページのマッピングを格納する小型のハードウェアキャッシュです。ハードウェアの指示で渡された仮想アドレスが TLB にあれば、マッピングをすばやく決定できます。そうでない場合には、TLB ミスが発生し、システムは速度が遅く、ソフトウェアベースのアドレス変換にフォールバックされ、パフォーマンスの問題が発生します。TLB のサイズは固定されているので、TLB ミスの発生率を減らすには Page サイズを大きくする必要があります。
Huge Page とは、4Ki より大きいメモリーページのことです。x86_64 アーキテクチャーでは、2Mi と 1Gi の 2 つが一般的な Huge Page サイズです。別のアーキテクチャーではサイズは異なります。Huge Page を使用するには、アプリケーションが認識できるようにコードを書き込む必要があります。transparent huge page (THP) は、アプリケーションの知識なしに huge page の管理を自動化しようとするものですが、限界があります。特に、ページサイズは 2Mi に制限されます。THP は、メモリー使用率が高いノードやメモリー断片化が進んでいるノードでは、メモリーページをロックする可能性があるため、パフォーマンスの低下につながる可能性があります。このため、一部のアプリケーションでは、THP の代わりに事前割り当てられた huge page を使用するように設計されているか、または推奨されている場合があります。
OpenShift Container Platform では、Pod のアプリケーションが事前に割り当てられた Huge Page を割り当て、消費することができます。