有一台机器,拥有非常快的 RAID 阵列和快速的互联网连接。但是,它只有 8GB 的内存,用完了真的快,当上传完成的时候。
有什么想法可以禁用或限制缓存吗?
(我尝试从设备管理器禁用写入缓存。但那只是写入缓存,并没有帮助。)
答案1
缓存的全部意义在于它使用没用过内存,一旦应用程序请求更多内存,就会放弃它。因此,您不想限制其大小,因为这样做只会让可用内存完全浪费。
答案2
您必须调用系统 API SetSystemFileCacheSize()
记录在此处:http://msdn.microsoft.com/en-us/library/aa965240.aspx
一些 GUI 程序允许这样做:http://technet.microsoft.com/en-us/sysinternals/bb897561
但您可能更喜欢 CLI,以便在系统启动时自动运行它:http://www.uwe-sieber.de/ntcacheset_e.html(查看页面中间,它适用于 2k8)
或者只需编写一个调用 SetSystemFileCacheSize() 的 powershell 脚本
请注意,强烈建议不要在生产环境中禁用缓存。
对于虚拟机,通常会将缓存大小限制为一个较小的值,而不是禁用它。
答案3
我们公司在 Windows Server 2008 R2 上也遇到过这个问题。我们的情况是机器完全卡住了。这似乎是 Windows 服务器版本的一个错误,因为在我运行 VirtualBox 的小型 Windows 7 机器上,或者在 Linux 下,在相同情况下都没有发生这种情况。
您可以使用其他人已经发布的 API 将缓存设置为一定限制,但您可以找到直接使用它的应用程序,例如设置系统文件缓存大小或者NT 缓存设置器。
缺点是每次重启后都需要设置缓存。您也可以使用此功能一次性清除整个缓存。
我们将具有 14 GB RAM 的虚拟机上的文件缓存设置为 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
注意:必须以管理员权限启动该工具。
答案4
要限制文件缓存,请确保未启用文件共享性能的“最大值”选项,并且您可以通过选择“最小化使用的内存”或“平衡”来指定文件缓存的最小内存量。
要检查当前配置,请转至:开始->控制面板->网络连接->本地连接->在常规选项卡上,属性->选择文件和打印机->属性..如果选择了最大化选项,则选择任何其他选项。