Answers:
缓存的全部要点是它使用未使用的内存,并在应用程序请求更多内存时立即将其放弃。因此,您不想限制它的大小,因为这样做只会使自由的ram完全浪费掉。
您必须调用
此处记录的系统API SetSystemFileCacheSize():http : //msdn.microsoft.com/zh-cn/library/aa965240.aspx
一些GUI程序允许它:http : //technet.microsoft.com/zh-cn/sysinternals/bb897561
但是您可能更喜欢CLI,以便在系统启动时自动运行它:http : //www.uwe-sieber.de/ntcacheset_e .html(位于页面中间,适用于2k8)
或者只是编写一个Powershell脚本,调用SetSystemFileCacheSize()
请注意,强烈建议您禁用用于生产的缓存。
对于虚拟机,经常将缓存大小限制为较小的值,而不是禁用它。
我们公司的Windows Server 2008 R2上也遇到了此问题。在我们的情况下,机器完全卡住了。在Windows的此服务器版本上,这似乎是一个错误,因为在相同的情况下,无论是在我的小得多的Windows 7计算机(在VirtualBox中运行)还是在Linux下,都没有发生此错误。
您可以使用其他API已发布的API将缓存设置为某个限制,但是您可以找到直接使用它的应用程序,例如SetSystemFileCacheSize.exe或NT Cache Setter。
缺点是您需要在每次重新启动后设置缓存。您也可以一次性刷新整个缓存。
我们将具有14 GB RAM的VM上的文件缓存设置为4 GB,它可以工作。刷新效果也很好,您可以直接在任务管理器中看到它。
显示当前的Windows设置:
SetSystemFileCacheSize.exe
显示帮助:
SetSystemFileCacheSize.exe /?
将最小大小设置为8 MB,最大大小设置为128 MB:
SetSystemFileCacheSize.exe 8 128
禁用最小大小并将最大大小设置为128 MB:
SetSystemFileCacheSize.exe off 128
禁用最小和最大大小:
SetSystemFileCacheSize.exe off off
刷新文件缓存:
SetSystemFileCacheSize.exe flush
注意:该工具必须以管理员权限启动。