2011/11/09のOracle DBA & Developer Days 2011のE-5セッション
シバタツ流!チューニングの極意「パフォーマンス・チューニングの勘どころ」でも
シバタツさんが説明されていたので、ちょうど前日検証していたところもあり、
書いておきたいと思います。
■HugePages
Linuxカーネル2.6に統合された機能です。これは大きいページを使用する方法で、
大規模メモリーで作業する際に便利です。
32ビットおよび64ビット構成の両方で使用できます。HugePageサイズは、
カーネル・バージョンおよびハードウェア・アーキテクチャに応じて、
2MBから256MBと異なります。
Oracle Databaseの場合、HugePagesを使用すると、
ページ状態のオペレーティング・システム・メンテナンスが軽減され、
Translation Lookaside Buffer(TLB)ヒット率が向上します。
■なぜ大規模メモリにHugePagesなのか?
HugePagesを使用しない場合、1ページ当たり4KBのメモリーがオペレーティング・システムに
保持され、SGAに割り当てられる際に、
ページのライフサイクル(ダーティ、空き、プロセスにマップ済など)が
オペレーティング・システム・カーネルによって最新に保たれます。
HugePagesを使用する場合、各ページ表エントリが2MBから256MBのページを指すため、
オペレーティング・システム・ページ表(仮想メモリーから物理メモリーへのマッピング)は
小さくなります。
また、カーネルでは、ライフサイクルを監視する必要があるページが少なくなります。
⇒Oracleが何を言いたいかと言うと、大きな物理メモリを積んでいるようなマシンで、
Oracleに割り当てるでっかいメモリ領域(SGA)を4KB単位とのページを
OSが管理するのは負荷(CPU負荷)が高いんです。
なので、1ページが大きいHugePagesを使用した方がOSの管理負荷(CPU負荷)が
低減されてよいんです。と言っているんだと思う。
また、HugePagesを使うと以下のメリットがあります。
1.TLBヒットが増加することによってパフォーマンスが向上します。
2.ページがメモリー内でロックされ、スワップ・アウトされないため、
SGAのような共有メモリーがRAMに残ります。
3.連続するページを事前に割り当てるため、
System V共有メモリー(SGAなど)以外に使用できなくなります。
4.より大きなページ・サイズによる仮想メモリーの部分のため、カーネル用の記録操作が
削減されます。
⇒2.がポイントかしら。要は、SGAをメモリ上にロックできるんですね。
それにより、スワップ・イン/スワップ・アウトを食らわなくてすむ。
SGAの情報は常にRAM上にキャッシュできる。
(そもそも、キャッシュ上のデータ管理はSGAのLRUがあるし。)
⇒OSのページ管理による負荷(CPU負荷)を軽減できる。
なお、大規模メモリ環境におけるOSのページ管理による負荷(CPU負荷)は
MOSでも障害として取り上げられています。
[ID 361670.1]Slow Performance with High CPU Usage on 64-bit Linux with Large SGA
大規模メモリ&大規模SGAを積んでる環境で、なんかSYSTEM CPU負荷が高いんだけど。。。
という環境は確認&検討してみるといいかもですね。
※大規模メモリ:シバタツさんのセミナーでは32GBが目安とご説明されていました。
ちなみに、HugePagesはmemory_targetでは使えないので注意が必要。
でも、それは次回のHugepagesとその設定_2で。。。
出典:Oracle® Database管理者リファレンス 11g リリース2(11.2)
for Linux and UNIX-Based Operating Systems
0 件のコメント:
コメントを投稿