当系统文件缓存耗用大量物理 RAM 时遇到应用程序和服务中的性能问题

Support for Windows XP has ended

Microsoft ended support for Windows XP on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

Support for Windows Server 2003 ended on July 14, 2015

Microsoft ended support for Windows Server 2003 on July 14, 2015. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

重要说明:本文是由 Microsoft 机器翻译软件进行的翻译并可能由 Microsoft 社区通过社区翻译机构(CTF)技术进行后期编辑,或可能是由人工进行的翻译。Microsoft 同时向您提供机器翻译、人工翻译及社区后期编辑的文章,以便对我们知识库中的所有文章以多种语言提供访问。翻译的文章可能存在词汇、句法和/或语法方面的错误。Microsoft 对由于内容的误译或客户对内容的使用所导致的任何不准确、错误或损失不承担责任。

点击这里察看该文章的英文版: 976618
症状
在应用程序中的性能问题和各种版本的 Windows XP、 Windows Vista、 Windows Server 2003,Windows Server 2008 中和 Windows Server 2008 R2 中的服务您的经验。此外,您还注意到下列症状 ︰
  • 可用内存是几乎耗尽。
  • 系统文件缓存耗用大量物理 RAM。
  • 存在对磁盘持续且大量的缓存读取请求
原因
在 Microsoft Windows 操作系统中的内存管理使用基于请求的算法。如果任何处理请求 然后使用 大量的内存,进程的工作集 (在物理 RAM 中的内存页面数) 增加。如果这些请求持续且未加抑制,进程的工作集将会增长至占用所有的物理 RAM。在此情况下,其他所有进程的工作集调出到硬盘。这种行为降低了应用程序和服务的性能,因为内存页是连续写入硬盘和从硬盘读取的。

这种行为同样适用于系统文件缓存的工作集。如果没有持续和高卷的缓存读请求从任何进程或任何驱动程序,系统文件缓存的工作集大小将增长来满足这一需求。系统文件缓存使用的物理 RAM。因此,足够的物理内存量不可用于其他进程。

在 32 位 Windows 操作系统版本早于 Windows Vista,系统文件缓存的工作集是有理论内存限制为小于 1 千兆字节 (GB)。虚拟地址范围的限制可以防止耗尽物理 RAM 的系统文件缓存的工作集。

在 32 位版本的 Windows Vista 操作系统,动态分配核心资源。系统文件缓存的工作集增加消耗而忽略其他内核资源的内核模式虚拟地址范围。此内存范围限制为小于 2 GB。如果计算机有多个 2 GB 的物理内存,缓存不能耗尽所有的物理 RAM。但是,缓存可以耗尽在内核虚拟地址空间。这会导致其他内核组件分配失败。

在 64 位版本的 Windows 操作系统,通常超过物理 RAM 了虚拟地址范围的大小。在此情况下,系统文件缓存的工作集可以增加消耗大部分的物理 RAM。
替代方法
若要变通解决此问题,请使用GetSystemFileCacheSize API 函数和SetSystemFileCacheSize API 函数来设置系统文件缓存的工作集的大小最大值或最小值。这些函数的用法是唯一受支持的方法来限制系统文件缓存的物理内存的消耗。

Microsoft Windows 动态缓存服务是演示如何使用这些 Api 来将这一问题的影响降至最低的一种策略的示例服务。

安装和使用 Microsoft 动态缓存服务不会排除对 Microsoft Windows 的支持。作为举例说明如何使用 Microsoft 支持降低增长的文件系统缓存 Api 提供此服务,它的源代码。

您可以从以下 Microsoft 网站获得服务和源的代码 ︰

状态
Microsoft 已经确认这是"适用于"一节中列出的 Microsoft 产品中的问题。
更多信息
在 Windows 7 和 Windows Server 2008 R2 操作系统的内存管理算法已更新,可以解决许多文件缓存在 Windows 的早期版本中发现的问题。有只需要计算机正在运行 Windows 7 或 Windows Server 2008 R2 上实现此服务,某些特殊情况。

如何确定您的系统是否受影响

若要确定您的系统是否受此问题,请安装 SysInternals RamMap 工具。您可以从以下 Windows Sysinternals 网站获取该工具 ︰


运行该工具时,选择使用计数选项。这将显示几个列,以显示当前的内存使用模式。单击活动列进行排序,所用的字节数,并注意下方总的顶部使用情况。

如果顶部使用计数是"图元文件,"并正在使用的可用内存很大一部分,如果您遇到"症状"一节中描述的系统文件缓存问题。可以对其进行如此验证 ︰ 即通过使用性能监视器来监视Memory\System 缓存驻留在字节计数器并查看缓存持续不断增长中。

图 1。示例 RamMap 输出的计算机出现了问题。



图 2。计算机没有遇到此问题的示例 RamMap 输出。



如果在性能监视器中的Memory\System 高速缓存驻留在字节计数器显示一段时间的上升趋势,计算机如图 3 所示出现问题。

图 3。性能监视器输出示例的计算机遇到问题随着时间的推移。

重新启动要求

不需要重新启动计算机,当您安装、 卸载或使用此项服务。

属性

文章 ID:976618 - 上次审阅时间:06/12/2016 11:14:00 - 修订版本: 9.0

Microsoft 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, Microsoft Windows Server 2003 R2 Datacenter Edition (64-Bit x86), Microsoft Windows Server 2003 R2 Enterprise Edition (64-Bit x86), Microsoft Windows Server 2003 R2 Standard Edition (64-Bit x86), Microsoft Windows Server 2003, Datacenter x64 Edition, Microsoft Windows Server 2003, Enterprise x64 Edition, Microsoft Windows Server 2003, Standard x64 Edition, Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems, Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems, 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

  • kbexpertiseinter kbtshoot kbsurveynew kbprb kbmt KB976618 KbMtzh
反馈