我如何告诉Windows 7/8/10在为页面文件制作RAM副本方面不那么积极?


3

很多人都会问如何禁用页面文件,因为他们会感受到我会问的问题的影响。相反,我想解决问题,而不禁用页面文件。

Windows具有存储在它认为可能需要分页的页面文件RAM的能力,虽然理论上这有助于避免在紧急情况下丢失,但对于具有慢速HDD的系统(例如便宜的笔记本电脑)的人来说,这是非常烦人的。

例如我当前的计算机:现在它有4.8GB的RAM在使用,但有大约8GB的当前“提交费用”

使用sysinternal工具,我发现页面文件的大部分内容都是RAM中的事物的抢占式副本,看起来很低(我有8gb ram,因此使用率为61%),但是使用了RamMap我注意到ram的大部分用法都是“待机”内存,大多数“备用”内存都是Windows缓存(使文件加载速度更快)。一个巨大的块是一个二进制文件,是一个游戏的声音文件。

那么,目前发生了什么:我玩一些游戏...... windows将它加载到RAM上,并将其他东西复制到pagefile(使游戏性能变差),然后我停止播放,windows将游戏文件缓存在RAM上,因为RAM使用率很高,它不断在页面文件上放置更多的东西,期望我耗尽RAM,这使得它变慢,因为它在我质量极差的硬盘中不断地进行I / O.

但是,如果我只关注应用程序的实际RAM使用情况,当前运行的应用程序,进程,内核和使用的共享内容的提交费用,真正的RAM使用量应为2.5gb,包括RAM和页面文件。

所以,我想尝试而不是告诉Windows不缓存(缓存有点酷),或者禁用页面文件,我想告诉它不要使用页面文件,除非它真的需要(例如物理ram使用 - 待机物理公羊使用率>物理公羊的80%)。

谁知道我是怎么做到的?


更新到Windows 10: superuser.com/a/952142/174557 这里RAM被压缩并存储在SYSTEM进程中以减少分页
magicandre1981

老实说,我希望永远不会在我的个人电脑上安装win 10。虽然知道win 10有所帮助(这里有一堆胜利的10台机器,当它们破坏时,我必须修理它们)。
speeder

“使用sysinternal工具,我发现页面文件的大部分内容都是RAM中事物的抢先复制” - 你在看什么告诉你这个?你怎么知道这是“先发制人”,你到底是什么意思? n.b。:Windows不会“抢先写入页面文件”。将页面从修改的页面列表移动到备用列表时,会发生写入页面文件的操作。并且由于内存压力,页面只有在从工作集中删除时才被放在MPL上。关于它没有任何“先发制人”或“预测性”。
Jamie Hanrahan

在写入页面文件之前,新的“压缩内存”机制实际上是关于避免页面文件写入更长时间。 (但是由于压缩,它需要的内存少于将它留在原处所需的内存。如果它实际上必须写出来,则必须写出更少的内存 - 或者如果需要则稍后读取。
Jamie Hanrahan

这是我读过的一堆文章,windows写入页面文件,以避免在你确实需要RAM的情况下在紧急情况下执行此操作。
speeder

Answers:


1

这会让性能变得更糟,我担心。当你承认,你的磁盘很慢。这意味着尽可能多的内存可用作磁盘缓存是必不可少的。这只能通过删除未从RAM访问的内容来实现,并且需要将它们写出到页面文件中。

如果Windows没有使用页面文件为缓存创建更多RAM,则由于缓存减少,将需要更多的磁盘I / O.这会使性能变差。

Windows正在充分利用糟糕的情况。设计Windows内存管理系统(从Vista开始)的人们确切知道他们在做什么,并且是现代硬件上寻呼系统设计的领先专家。你和我都不比他们更了解。他们没有做任何可以通过翻转开关来修复的重大错误。对不起,没有神奇的“走得更快”按钮。

顺便说一句,现代SSD具有显着的写入耐久性。因此,如果您无法添加更多内存,为页面文件添加一个小巧便宜的SSD并非不合理。显然,将主文件保存在SSD上会产生更大的不同。


那么,如何在RAM中拥有一个带有游戏音乐的巨大二进制文件,以及我在页面文件(而不是RAM)上使用的实际应用程序有助于我的系统更快?
speeder

@speeder它帮助您的系统在过去更快。在需要时对游戏音乐进行分页,一遍又一遍地阅读每一首音乐而不是将它们保存在RAM中,可能会使游戏无法播放。现在系统需要根据使用情况的变化进行调整,并且在这样做时会很慢。这只是具有慢速磁盘的系统的本质。
David Schwartz

回覆 “我在页面文件中使用的实际应用程序(而不是RAM” - 抱歉,但代码几乎从未被分页到页面文件。原因是代码在进程之间共享,并且几乎总是只读的。没有理由将其写入页面文件。如果内存压力很高,那么最近访问的代码就不会从RAM中删除,因为它总是会从它首先出现的exe或dll中导致故障。 (例外情况是,如果您正在调试代码并在其中设置断点,但这只适用于您设置它们的各个页面。)
Jamie Hanrahan

@JamieHanrahan我理解他是指他正在使用的实际应用程序而不是可执行文件/库本身分配,修改和访问的页面。当然,来自文件映射的干净,未修改的页面是可丢弃的,不需要写入页面文件。
David Schwartz

@DavidSchwartz好的。在任何情况下,页面文件支持的虚拟内存 - 主要由进程私有v.a.s组成。并且页面缓冲池 - 没有先发制人地写入页面文件(即,它仍处于工作集中)。嗯,例外:如果进程在页面文件支持的部分上使用FlushViewOfFile,则页面会在它们仍在进程的工作集中时写入。但这种情况并不常见,而且是这些流程中的代码,而不是操作系统。 (n.b。:如果发生了任何“先发制人”的写作,我会称之为“预测性”。我不确定它应该是什么“预先”。)
Jamie Hanrahan

1

经过大量的研究,我了解到我所要求的实际上是不可能的,你无法调整Windows以表现得更好,可以做到的最好,就是完全禁用页面文件。

禁用页面文件主要是为我做了诀窍,解决了我的大多数性能问题(并导致一些其他问题),但这完全是值得的。

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.