當系統檔案快取會消耗大部分的實體 RAM 時,會遇到效能問題,在應用程式和服務

狀況

您遇到應用程式中的效能問題和各種版本的 Windows XP 」、 「 Windows Vista 」、 「 Windows Server 2003 」、 「 Windows Server 2008 及 「 Windows Server 2008 R2 的服務。此外,您會注意到下列的徵狀︰

  • 可用記憶體幾乎用盡時。

  • 系統檔案快取會消耗大部分的實體 RAM。

  • 沒有快取讀取的要求,到硬碟的連續和高磁碟區。

原因

在 Microsoft Windows 作業系統的記憶體管理使用以需要為基礎的演算法。如果任何處理程序要求,並使用大量的記憶體,則程序的工作組 (實體 RAM 中的記憶體分頁數目) 的大小會增加。 如果這些要求是連續的而且未核取,將會消耗所有實體 RAM 增加程序的工作組。 在此情況下,所有其他的處理序的工作集被移出至硬碟。 這種行為會減少應用程式和服務的效能,因為持續地寫入硬碟,從硬碟讀取記憶體分頁。

這種情形也適用於 [系統檔案快取的工作集。如果沒有連續和高的磁碟區,從任何處理程序或任何驅動程式的快取讀取要求,系統檔案快取工作集大小將會增加來滿足這個需求。 系統檔案快取會消耗的實體 RAM。因此,其他處理程序沒有足夠的實體 RAM 的數量。

在 32 位元版本的 Microsoft Windows 作業系統早於 Windows Vista 中,系統檔案快取的工作集有少於 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 Server 2008 R2 正在執行的電腦上實作這個服務的唯一情況。

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

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


當您執行此工具時,選取 [使用計算] 選項。這會顯示數個資料行,列出的記憶體使用量目前的模式。按一下 [使用中的資料行來排序的使用的位元組數目,請注意頂端的使用方式,直接在 [總計] 下。

如果上方使用 count 是 「 中繼檔 」,且正在使用中,大部分的可用記憶體,如果您遇到 < 徵狀=""> 一節所述的系統檔案快取問題。如果要確認,可以使用效能監視器 」 來監視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,這個問題的影響降至最低的策略之一。

安裝和使用 Microsoft 動態快取服務並不會排除的 Microsoft Windows 的支援。此服務,而且原始? 式碼會顯示一些範例,說明如何使用 Microsoft 支援的 Api,以減少檔案系統快取的成長。

您可以取得的服務和來源的程式碼,從下列 Microsoft 網站︰

其他資源

請參閱章節 9 (記憶體管理) 與 10 (快取管理員) 視窗內部,第 5 個版本。







中應用程式和服務的效能問題時遇到系統檔案快取會消耗大部分的實體 RAM

如何降低在 64 位元版本的 SQL Server 的緩衝區集區記憶體的分頁

啟用 Windows XP 中的系統快取模式前的考慮事項

如何最佳化 Windows NT 伺服器使用登錄

快取管理員有關在 Windows Server 2003 中





狀態

Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與我們的其中一個 Office 支援專員連絡以深入了解您的意見。

×