Applies ToMicrosoft Windows XP Professional x64 Edition Windows Vista Home Basic Windows Vista Home Premium Windows Vista Business Windows Vista Enterprise Windows Vista Ultimate Windows Vista Home Basic 64-bit Edition Windows Vista Home Premium 64-bit Edition Windows Vista Enterprise 64-bit Edition Windows Vista Ultimate 64-bit Edition Windows Server 2008 Datacenter without Hyper-V Windows Server 2008 Enterprise without Hyper-V Windows Server 2008 Standard without Hyper-V Windows Server 2008 Datacenter Windows Server 2008 Enterprise Windows Server 2008 Standard Windows Server 2008 for Itanium-Based Systems Windows Server 2008 R2 Datacenter Windows Server 2008 R2 Enterprise Windows Server 2008 R2 Service Pack 1 Windows Server 2008 R2 Standard

現象

さまざまなバージョンの Windows XP、Windows Vista、Windows Server 2003、Windows Server 2008、および Windows Server 2008 R2。 さらに、次のような現象が発生します。

  • 使用可能なメモリはほぼ使い果たされています。

  • システム ファイル キャッシュは、ほとんどの物理 RAM を消費します。

  • ハード ディスクに対するキャッシュされた読み取り要求が継続的で大きすぎます。

原因

Microsoft Windows オペレーティング システムのメモリ管理では、需要ベースのアルゴリズムが使用されます。 プロセスが要求し、大量のメモリを使用する場合、プロセスの作業セット (物理 RAM 内のメモリ ページ数) のサイズが増加します。 これらの要求が継続的でオフになっている場合、プロセスの作業セットは、すべての物理 RAM を消費するために増加します。 この場合、他のすべてのプロセスの作業セットがハード ディスクにページアウトされます。 この動作により、メモリ ページは継続的にハード ディスクに書き込まれたり、ハード ディスクから読み取りを行うので、アプリケーションとサービスのパフォーマンスが低下します。この動作は、システム ファイル キャッシュの作業セットにも適用されます。 任意のプロセスまたはドライバーからのキャッシュされた読み取り要求が継続的で多い場合、システム ファイル キャッシュの作業セット サイズは、この需要に合わせて拡大します。 システム ファイル キャッシュは物理 RAM を消費します。 そのため、他のプロセスでは十分な量の物理 RAM を使用できません。Windows Vista より前の 32 ビット版の Microsoft Windows オペレーティング システムでは、システム ファイル キャッシュの作業セットのメモリ制限は 1 GB 未満です。 仮想アドレス範囲の制限により、システム ファイル キャッシュの作業セットが物理 RAM を使い果たします。32 ビット版の Windows Vista オペレーティング システムでは、カーネル リソースが動的に割り当てされます。 システム ファイル キャッシュの作業セットは増え、他のカーネル リソースを犠牲にし、カーネル モードの仮想アドレス範囲を消費します。 このメモリ範囲の制限は 2 GB 未満です。 コンピューターに 2 GB を超える物理 RAM がある場合、キャッシュですべての物理 RAM を使い果たすることはできません。 ただし、キャッシュはカーネル内の仮想アドレス空間を使い果たします。 これにより、他のカーネル コンポーネントの割り当てエラーが発生する可能性があります。64 ビット版の Windows オペレーティング システムでは、通常、仮想アドレス範囲のサイズは物理 RAM よりも大きくなります。 この状況では、システム ファイル キャッシュの作業セットが増加して、物理 RAM の大部分を消費する可能性があります。

解決方法

Windows 7 および Windows Server 2008 R2 オペレーティング システムのメモリ管理アルゴリズムは、以前のバージョンの Windows で見つかった多くのファイル キャッシュの問題に対処するために更新されました。 Windows 7 または Windows 2013 を実行しているコンピューターでこのサービスを実装する必要がある固有の状況Windows Server 2008 R2。

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

システムがこの問題の影響を受けるかどうかを判断するには、SysInternals RamMap ツールをインストールします。 このツールは、次の Windows Sysinternals Web サイトから入手できます。

http://technet.microsoft.com/en-us/sysinternals/ff700229 ツールを実行するときに、[カウントの使用]オプションを選択します。 これにより、メモリ使用量の現在のパターンを示す複数の列が表示されます。 [アクティブ] 列 をクリックして、使用されたバイト数で並べ替え、合計の直下の上位の使用量をメモします。使用回数が "Metafile" で、使用可能なメモリの大部分が使用されている場合は、「現象」セクションで説明されているシステム ファイル キャッシュの問題が発生しています。 これを確認するには、パフォーマンス モニターを使用して Memory\System Cache Resident Bytes カウンターを監視し、時間の長い間キャッシュが継続的に増加します。図 1. コンピューターで問題が発生している RamMap 出力の例。 代替テキスト 図 2. コンピューターで問題が発生していない RamMap 出力の例。 代替テキスト パフォーマンス モニターの Memory\System Cache Resident Bytes カウンターに、時間の流れによる上昇傾向が表示される場合、図 3 に示すように、コンピューターで問題が発生しています。図 3. 時間の間にコンピューターで問題が発生するパフォーマンス モニターの出力の例。 代替テキスト

再起動の要件

このサービスをインストール、アンインストール、または使用するときに、コンピューターを再起動する必要は一方ではありません。

この記事を読んでいる場合、この問題の影響を受けたと思う顧客と一緒に作業している場合は、次の手順に従って問題を解決してください。

  1. 前述のように、顧客の RamMap 出力、perfmon、または poolmon データが、システム ファイル キャッシュが物理 RAM の大部分を消費しているのを確認します。

  2. Windows Dynamic Cache Service を取得するには、ここからダウンロード します

  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 EE を操作する場合、2005 以上のSQL以前は、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 Dynamic Cache Service は、この問題の影響を最小限に抑えるためにこれらの API を使用する 1 つの戦略を示すサンプル サービスです。Microsoft Dynamic Cache Service をインストールして使用しても、Microsoft Windows のサポートは除外されません。 このサービスとそのソース コードは、Microsoft がサポートする API を使用してファイル システム キャッシュの増加を減らす方法の例として提供されます。サービスとソース コードは、次の Microsoft Web サイトから入手できます。

http://www.microsoft.com/download/details.aspx?FamilyID=e24ade0a-5efe-43c8-b9c3-5d0ecb2f39af&displaylang=en

補足資料

第 5 版の Windows Internals の第 9 章 (メモリ管理) および 10 (キャッシュ マネージャー) を参照してください。メモリ管理 (大規模なシステム キャッシュの問題) ブログ投稿スローサイズのファイル コピーに関する問題のブログ投稿Windows リリースのメモリ制限976618システム ファイル キャッシュが物理 RAM 918483 の大部分を消費すると、アプリケーションとサービスでパフォーマンスの問題が発生します。64 ビット 版の SQL Server 895932 でバッファー プール メモリのページングを減らす方法 Windows XP 232271 でシステム キャッシュ モードを有効にする前に、Windows Server 2003のレジストリ 837331 About Cache Manager を使用して Windows NT サーバーを最適化する方法 http://technet2.microsoft.com/windowsserver/en/library/EFA621BD-A031-4461-9E72-59197A7507B61033.mspx LargeSystemCache TechNet トピック RamMap ブログ投稿 

状態

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。