极端内核分页池内存使用(Win 7 64 位)

极端内核分页池内存使用(Win 7 64 位)

我目前在具有 12 个硬盘的文件服务器系统上运行 Win 7 Pro 64 位。这些硬盘通过 2 个 IBM M1015 控制器卡(已刷新到 LSI 9211-8i IT 模式固件)连接。我将该系统用作媒体文件服务器,并运行 FlexRAID 来管理快照 RAID 阵列。文件是非常大的蓝光备份、MKV 文件,通常大小为 25-35 GB。

当 FlexRAID 执行数据完整性检查(称为“验证”)时,它会同时从所有数据磁盘读取数据并计算每个文件的校验和。当我运行此任务时,我的分页池内存使用量会迅速上升,直到分配的虚拟内存用完,此时 Windows 会扩展 VM 池。这种情况会一直持续到任务最终完成,但在此期间我的系统变得非常缓慢且不稳定。

Process Explorer 显示没有导致泄漏的进程。FlexRAID 仅使用 79K 内存。使用 Poolmon,我发现 MmSt 标签是罪魁祸首——但这是 Windows 自己的内存管理器。由于未知原因,Windows 将 MKV 文件映射到虚拟内存中,导致使用率过高。我不确定如何阻止这种情况。

我尝试了 KB312362(针对 MS Server 2003 编写)中显示的建议,但没有效果。我关闭了 MS Security Essentials 和 Superfetch 服务,但情况仍然没有改善。

有什么方法可以让我深入研究这个问题,找出其根本原因吗?

答案1

这篇文章几乎解释了与您的问题相关的所有内容,包括各种解决方案:

http://blogs.technet.com/b/askperf/archive/2011/09/23/getting-to-know-the-mmst-pool-tag.aspx

帖子中的相关引述:

[...]

MmSt 池标签是什么?

内存管理器在为部分原型 PTE 保留内存时使用 MmSt 池标记。原型 PTE 是一种将页面或一组页面的物理位置映射到内存映射文件的结构。[...]

[...]

MmSt 池使用率高的最常见根本原因

  • 内存管理器无法在分配开始失败之前足够快地修剪分页池内存
  • 由于同时打开过多文件或大文件,导致文件 I/O 负担过重
  • Outlook .PST/Lotus Notes .NSF > 文件存储在服务器上并通过网络打开
  • (卷影复制)快照未卸载
  • 由于卷上的碎片或许多文件导致 $MFT 较大 VSS

[...]

故障排除步骤和解决方案

[...]

  • 调整最大分页池内存和修剪
    • [...]
    • 最大池使用量来自 KB312362 的可以安全地设置为十进制值 40,当分页池达到最大限制的 40% 时,将导致开始修剪
    • 分页池大小应设置为 0xFFFFFFFF,以确保系统尽可能多地保留分页池内存
  • [...]

[...]

这些注册表值位于HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management根据http://support.microsoft.com/default.aspx?scid=kb;EN-US;312362(也链接到该帖子)。

我建议阅读整篇文章以了解更多详细信息。有关分页池的更一般介绍,blogs.technet.com/b/markrussinovich/archive/2009/03/26/3211216.aspx 也值得一读(不是链接,因为 SO 认为我还不值得发布超过 2 个链接...)。

相关内容