澄清这个问题。
任务管理器以及进程通知器报告已使用的内存量很高,远高于实际的物理内存使用量,通常是物理内存使用量的 1.5 倍到 2.5 倍。
同时,如果我在任务管理器或系统通知器中启用提交列,则此提交的大部分不会分配给任何进程,因此其实际上是幽灵使用。
Rammap 对此感到困惑并将其认为是零内存,同样,资源监视器也会对此感到困惑并将其认为是空闲内存。
但是我不能将其视为可用内存,因为当此提交接近我的虚拟内存限制时,Windows 将进入内存不足状态。
我是否正确地认为这可能是内核内存使用问题,可能与坏的驱动程序或其他东西有关?
我已经确认它与任何缓存无关,不是待机,不是修改,不是超级提取或其他类型的缓存,即使在全新启动时,我也有 5 个 gigs 的提交不与任何进程或缓存绑定。
答案1
因此,罪魁祸首是 Nvidia WDDM 2.7 驱动程序与 Windows 版本 21H2 或更高版本的结合(2004 年可能会出现此问题,但未确认)。
我将解释如何诊断以帮助其他人,但请注意,我从未真正直接解决过这个问题,但至少找到了原因。
正如问题中所述,我观察到提交使用率与物理内存使用率之间存在非常大的差距,在正常情况下,要接近满载 RAM 使用率,我必须启用一个非常大的交换文件(42 GB 页面文件,最大占用 32 GB RAM)。因为我的提交与 RAM 比率约为 2.1:1.0。
关闭系统托盘中的所有内容,所有前台应用程序均无任何结果。此时我怀疑与驱动程序(内核)有关。
然后我偶然注意到一件有趣的事情,有一天,我在应用程序运行时意外触发了 Windows 关闭,我在提示未保存的工作时单击了“取消”,然后回到桌面,几乎没有任何运行,提交量下降了 20 GB。我注意到 Windows 搜索不再起作用。
事实证明,Windows 1809(我升级之前的版本时没有出现任何问题)不会对 textinputhost.exe 和 searchapp.exe 进行 GPU 加速,而 21H2 则可以。这两个系统关键的 Windows 二进制文件一直在运行。后台提交泄漏的主要罪魁祸首是 textinputhost.exe。
如果我卸载我的 Nvidia GPU 驱动程序,问题就会消失;如果我保持安装但使用集成的 Intel GPU 作为桌面应用程序的主 GPU,问题也会消失。
如果我降级到 451.48 之前的任何 Nvidia 驱动程序版本,问题就会消失,尽管会出现奇怪的桌面性能问题(这些问题在 1809 上不存在)。
在测试驱动程序之前,我认为 WDDM 2.6 也可能是罪魁祸首,但 Nvidia 在 45x 驱动程序中引入了 WDDM 2.7 支持。
Windows 10 1809 没有这个问题,但它没有 GPU 加速文本输入主机,也没有 WDDM 2.7 支持。
因此,现在我可以通过终止这两个进程,在高正常运行时间时随心所欲地恢复大量提交,或者我可以使用我的 iGPU 来绕过这个问题,我现在正在使用桌面,而 Nvidia 仅用于游戏。
请注意,所有 Nvidia GPU 加速应用程序都存在高提交与物理内存使用率问题,因此游戏等具有虚高的提交值,但由于它们一次运行的时间很短,因此问题就没那么严重了。
我尝试全新安装操作系统,但没有任何效果,因为很明显我想排除现有安装中的某些内容是否引发了该问题,但在全新安装中,无论使用哪种 WDDM 2.7+ Nvidia 驱动程序,该问题仍然存在。
除了比率不佳之外,在 Nvidia 2.7 驱动程序上加速运行的任何程序也会出现内存泄漏,随着时间的推移,使用量逐渐增加,我所做的另一个观察帮助我指出驱动程序的原因是,如果我让 PC 进入睡眠状态然后再次唤醒它,这种泄漏就会重置。
对于那些感兴趣的人,我可以发布我的截图,因为在我发现这一点之前,我制作了十几个截图准备发布。