web-dev-qa-db-ja.com

Windowsファイルキャッシュが突然ドロップする

48個のCPUコアと128GBのRAM単一のアプリケーション(SQL 2008 Analysis Services)を実行している64ビットのWindows 2003サーバーがあります。SSASは現在、約50GBのメモリを使用しています。

SSASは、頻繁に使用されるデータを保持するためにWindowsファイルキャッシュに大きく依存しています(たとえば、 この記事 を参照)。私のサーバーでは、Windowsファイルキャッシュは通常10〜15 GBの範囲ですが、突然5〜6 GBに低下することがあります(Memory\System Cache Resident Bytes)。これが発生すると、すべてのSSASページの読み取りがディスクに送られ、ファイルキャッシュが再作成されるまでクエリがタイムアウトし始めます。

まったく同じSSASインスタンス、同じクエリ、同じ負荷を実行していても、同じ症状を示さない2番目のサーバー(24コアのみですが、それ以外はほぼ同じです)があります(これは負荷分散環境です) 。

Dba.stackexchange.comで SSASに焦点を当てた詳細な質問 を質問しましたが、Windowsの動作に関するいくつかの質問があります。

  1. SSASデータベースファイルがキャッシュからフラッシュされる理由を知る方法はありますか?

  2. ファイルキャッシュに事前入力したり、何らかの方法で積極的に管理したりできますか? ( RAMDRIVEを使用 が私たちの環境のオプションであるかどうかはわかりません)

ある時点で、サーバーのネットワーク最適化設定を「ファイル共有のデータスループットを最大化する」に変更して、他のボックスと一致させましたが、それは大きな違いにはならないようです。

編集:報奨金を追加しました。 「理由」に答えられない場合は、現在キャッシュを使用しているプロセス、キャッシュ内のファイル、または正しい方向に導く可能性のあるものをよりよく理解するための方法にすぎない可能性があります。

6
BradC

私は通常、リンクを投稿するだけではありませんが、まだ助けが得られていないので、チェックしてください this out。これは、キャッシュマネージャーがどのように機能するかについての非常に詳細な記事です。

プロセスは毎秒実行され、ディスクに書き込んでキャッシュからフラッシュできるものを評価します。どのプロセスがキャッシュを使用しているか、またはどのファイルがキャッシュにあるかを確認する方法があるかどうかを具体的に尋ねました。私の理解では、すべてのディスクの読み取りと書き込みがキャッシュされるため、ディスクの読み取りまたは書き込みを行うすべてのプロセスがキャッシュを「使用」します。内容を確認する方法が見つかりませんでした。

システムファイルキャッシュ内のファイルデータは、オペレーティングシステムによって決定された間隔でディスクに書き込まれ、そのファイルデータによって以前に使用されていたメモリが解放されます。これはキャッシュのフラッシュと呼ばれます。ファイルへのデータの書き込みを遅らせ、キャッシュがフラッシュされるまでキャッシュに保持するというポリシーは、レイジー書き込みと呼ばれ、一定の時間間隔でキャッシュマネージャーによってトリガーされます。 ファイルデータのブロックがフラッシュされる時間は、キャッシュに保存されている時間と、読み取り操作でデータが最後にアクセスされてからの時間に部分的に基づいています。 。これにより、頻繁に読み取られるファイルデータに、システムファイルキャッシュ内で最大時間アクセスできるようになります。 詳細

Server 2003では、キャッシュマネージャーが変更されたファイルデータをファイルに書き戻そうとせず、空きメモリが不足すると、メモリマネージャーの変更されたライタースレッドが未書き込みのデータをファイルに書き戻します。システムは、ファイルデータをディスクにフラッシュバックするためにメモリマネージャに依存しません。代わりに、キャッシュマネージャは、「遅延書き込み」プロセスを使用して、タイムリーにデータを不揮発性ストレージに書き戻そうとします。プログラムがファイルデータを変更すると、キャッシュマネージャーは変更されたデータの量または「ダーティ」を追跡します。キャッシュマネージャーは、キャッシュの変更されたデータの8分の1を毎秒ディスクに書き戻します。 詳細

3
Paul Ackerman

LimitSystemFileCacheSizeMB設定の値は何ですか?

Analysis Services操作ガイド
http://download.Microsoft.com/download/B/E/1/BE1AABB3-6ED8-4C3C-AF91-448AB733B1AF/SSASOpsGuide2008R2.docx

サーバーメモリが使用されている場所に関する詳細情報を提供する興味深いユーティリティは RAMMap です。特に、あなたが気付いていないスタンバイキャッシュで使用中のメモリがあるかもしれません。

2
Greg Askew