Configure the file system cache in Windows NT
1 January 2000 by Snakefoot | Comment » | Trackback OffWindows has a file caching mechanism which is tightly integrated with the memory manager.
It helps disk performance by keeping the most recent files in memory, whether is is EXE or DLL
files loaded by the memory manager or data files loaded by the running applications.
The filesystem cache can be configured to either use a small cache (8 MByte), or use a large cache (up to 1 GByte depending on available memory). Don't enable large cache if having less than 1 GByte RAM and copying/moving large files (>512 MByte), because the file cache will grow to occupy all RAM and the memory of other applications will be paged to disk (Even more I/O).
To enable a large file system cache:
Note not all applications will benefit from a large system cache. Many disk intensive applications (Like database systems) includes their own cache manager, and doesn't make use of the operating system controlled file cache. For MS SQL and Exhange the optimal value is to disable the large system cache.
Note enabling the large system cache can give stability issues, because it will configure the kernel area to allocate max memory for the file cache, while sacrificing the size of memory pools and number of page table entries. If using Unified Memory Architecture (UMA)-based video hardware or an Accelerated Graphics Port (AGP), then it will require page table entries to address the video memory. ATI recommends one doesn't enable large system cache to avoid data corruption. More Info MS KB Q895932
More Info MS Technet - File Cache Performance and Tuning (Good read)
More Info MS Technet - Optimizing your memory configuration
More Info MS KB Q232271
More Info MS KB Q228766
More Info MS KB Q837331
Credits ArsTechnica.com
The filesystem cache can be configured to either use a small cache (8 MByte), or use a large cache (up to 1 GByte depending on available memory). Don't enable large cache if having less than 1 GByte RAM and copying/moving large files (>512 MByte), because the file cache will grow to occupy all RAM and the memory of other applications will be paged to disk (Even more I/O).
To enable a large file system cache:
- WinNT4: Open Control Panel -> Network -> Change properties for "Server" service to use "Maximize Throughput for File Sharing" (Will also change Server service memory usage).
- Win2k: Open Control Panel -> Network and Dial-up Connections -> Right-click Local Area Connection and select Properties -> Press Properties for service "File and Print Sharing for Microsoft Networks" to set "Maximize Data Throughput for File Sharing" (Will also change Server service memory usage)..
- WinXP/Win2k3: Open Control Panel -> System-Applet -> Advanced-Tab -> Performance-Settings-Button -> Advanced-Tab and select "System Cache"-Option.
- Registry:
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Control \Session Manager \Memory Management]
LargeSystemCache=1 (Default Srv. = 1, Default Prof. = 0)
- SysInternals CacheSet - It can only reset the cache to a certain size from where it can grow or shrink again.
- Uwe Sieber - NtCacheSet - Periodically resets the cache working set, just like CacheSet but does it with a specified interval.
- Uwe Sieber - SetSystemFileCacheSize - Sets a permanent upper limit for the file cache using the SetSystemFileCacheSize API (Win2k3 only).
Note the LargeSystemCache is allocated from kernel memory area, which is shared with the pagedpoolsize and systempages. So when limiting these from using max size, then it will allow the filesystem cache to reach its max size of 960 MByte (WinNT4 512 MByte), else it will be limited to 512 MByte.[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Control \SessionManager \MemoryManagement]
SystemCacheDirtyPageThreshold = 100 (MByte; Default = 0; 0 = Half of physical memory)
More Info MS KB 920739 (Doesn't limit the size of the read cache)
Note not all applications will benefit from a large system cache. Many disk intensive applications (Like database systems) includes their own cache manager, and doesn't make use of the operating system controlled file cache. For MS SQL and Exhange the optimal value is to disable the large system cache.
Note enabling the large system cache can give stability issues, because it will configure the kernel area to allocate max memory for the file cache, while sacrificing the size of memory pools and number of page table entries. If using Unified Memory Architecture (UMA)-based video hardware or an Accelerated Graphics Port (AGP), then it will require page table entries to address the video memory. ATI recommends one doesn't enable large system cache to avoid data corruption. More Info MS KB Q895932
More Info MS Technet - File Cache Performance and Tuning (Good read)
More Info MS Technet - Optimizing your memory configuration
More Info MS KB Q232271
More Info MS KB Q228766
More Info MS KB Q837331
Credits ArsTechnica.com
Tags:
Category:
Updated: 29 November 2007
Comment by Glen Heitman - 15 May 2004 @ 1:02 Reply
Data coruption may occur if the large system cache feature is enable in Windows XP for ATI Radeon graphic cards. See www.ati.com/support/infobase/4217.html