So-net無料ブログ作成

SQL Server プロセスのワーキングセットのトリミング [SQL Server]

SQL Server稼働中に次のようなメッセージを出力してパフォーマンス低下が発生することがあります。

“A significant part of sql server process memory has been paged out. This may result in a performance degradation.”

この英語のメッセージが示す通り、SQL Serverのプロセスが使っていた物理メモリの大部分が
ページファイルに書き出されたことを示しています。
Windowsの世界ではプロセスが保持している物理メモリをワーキングセットと呼びます。
Windows OSはカーネルレイヤで大きなサイズのメモリ要求がされ、
物理メモリの空きがない場合に稼働中のプロセスのワーキングセットを強制的に
ページファイルへ書き出(ページアウト)します。
これをワーキングセットのトリミングと言います。
ワーキングセットのトリミングが発生すると、再びプロセスが必要に応じてページインする
ため、パフォーマンスの悪化が起きます。
(一般的に物理メモリへのアクセスよりもディスクへのアクセスが遅いため、
 ページインは相対的に時間のかかる処理です)

ワーキングセットのトリミングが発生するタイミングは場合によりけりですが、
一般的な指針としてパフォーマンスカウンタでMemoryオブジェクトの
Available Memoryが100MBを下回った場合は注意が必要となります。
また監視のため合わせてProcessオブジェクトのカウンタも取得しましょう。

さて、ではこの状況を回避する方法ですがSQL Serverに限って言えば
以下の2つを行うことで実現できます。

・Lock Page in Memory権限を起動アカウントに与える
・max server memoryを指定し、メモリ上限を規定する

端的に言えばAWE設定を行うのとほぼ同じことを行います。
特に64bit環境では扱うメモリサイズが大きいので有効です。
Lock Page in Memory権限だけでもトリミングは
避けられますが、max server memoryを指定しないと
規定の設定では無尽蔵に物理メモリを確保し、ページアウトさせない
設定になってしまいます。その場合はOSを含む他のプロセスが使う
メモリが不足してしまいます。

max server memoryの設定をいくつにするかは環境に寄りますが
テストして問題ない値を決めるのがセオリーです。とは言ったものの参考までにですが
私は最初は物理メモリのうち3GB-4GBをOSに残して残りをmax server memoryに
割り当てます。もちろん、この設定が必ずうまくいくわけではなく、テストしながら微調整します。

一方でSQL Server 2008 Standard EditionのSP1 CU2よりも
低いバージョンではLock Page in Memoryがうまく働かないので気を付けてください。


<情報源、参考資料>
http://blogs.technet.com/b/askperf/archive/2009/04/10/prf-memory-management-working-set-trimming.aspx
http://blogs.technet.com/b/askperf/archive/2007/05/18/sql-and-the-working-set.aspx
http://blogs.msdn.com/b/psssql/archive/2007/10/18/do-i-have-to-assign-the-lock-privilege-for-local-system.aspx
http://support.microsoft.com/kb/970070
http://support.microsoft.com/kb/918483/en-us
http://support.microsoft.com/default.aspx?scid=kb;EN-US;956341
http://msdn.microsoft.com/ja-jp/library/ms187499.aspx
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:仕事

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:[必須]
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。