CacheSet v1.02

作者:Mark Russinovich

发布时间: 2021 年 12 月 16 日

Download下载 CacheSet (417 KB)
立即Sysinternals Live 运行

简介

CacheSet 是一个小程序,可用于操作系统文件缓存的工作集参数。 与 CacheMan 不同,CacheSet 在所有版本的 NT 上运行,并且无需修改新的 Service Pack 版本即可运行。 除了提供控制最小和最大工作集大小的功能外,还允许重置缓存的工作集,强制从最小起点开始增长。 与 CacheMan 不同,使用 CacheSet 所做的更改会对缓存的大小产生即时影响。

使用 CacheSet 以不可能的方式优化系统缓存大小,而无需调整 CacheMan 的方式调整内部变量。

注意:若要在 NT 4.0 Service Pack 4 及更高版本上使用 CacheSet ,必须具有“增加配额”权限, (管理员帐户默认具有此权限) 。 CacheSet 已更新为启用此权限,使其在 SP4 上运行。

CacheSet screenshot

安装和使用

启动后,系统文件缓存的当前大小 (每秒更新两次) ,其峰值大小 (自上次重新启动) 以来的最大大小,并允许设置新的最小和最大工作集大小。

设置新大小 只需输入新的最小值和最大大小,然后按“应用”按钮。 如果收到错误,则满足以下条件之一:输入的最大值小于最小值,输入的最小值小于最小系统工作集大小,或者输入的最大大小大于系统工作集的最大大小。 调整输入的值,然后重试。

你可能会注意到,缓存的大小会立即更改,然后继续快速收缩或增长。 这是因为系统每秒自动剪裁工作集一次。 释放的缓存页仍位于内存中,但可供需要更多内存的其他程序快速放弃使用。 同样,当应用程序访问文件系统数据时,缓存可以立即重新获得页面。

重置以前的值 随时可以通过点击“重置”按钮还原缓存的工作集值,这些值在上次启动 CacheSet 时处于活动状态。

清除缓存的工作集 可以通过按“清除”按钮强制缓存释放其所有页面。 请注意,缓存可以根据需要再次增长,这与刷新缓存不同 - 分配给缓存的页面只是提供给其他程序,并且可由缓存回收。

使用Command-Line接口 可以在 CacheSet 命令行中输入最小和最大工作集大小。 CacheSet 将以无提示方式应用这些新值。 因此,可以将 CacheSet 添加到"开始"菜单程序组,以便每次启动时自动设置缓存的大小。

用法:CacheSet [最小工作集] [最大工作集]

工作原理

CacheSet 使用 NtQuerySystemInformation 调用获取有关缓存的设置和 NtSetSystemInformation 的信息来设置新的大小调整信息。 进程的工作集信息充当 NT 内存管理器关于应向应用程序分配多少页物理内存的准则。 由于它们是准则,因此条件可能会导致内存管理器将工作集增大到大于最大值的大小,或将其缩小到小于最小值。 但是,设置是影响应用程序的总体分配及其响应能力的因素。 对于 CacheSet ,应用程序是文件系统缓存。

在内部 ,NtSetSystemInformation 调用 MmAdjustWorkingSetSize,它要么增长应用程序的工作集,要么剪裁它。 如果传递给 MmAdjustWorkingSetSize 的第三个参数为 1,则会调整系统缓存的工作集,否则当前进程发生调整, (系统信息调用仅影响系统缓存) 。 传入最小和最大值为 -1 会导致 MmAjustWorkingSetSize 执行工作集清除操作,从而释放应用程序工作集中的所有页面。

Download下载 CacheSet (417 KB)

立即Sysinternals Live 运行

运行时间:

  • 客户端:Windows Vista 及更高版本。
  • 服务器:Windows Server 2008 及更高版本。