SetSystemFileCacheSize.zip

This is a utility for 64-bit WIndows machines (Vista, 7 and 8) that solves a problem with Windows becoming extremely slow and unresponsive while running certain, generally I/O intensive jobs (i.e. pyramiding very large rasters).

Find the link for the SetSystemFileCacheSize.zip file at the bottom of the page at:
www.uwe-sieber.de/ntcacheset_e.html#SetSystemFileCacheSize or download it directly.

MicroImages has done considerable research into a problem with 64-bit Windows machines (Vista, 7 and 8) becoming extremely slow and unresponsive while running certain I/O intensive applications. Our research indicates the problem is related to the Windows System File Cache using up all available RAM and thus causing applications to be swapped out of memory.

SetSystemFileCacheSize is a utility available from www.uwe-sieber.de/ntcacheset_e.html that solves this problem. The utility lets you set a limit on the maximum size of the system file cache, which in essence prevents some memory from being taken away from running processes to use in the disk cache.

The solution was tested by checking the responsiveness of an interactive process (Display) while running two I/O intensive processes (Raster Pyramiding of 100+GB rasters). Before running the SetSystemFileCacheSize utility, two large pyramiding jobs were started on a Windows 7 64-bit machine with only 4GB of RAM. However, when we started a Display session while the two jobs were running the keyboard and mouse became unresponsive and sluggish resulting in the Display process becoming virtually unusable. After limiting the maximum system file cache via SetSystemFileCacheSize, the Display process was back to being responsive while running along side the other two jobs.

For the SetSystemFileCacheSize parameters, we estimated that the above machine needed about 3GB of RAM for processes and 1GB for the cache. The following command sets the maximum cache size to 1024MB. (The first parameter is the minimum size - "off" indicates not to set a minimum.)

setsystemfilecachesize off 1024

We found that keeping the percentage of memory in use (as shown in the Resource Monitor or Task Manager) below about 95% resulted in good performance. As a general rule allow 500MB to 1GB of RAM for each program you expect to run, another 500MB to 1GB for various system processes, and use the rest for cache.

Some web articles on this topic can be found at: