为什么没有使用页面文件?


3

我遇到了Windows Server 2008 R2 Enterprise的问题。分页池加载内存但不加载实际的页面文件(我在驱动器上有空间)。

实际上问题在于内存过载,我认为这就是问题所在。

虚拟memery设置:

屏幕

页面文件的可用性: 屏幕内存使用量仍然慢慢增长

任务管理器性能: 屏幕

任务管理器流程: 屏幕

RAM地图: 屏幕

系统信息: 屏幕


1
但是使用了您的页面文件。注意当前“提交”如何已经高于物理内存量。//此外,你真的希望内核使用那么多内存吗?
Daniel B

1
使用poolmon来查看为什么页面缓冲池使用率太高以及哪个驱动程序使用了这么多RAM。
magicandre1981

i.stack.imgur.com/p8Ub6.png 顶级进程大约是143 MB,我正在寻找正确的方向吗?
George

首先用B对字节排序数据
magicandre1981

我已经完成了这个 i.stack.imgur.com/BpZSy.png
George21年

Answers:


1

第一条评论:“内核内存 - 分页”的显示,这里几乎是22 GB,是分页池虚拟大小

Windows中的“池”是内核空间堆存储。内核驱动程序和Windows内核模式代码使用它们的方式与用户模式程序使用的方式大致相同,但它们位于内核地址空间,对所有进程都是通用的,当然,只能从内核模式访问。有几种类型的池分配,但它们分解为“非分页”和“分页”区域。非分页池始终驻留在RAM中。

页面缓冲池实际上应该被称为“可分页”池,因为被称为“页面缓冲池”并不意味着它分页出RAM,或者它必然会分页。它确实意味着它与大多数用户模式分配一样被分页。

与用户模式分配一样,我们可以预期,在任何时候,页面缓冲池的虚拟大小的某些子集将在RAM中“驻留”或“有效”(可在不发生页面错误的情况下访问;此类RAM被视为“正在使用中” ); 另一个子集将“处于转换状态”(在备用或修改的页面列表上,可访问但具有软页面错误),其余的将被真正分页 - 在页面文件中,需要访问硬页面错误。

现在,22 GB是很多页面缓冲池。我的意思是,真的非常非常。这样的数量是非常不寻常的。我怀疑你有一个故障的设备驱动程序,像筛子一样泄漏分页内存。

我会使用poolmon或Windows Performance Toolkit来找出分配了所有池的内容。SU上有很多答案,详细说明了如何做到这一点。

在对您的问题的评论中,magicandre1981与他的一个答案相关联,详细说明了该程序。

除此之外,似乎有些东西阻止了对页面文件的写入。

来自RAMmap的屏幕上限(并且感谢您包括它)显示占用RAM的19 GB页面缓冲池(注意,这小于虚拟大小),大约620 MB它是“活动的”。意味着大量RAM被认为是“在使用中”。这是可以在没有页面错误的情况下访问的部分。描述这些虚拟页面的PTE设置了“有效”位。

几乎相同的数量,约680 MB,在待机页面列表中。

然后这是第二个问题的指标:超过17 GB位于“已修改”列表中。

“已修改”页面列表是指页面在从内容进行修改后从工作集中移出后放置的位置。(如果页面的内容未被修改,因为它被分页,那么当它被打开时从它的工作集丢失它只是放在待机页面列表,“可用”RAM的一部分,并立即可再利用其他用途。)这些页面不能简单地发布供其他进程使用; 他们的内容必须保存。对于页面文件支持的页面,“已保存”表示“写入页面文件”。

将已修改的页面写入磁盘后,它将被移动到备用列表,从该列表可以重新调整用途。备用列表计为“可用”RAM的一部分。(它也是该任务管理器显示中“缓存”计数器的一部分。)

因此,在修改后的页面列表中有超过17 GB的RAM - 您的系统希望将RAM写入页面文件的RAM。

这非常过分。

大多数系统在修改后的列表中的RAM不超过百分之几。每当修改后的列表超过一个小阈值时,系统进程中就会有一些线程负责将修改后的页面写回磁盘。他们没有做好这份工作。

我注意到您当前的页面文件大小约为5 GB,并且每个WMI输出它已满。(所以你的系统正在写入页面文件。)但是,由于某些原因,页面文件扩展似乎没有发生。

嗯 - 您已将页面文件大小限制为最大20 GB,即使它已扩展到该大小,也不足以保持其当前内容加上17 GB以上。也许如果你将最大可能的PF尺寸放大(Windows建议将近40 GB),那么事情就会失败。

但我对此表示怀疑。我认为Windows没有理由不将页面文件扩展到极限。没错,它不能容纳所有修改过的页面,但是保留大部分页面比将它们中的大部分保存在RAM中要好得多。

同时,那些17+ GB不可用于其他用途。这就是你的“可用”RAM如此之低的原因。

我们已经看到页面文件大小中的错误被清除:

  • 将页面文件设置为禁用
  • 关闭并重启
  • 确保旧的页面文件消失了。如果没有,删除它。
  • 将页面文件大小设置为合理的
  • 如有必要,请关闭并重新启动

你可以尝试一下。

但你真正的问题是你真的不应该首先需要20 GB的分页池。找到并解决这个问题。

之后,您应该再次检查页面文件的使用情况,并将其初始大小设置为常规使用量的至少两倍。没有充分的理由将初始尺寸设置为小于您的系统通常需要的尺寸。(我喜欢看到页面文件的使用率不超过25%,原因与空间分配算法有关 - 它们可以在有大量可用空间的情况下更好地工作。)

顺便说一句,“待机”和“修改”页面(在我看来有点误导)被视为任务管理器屏幕上“缓存”的一部分。因此,你有17.4 GB“修改”的事实解释了巨大的“缓存”数字。巨大的“缓存”数字本身并不是问题; 这是其中一个症状。


评论不适用于扩展讨论; 这个对话已经转移到了聊天中
DavidPostill

0

分页池是内核模式代码的分类。内核模式代码将使用分页或非分页池进行操作,某些操作要求使用某种类型。这可能会也可能不会被页面文件支持。由操作系统来分配和使用分页。事实上,分页会花费你的I / O,因此操作系统更愿意在物理上尽可能多地保留。对于x64位操作系统,24 GB物理是我看到的配置。操作系统可以很好地管理主存储器中的大多数操作。

https://technet.microsoft.com/en-us/library/ff382715.aspx

以上参考将有助于了解缓存大小。

我不认为这是一个问题。除了您使用过的工具中显而易见的指标外,我也无法详细说明。

编辑: - 在所有分析“看到~40条评论”之后,罪魁祸首被发现是第三方驱动程序。在一流的分析/指示的帮助下进行分析,这确实是一个问题(信用:Jamie Hanrahan)和分页池分析(信用:Magicandre)。需要进一步分析来回答实际问题。


这可能会也可能不会被页面文件支持。除“非页面缓冲池”之外的所有内存类别都将由页面文件支持。请注意,由PF支持不同于实际写入它。支持PF只意味着操作系统在PF中保留了空间。
Twisty Impersonator

我的意思是它仍然有机会使用页面文件。当我说时,我确实说过,操作系统可以使用它!当我说它可能没有PF支持时,我的意思是它可能不会经常被换掉。我理解“支持”应该被仔细使用,并感谢它使它在语义上正确扭曲!
Sreejith D. Menon

要添加它 - 对于内存映射,这是一个选择,它由页面文件或将映射到文件系统缓存的实际文件支持。因此,在这种情况下,它不会被分页文件支持,而是由基于其创建分节对象的实际文件支持。所以你可能想要调查那个方面太扭曲了。我知道谈论内存管理并不容易:)
Sreejith。D. Menon

“除了”非分页池“之外的所有内存类别都将由页面文件支持。”抱歉,但事实并非如此。正如SDM所说,由映射文件支持的内存分配由文件本身支持。这可能确实是页面文件(对文件句柄调用CreateFileMapping为NULL,并且你得到一个页面文件支持的部分),但更常见的是它是一个特定的文件。所有可执行代码(exe,dll等)都是以这种方式处理的,所以你可以看到必须有相当多的可执行代码。查看Process Explorer的“DLL”窗格以查看进程映射到的文件。
Jamie Hanrahan

Jamie Hanrahan和Windows内部的Jamie Hanrahan一样:O。如果是的话,那么现在是我的一些学习时间,很高兴见到你:)
Sreejith。D. Menon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.