By Mark Russinovich
Published: December 16, 2021
Download CacheSet (417 KB)
Run now from Sysinternals Live.
CacheSet is an applet that allows you to manipulate the working-set
parameters of the system file cache. Unlike CacheMan, CacheSet runs on
all versions of NT and will work without modifications on new Service
Pack releases. In addition to providing you the ability to control the
minimum and maximum working set sizes, it also allows you to reset the
Cache's working set, forcing it to grow as necessary from a minimal
starting point. Also unlike CacheMan, changes made with CacheSet have
an immediate effect on the size of the Cache.
Use CacheSet to performance tune the system Cache size in a way not
possible without tweaking internal variables the way CacheMan does.
Note: To use CacheSet on NT 4.0 Service Pack 4 and later you must have
the "Increase Quota" privilege (administrator accounts have this
privilege by default). CacheSet has been updated to enable this
privilege so that it works on SP4.

After it starts it presents the system file cache's current size
(updated twice a second), it's peak size (the largest it's been since
the last reboot), and lets you set new minimum and maximum working set
sizes.
Setting New Sizes
Simply enter the new minimum and maximum sizes and hit the Apply button.
If you get an error, then one of the following conditions holds: you've
entered a maximum that is smaller than the minimum, the minimum you've
entered is smaller than the minimum system working-set size, or the
maximum you've entered is larger than the maximum system working-set
sizes. Adjust the values you've entered and try again.
You may notice that the Cache's size changes immediately and then
proceeds to shrink or grow quickly. This is because the system
automatically trims working sets once a second. The Cache pages that are
released are still in memory, but can be relinquished quickly for use by
other programs that need more memory. Similarly, the Cache can easily
regain pages as applications access file system data.
Resetting Previous Values
At any time you can restore the Cache's working set values that were
active when you last started CacheSet by hitting the Reset button.
Clearing the Cache's Working Set
You can force the Cache to release all of it's pages by pressing the
Clear button. Note that the Cache can grow again as necessary, and that
this is not the same as flushing the Cache - pages that were assigned to
it are simply made available to other programs and can be reclaimed by
the Cache.
Using the Command-Line Interface
You can enter the minimum and maximum working set sizes on CacheSet's
command line. CacheSet will apply these new values silently. Thus, you
can add CacheSet to your Start program group to automatically set the
Cache's sizes every time you boot.
Usage: CacheSet [minimum working set] [maximum working set]
CacheSet uses a NtQuerySystemInformation call to obtain
information about the Cache's settings and NtSetSystemInformation to
set new sizing information. The working-set information for a process
serves as guidelines for NT's Memory Manager regarding how many pages of
physical memory should be assigned to the application. Because they are
guidelines, conditions can result such that the Memory Manager grows a
working-set to a size greater than the maximum, or shrinks it to less
than the minimum. However, the settings are factors that will affect the
overall allocation, and hence responsiveness, of an application. In the
case of CacheSet the application is the file system Cache.
Internally NtSetSystemInformation calls MmAdjustWorkingSetSize,
which either grows an application's working set or trims it. If the
third parameter passed to MmAdjustWorkingSetSize is 1, the system
Cache's working set is adjusted, otherwise the adjustment occurs on the
current process (the system information calls affect only the system
cache). Passing in a minimum and maximum of -1 causes
MmAjustWorkingSetSize to perform a working-set clear operation,
releasing all pages from the application's working set.
Download CacheSet (417 KB)
Run now from Sysinternals Live.
Runs on:
- Client: Windows Vista and higher.
- Server: Windows Server 2008 and higher.