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 时处于活动状态。

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

使用命令行接口可以在 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 及更高版本。