システム ファイルのキャッシュが物理メモリの大部分を使用するとアプリケーションおよびサービスのパフォーマンスの問題が発生します。

適用対象: Microsoft Windows XP Professional x64 EditionWindows Vista Home BasicWindows Vista Home Premium

現象


アプリケーションにおけるパフォーマンスの問題とさまざまなバージョンの Windows XP、Windows Vista、Windows Server 2003、Windows Server 2008、および Windows Server 2008 R2 でのサービスが発生します。その際、さらに、以下のようなの現象が発生します。
  • 使用可能なメモリがほぼ使い果たされる。
  • システム ファイルのキャッシュで、物理メモリの大部分が消費される。
  • ハード ディスクにキャッシュされた内容の継続した、高負荷のリード ・ リクエストが発生する。

原因


Microsoft Windows オペレーティング システムのメモリ管理では、デマンド ・ ベースのアルゴリズムを使用します。任意のプロセスでは、要求し、大量のメモリを使用して、プロセスのワーキング セット (物理 RAM のメモリ ページの数) のサイズが増加します。 これらの要求が連続し、チェックされていない場合、すべての物理 RAM を消費するプロセスのワーキング セットが拡大します。 このような場合は、他のすべてのプロセスのワーキング セットはハード ディスクにページアウトします。 この動作では、メモリ ページが継続的にハード ディスクに書き込まれ、ハード ディスクから読み取るためにアプリケーションおよびサービスのパフォーマンスが低下します。

この現象は、ファイル ・ システム ・ キャッシュのワーキング セットにも適用されます。なんらかのプロセスまたはドライバーから、連続した高ボリュームのキャッシュ読み込み要求があれば、需要に応じてシステム ファイルのキャッシュのワーキング セットのサイズは拡張されます。 システム ファイルのキャッシュは、物理 RAM を消費します。そのため、他のプロセスで十分な量の物理メモリが割り当たらないことがあります

ファイル ・ システム ・ キャッシュのワーキング セットでは Microsoft Windows オペレーティング システムを Windows Vista より前のバージョンは 32 ビット、1 ギガバイト (GB) 未満の理論上のメモリ制限があります。仮想アドレス範囲の制限は、物理メモリが枯渇することのファイル ・ システム ・ キャッシュのワーキング セットを防ぎます。

Windows Vista オペレーティング システムの 32 ビット バージョンのカーネル リソースが動的に割り当てられます。その他のカーネル リソースを犠牲にしてカーネル モードの仮想アドレス範囲を使用するファイル ・ システム ・ キャッシュのワーキング セットが大きくなります。このメモリ範囲の制限は、2 GB 未満です。コンピューターの物理 RAM の 2 GB を超える場合は、キャッシュは物理メモリをすべてを使い果たすことはできません。ただし、キャッシュは、カーネル仮想アドレス空間を使い果たしてしまうことができます。 その他のカーネル コンポーネントの割り当てエラーが発生することができます。

Windows オペレーティング システムの 64 ビット バージョンは、仮想アドレスの範囲のサイズは、通常、物理 RAM よりも大きい。この状況では、物理メモリの大部分を消費するシステム ファイルのキャッシュのワーキング セットを増やせます。

解決策


Windows 7 と Windows Server 2008 R2 オペレーティング システムのメモリ管理アルゴリズムは、多くのファイルのキャッシュを以前のバージョンの Windows で検出された問題に対処する更新されました。Windows 7 または Windows Server 2008 R2 を実行しているコンピューターでこのサービスを実装する必要がある一意なだけは。

システムが影響を受けるかどうかを確認する方法

システムがこの問題によって影響を受けるかどうかを確認するのには、SysInternals RamMap ツールをインストールします。ツールは、次の Windows Sysinternals の web サイトから入手できます。
 
ツールを実行する場合、[使用数] オプションを選択します。これには、メモリ使用量の現在のパターンを表示するいくつかの列が表示されます。使用されているバイト数で並べ替えるには、作業中の列をクリックし、合計のすぐ下の上の使用状況に注意してください。

上部のカウントを使用する場合は、「メタファイル」と、「現象」に記載されているファイル ・ システム ・ キャッシュの問題が発生している使用可能なメモリの大部分を使用している場合。Memory\System キャッシュの常駐バイト数のカウンターを監視し、時間の経過と共に継続的に増大するキャッシュを参照してくださいパフォーマンス モニターを使用してこれを確認することができます。

図 1 です。RamMap の出力例をコンピューターに、問題が発生します。



図 2 。RamMap の出力例、問題がコンピューターに発生しません。



パフォーマンス モニターのMemory\System キャッシュの常駐バイト数のカウンターは、時間の経過と共に上昇を示している場合、コンピューターが発生している問題、図 3 に示すようにします。

図 3 です。パフォーマンス モニターの出力例でコンピューター問題が発生、時間の経過と共に。

再起動の必要性

インストール、アンインストール、またはこのサービスを使用するときにコンピューターを再起動する必要はないです。
場合は、この問題の影響を受けることを確信しているお客様で作業しているために、この記事を読む場合は、これらの手順、問題を解決するため。
  1. お客様の RamMap 出力、パフォーマンス モニター、または poolmon のデータを確認システム ファイルのキャッシュは、物理 ram の容量の大部分を消費している前述のようにことを確認します。
  2. ダウンロード Windows 動的キャッシュ サービスを取得するには、ここで
  3. 動的なキャッシュのレジストリ設定の一部は次のとおりです。

    ファイル ・ サーバ、1 GB を実行することもできます。
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
    "MaxSystemCacheMBytes"=dword:00000400
    "MinSystemCacheMBytes"=dword:00000064
    "SampleIntervalSecs"=dword:0000003c
    "CacheUpdateThresholdMBytes"=dword:00000064

    Exchange 2007 では、500 MB にする可能性があります。
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
    "MaxSystemCacheMBytes"=dword:000001F4
    "MinSystemCacheMBytes"=dword:00000064
    "SampleIntervalSecs"=dword:0000003c
    "CacheUpdateThresholdMBytes"=dword:00000064

    SQL 2005 年およびより高い、過去の SQL EE を使用する場合に、2 GB が使用されます。
    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DynCache\Parameters]
    "MaxSystemCacheMBytes"=dword:000007D0
    "MinSystemCacheMBytes"=dword:00000064
    "SampleIntervalSecs"=dword:0000003c
    "CacheUpdateThresholdMBytes"=dword:00000064

詳細


この問題を回避するのにには、ファイル ・ システム ・ キャッシュのワーキング セットのサイズの最大値または最小値を設定するのには、 GetSystemFileCacheSize API 関数と、 SetSystemFileCacheSize API 関数を使用します。これらの関数の使用は、システム ファイルのキャッシュが物理メモリの消費量を制限するのにはサポートされている唯一の方法です。

Microsoft Windows 動的キャッシュ サービスは、これらの Api を使用して、この問題の影響を最小限に抑えるために 1 つの方法を示すサンプルのサービスです。

インストールして、マイクロソフトの動的キャッシュ サービスを使用して Microsoft Windows のサポートの除外は行われません。Microsoft を使用する方法の例には、ファイル システム キャッシュの増加を軽減するための Api がサポートされているこのサービスとそのソース コードが提供されます。

サービスとソース コードは、次のマイクロソフト web サイトから入手できます。
 

その他のリソース

Windows 内部では、5 番目のエディションの章 9 (メモリ管理) と 10 (キャッシュ マネージャー) を参照します。

メモリ管理 (大規模なシステムのキャッシュの問題) のブログの投稿

ブログ投稿を発行する時間がかかるサイズの大きいファイルのコピー

Windows のリリースでのメモリ制限

976618アプリケーションとサービスのパフォーマンスの問題を発生するには、ファイル ・ システム ・ キャッシュは、物理メモリのほとんどを使用する場合

918483 64 ビット版 SQL Server のバッファー プール メモリのページングを減らす方法

895932 Windows XP でシステム キャッシュ モードを有効にする前に考慮す

232271レジストリを使用して Windows NT サーバーを最適化する方法

Windows Server 2003 のキャッシュ マネージャーの837331

http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx

LargeSystemCache TechNet トピック

RamMap のブログの投稿

状況


マイクロソフトは、この問題を「対象製品」セクションに記載されているマイクロソフト製品の問題として認識しています。