2011年11月13日日曜日

HugePagesとその設定_8

前回はこちら:Hugepagesとその設定_7

まぁ、よくもHugepagesだけでダラダラ8回も書いたものです。。
小生なりのまとめです。(この回だけ書きゃいいじゃん。という感じです。。。)

1.HugePagesって?
 Linuxカーネル2.4から使用できる1ページのサイズが大きいページ。
 Oracleでは、9.2.0.1以降のリリースから使えるよ。


2.HugePagesのメリットデメリット、注意点
1)メリット
 ・OSの仮想メモリの管理負荷が低減する
  -とても大きいサイズのSGA環境において、デフォルトのスモールページ4KBによる
   ページ管理では、メモリの管理負荷が高い。
 ・ページをメモリー内にロックでき、スワップ・アウトをさせない。
  -SGAのような共有メモリーがRAMに残ります。

2)デメリット
 ・Oracleの自動メモリ管理機能(AMM≒memory_target)が使用できなくなる。

3)注意点
 ・HugePagesを設定することにより、物理メモリをHugePagesとして取得(予約)する。
  あまりに大きいサイズを設定すると、他のプロセスで使用できるメモリ量が減少することや
  予約してるが使用していないなどの無駄使いには注意が必要。
 ・HugePagesを使用するのSGA領域。
  PGAやサーバプロセスなどは通常メモリ領域から取得される。
  HugePages≒MEMORY_TARGETではないので、
  SGA_TARGETやPGA_AGGREGATE_TARGETの設定値には注意

3.設定手順
0)現状のHugePagesの設定確認
1)memlockの値確認ならびに修正(物理メモリ以下、SGA_TARGET以上の値に設定)
2)AMM(MEMORY_TARGET等)の設定解除、
 SGA_TARGET・PGA_AGGREGATE_TARGETの修正

 2-1)spfileからPfileの作成
 2-2)MEMORY_TARGET(or MEMORY_MAX_TARGET)の記述削除
 2-3)SGA_TARGET・PGA_AGGREGATE_TARGETの修正または設定
 2-4)インスタンス停止
 2-5)pfileからspfileの再作成
 2-6)インスタンス起動
 2-7)/dev/shmのumount(必要に応じて)

3)hugepage見積もり用スクリプトの作成
4)hugepage見積もり用スクリプト実行により、vm.nr_hugepagesの推奨値を取得
5)コマンドまたはsysctl.confにvm.nr_hugepagesを設定
 -sysctl.conに設定した場合はsysctl -pでOKだと思います。
6)HugePagesの値確認
7)インスタンスの再起動
8)HugePagesを使用しているか確認

4.その他
 ・新規導入の場合の見積もりは?
  -想定のSGA_TARGETで起動してみて、スクリプトを実行してみるか、
   他のインスタンスやミドルウェア等がなければ、
   想定のSGA_TARGETの値を2MBで割った値を設定でいい気もする。

5.参考文献
Oracle® Database管理者リファレンス
11g リリース2(11.2)for Linux and UNIX-Based Operating Systems

 -Hugepages概要&設定手順&制限事項
Slow Performance with High CPU Usage on 64-bit Linux with Large SGA[ID 361670.1]
 -大規模SGAを通常のページで使用するとCPUが高騰する問題について
HugePages on Oracle Linux 64-bit [ID 361468.1]
 -HugePages概要&設定手順&制限事項&設定時のトラブルシュート
HugePages on Linux: What It Is... and What It Is Not... [ID 361323.1]
 -HugePagesって何?(メモリの使用状況の図解が載ってて分かりやすい)
USE_LARGE_PAGES 初期化パラメータについて[KROWN#153045]


ここ最近は、大規模メモリ環境がどんどん手に入り易くなっている(と感じています)。
環境やシステム内容に応じてHugePagesを検討してみてはどうでしょう?

2 件のコメント:

  1. はじめまして。
    非常に分かりやすい検証結果の説明ありがとうございます。
    1つ教えて下さい。
    SGAをHugepages上で動かす場合の監視方法など検討もしくは監視済みでしたらご教授下さい。

    メモリ内にロックされますが、freeコマンドで表示されるバッファキャッシュの監視だけで良いものか、ちょっと不安なものですから。

    返信削除
  2. zo5noさん

    返信が遅くなりましてすみません。
    Hugepages用として物理メモリが取得されてしまうので、
    Oracleの場合は、残りの物理メモリ領域でPGA領域を賄わないといけませんよね。
    稼働状況によっては、PGA_AGGREGATE_TARGET以上使用してしまうこともありますし、
    別のソフトで物理メモリを使用することも考えられます。
    ですので、運用される場合はvmstatのswpdやsi soを確認して、
    スワップが発生していないかを監視していくことが大事ですね。
    もしスワップしている場合には、Hugepagesへの割り当てを見直しが必要かもしれません。
    ではでは(^^)/~~

    返信削除