原文出处:http://support.microsoft.com/kb/976618算法
原文标题:当系统文件缓存耗用大量物理 RAM,您会遇到应用程序和服务的性能问题(You experience performance issues in applications and services when the system file cache consumes most of the physical RAM)缓存
因为微软的机器翻译实在太烂,因此人工翻译了一下。app
现象 ide
您会在各类版本的 Windows XP、 Windows vista、 Windows Server 2003,Windows Server 2008 和 Windows Server 2008 R2 中遇到应用程序中和服务的性能问题。函数
此外,您还会发现下列现象:工具
Windows 系统使用基于需求的的内存管理算法。若是任何进程请求并使用大量的内存,该进程的工做集(物理内存中可用内存页面数)就会增大。若是这些请求持续且未受抑制,那么进程的工做集(working set)将增加至占用全部的物理内存。在这种状况下,其余进程的工做集(working set)将调出到硬盘上。这种现象将下降应用程序和服务的性能,由于内存页老是在不断的写入磁盘又从磁盘中读出。
这种现象也适用于系统文件缓存的工做集。若是有任何进程或驱动程序持续且大量的对磁盘卷的进行缓存读取的请求,系统文件缓存的工做集将增加以知足这一需求。系统文件缓存消耗物理内存从而致使其余进程没有足够的物理内存量。
早于Windows Vista的32位Windows系统中,系统文件缓存的工做集有一个小于 1GB的理论上限。
32位的Windows Vista系统动态分配核心资源。
64 位的Windows 操做系统中虚拟地址范围的大小大于一般的物理内存。性能
解决此问题须要使用GetSystemFileCacheSize API 函数和SetSystemFileCacheSize API 函数来设置系统文件缓存工做集的最大值或最小大小值。这些函数是惟一能够限制系统文件缓存对物理内存消耗的方法。
Microsoft Windows Dynamic Cache Service 用来演示一种使用这些 Api 来尽可能减小此问题影响的策略的示例服务。
安装和使用 Microsoft Windows Dynamic Cache Service不会致使微软拒绝支持您的系统。提供此服务和它的源代码做为示例,说明如何使用 这些Api 来减小文件系统缓存的增加。
能够经过下面的连接下载服务和源码:
http://www.microsoft.com/downloads/details.aspx?FamilyID=e24ade0a-5efe-43c8-b9c3-5d0ecb2f39af&displaylang=enspa
在Windows 7 和 Windows Server 2008 R2 操做系统的内存管理算法已更新,能够解决不少系统文件缓存在之前版本的 Windows 中发现的问题。只有某些特殊的状况,您才须要在计算机正在运行 Windows 7 或 Windows Server 2008 R2 上实现此服务时。操作系统
如何肯定您的系统受此问题影响
经过下列网址下载的SysInternals RamMap 工具,并将其安装在您的系统:
http://technet.microsoft.com/en-us/sysinternals/ff700229翻译
安装、卸载该工具均无需重启。运行该工具,选择"Use Counts"视图,该视图将显示多个数据列以阐释当前的内存使用状况。单击"Active"列根据字节数进行排序,并关注Total列中使用率最高的项。
若是正在使用大量内存的是"Metafile",说明您遇到了上述系统文件高速缓存问题。同时咱们还可使用性能监视器监控Memory\System Cache Resident Bytes counter 观察缓存持续增加的现象来确认正在遭受此问题。
RamMap 的下列输出说明计算机出现此问题:
RamMap 的下列输出说明计算机未出现此问题:
使用性能监视器监控Memory\System Cache Resident Bytes counter示例: