LinuCレベル4 システムアーキテクト 性能・拡張性の設計 問26
性能・拡張性の設計/性能の改善LinuxサーバーのHugePages(大きなページサイズ)を有効化してデータベースのバッファプールに使う設計について、記述として誤っているものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「性能・拡張性の設計」に対応。実際の試験問題ではありません)
- AHugePagesを有効化すると、HugePagesに割り当てたメモリだけでなく、通常ページで管理されているOSのページキャッシュやその他のメモリ領域もスワップアウトされなくなる
- BHugePagesはTLBのエントリを節約できるため、大量のメモリを参照するデータベースや仮想化環境でページウォークのオーバーヘッドが下がる
- CTransparent HugePagesはカーネルが自動的に通常ページを大きなページへ統合する機能で、データベースなど自前でメモリ管理するアプリでは断片化やレイテンシスパイクの原因になることがある
- D静的HugePagesは/proc/sys/vm/nr_hugepagesで確保枚数を指定し、その領域はスワップ空間には使われない
正解:A
解説
HugePagesとしてロックされたメモリはスワップアウトされませんが、その効果はHugePagesとして確保された領域だけに限られます。通常ページで管理されているページキャッシュやその他のメモリはスワップの対象のままであり、HugePagesの有効化がすべてのメモリのスワップを停止させるわけではありません。TLBのエントリ節約効果、Transparent HugePagesのデータベースへの影響、静的HugePagesのスワップ非対象という特性はいずれも正しい記述です。
選択肢ごとの解説
- A正しい(誤っている記述)。スワップアウトされなくなるのはHugePages領域だけです。通常ページのページキャッシュ等は引き続きスワップの対象であり、HugePages有効化が全メモリをロックするわけではありません。
- B誤り(正しい記述)。HugePagesはTLBエントリを節約し、大量メモリを扱うデータベースや仮想化環境でページウォークのオーバーヘッドを低減できます。
- C誤り(正しい記述)。Transparent HugePagesはアプリの制御外でページ統合が起き、自前でメモリ管理するデータベースではレイテンシスパイクや断片化の問題を引き起こすことがあります。
- D誤り(正しい記述)。静的HugePagesの領域はカーネルが予約してロックしており、スワップには使われません。