當系統檔案快取佔用大部分的物理 RAM 時,您會遇到應用程式和服務的效能問題

徵狀

在各種版本的 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 (GB) 。 虛擬位址範圍的限制會防止系統檔案快取的工作集 exhausting 物理 RAM。

在32位版本的 Windows Vista 作業系統上,會動態地指派內核資源。 系統檔案快取的工作集會隨著其他核心資源的支出而增加,佔用核心模式的虛擬位址範圍。 此記憶體範圍的限制小於 2 GB。 如果電腦的物理 RAM 超過 2 GB,則快取無法耗盡所有物理 RAM。 不過,快取可能會耗盡內核中的虛擬位址空間。 這可能會導致其他內核元件的分配失敗。

在64位版本的 Windows 作業系統上,虛擬位址範圍的大小通常大於物理 RAM。 在這種情況下,系統檔案快取的工作集可能會增加,佔用大部分的物理 RAM。

解決方案

Windows 7 和 Windows Server 2008 R2 作業系統中的記憶體管理演算法已更新,以解決在舊版 Windows 中發現的許多檔案快取問題。 在執行 Windows 7 或 Windows Server 2008 R2 的電腦上,只需要執行這項服務,才會有一些特殊的情況。

如何判斷您的系統是否受到影響

若要判斷您的系統是否受此問題影響,請安裝 SysInternals RamMap 工具。 您可以從下列 Windows Sysinternals 網站取得該工具:

HTTP://technet.microsoft.com/en-us/sysinternals/ff700229
當您執行此工具時,請選取 [使用計數] 選項。 這會顯示數個數據行,顯示目前的記憶體使用模式。 按一下作用中的資料 域,依使用的位元組數排序,並記下總計底下的最大使用量。

如果最上面的使用計數是 "中繼檔",且有大量可用記憶體,就表示您遇到「症狀」一節中所述的系統檔快取問題。 您可以使用效能監視器來進行驗證,以監視 Memory\System 快取駐留位元組計數器,並在一段時間內看到快取增加。

圖1。 此為電腦出現問題的 RamMap 輸出範例。

替代文字

圖2。 此為電腦未遇到問題的 RamMap 輸出範例。

替代文字

如果 [效能監視器] 中的 Memory\System [駐留位元組] 計數器顯示一段時間的上升趨勢,表示電腦出現問題,如圖3所示。

圖3。 在螢幕上遇到問題時,電腦的效能監視器輸出範例。

替代文字

重新開機需求

當您安裝、卸載或使用此服務時,您不需要重新開機電腦。

如果您正在閱讀本文,因為您使用的客戶認為他們受此問題影響,請依照下列步驟來協助您解決問題。

  1. 確認客戶的 RamMap 輸出、perfmon 或 poolmon 資料確認系統檔案快取了大部分的物理 RAM (如前文所述)。

  2. 若要取得 Windows 動態快取服務,請 在這裡下載。

  3. 某些動態快取登錄設定如下所示:

    檔案伺服器,您可能會想要試試1GB。
    [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 時過去使用的是2GB:
    [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 來將這個問題的影響降至最低的一個策略。

安裝和使用 Microsoft 動態快取服務不會導致排除 Microsoft Windows 支援。 此服務及其原始程式碼是以如何使用 Microsoft 支援的 Api 來減少檔案系統快取速度的範例所提供。

您可以從下列 Microsoft 網站取得服務與原始程式碼:

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

其他資源

閱讀章節 9 (記憶體管理) 與 10 () Windows 內部版本(第5版)。

[記憶體管理] () 博客文章

的大型系統快取問題較慢的檔案複製問題博客文章

Windows 版本

的記憶體限制976618當系統檔案快取佔用大部分的物理 RAM 918483 時,您在應用程式和服務中遇到效能問題

如何減少 microsoft server 232271 中的緩衝集區記憶體分頁64在

windows XP 中啟用系統快取模式時,如何使用 microsoft server 837331 中的895932 [快取





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

LargeSystemCache TechNet 主題

RamMap 博客文章 

狀態

Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。

Need more help?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×