![我如何告诉 Windows 7/8/10 不要积极地将 RAM 复制到页面文件?](https://linux22.com/image/1490344/%E6%88%91%E5%A6%82%E4%BD%95%E5%91%8A%E8%AF%89%20Windows%207%2F8%2F10%20%E4%B8%8D%E8%A6%81%E7%A7%AF%E6%9E%81%E5%9C%B0%E5%B0%86%20RAM%20%E5%A4%8D%E5%88%B6%E5%88%B0%E9%A1%B5%E9%9D%A2%E6%96%87%E4%BB%B6%EF%BC%9F.png)
许多人询问如何禁用页面文件,因为他们感受到了我将要询问的问题的影响。相反,我想修复该问题,而不禁用页面文件。
Windows 具有将其认为可能需要分页的内容存储在页面文件 RAM 中的能力,尽管理论上这有助于避免在紧急情况下造成破坏,但对于使用速度较慢的 HDD 系统(例如廉价笔记本电脑)的人来说,这非常烦人。
例如我现在的电脑:现在它有 4.8gb 的 RAM 在使用中,但目前有大约 8gb 的“承诺费用”
使用 sysinternal 工具,我发现页面文件的大部分内容都是 RAM 中内容的抢占式副本,看起来确实很低(我有 8GB 的 RAM,因此使用率为 61%),但使用 RamMap 我注意到大部分 RAM 使用是“待机”内存,而大部分“待机”内存是 Windows 缓存(用于加快文件加载速度的缓存)。其中很大一部分是二进制文件,即游戏的声音文件。
那么,目前发生的情况是:我玩一些游戏...Windows 将其加载到 RAM 上,并将其他内容复制到页面文件(导致游戏性能不佳),然后我停止玩游戏,Windows 将游戏文件缓存在 RAM 上,由于 RAM 使用率很高,它不断将更多内容放在页面文件上,期望我用完 RAM,这会使其变慢,因为它不断在我质量极差的 HDD 上进行 I/O。
但是,如果我只看应用程序的实际 RAM 使用情况、当前正在运行的应用程序、进程、内核和共享内容的提交费用,则实际 RAM 使用情况应该是 2.5gb,其中包括 RAM 和页面文件。
因此,我想尝试不是告诉 Windows 不要缓存(缓存很酷),或者禁用页面文件,而是告诉它不要使用页面文件,除非它真的需要(例如,如果物理 RAM 使用情况 - 待机物理 RAM 使用情况 > 物理 RAM 的 80%)。
有人知道我是怎么做的吗?
答案1
经过大量研究后,我发现我所问的问题实际上是不可能的,你无法调整 Windows 以使其运行得更好,能做的最好的事情就是完全禁用页面文件。
禁用页面文件对我来说基本上起了作用,解决了我的大部分性能问题(并导致了其他一些问题),但它是完全值得的。
答案2
恐怕这会使性能变差。正如您所承认的,您的磁盘很慢。这意味着拥有尽可能多的内存可用作磁盘缓存至关重要。这只能通过从 RAM 中删除未访问的内容来实现,而这需要将它们写入页面文件。
如果 Windows 不使用页面文件来腾出更多 RAM 用于缓存,则由于缓存减少,将需要更多的磁盘 I/O。这会使性能变差。
Windows 正在尽力扭转不利局面。设计 Windows 内存管理系统(从 Vista 开始)的人非常清楚自己在做什么,他们是现代硬件分页系统设计方面的顶尖专家。你我都比不上他们。他们没有犯下任何可以通过拨动开关来解决的重大错误。抱歉,没有神奇的“加快速度”按钮。
顺便说一句,现代固态硬盘具有很强的写入耐久性。因此,如果您无法添加更多 RAM,那么为您的页面文件添加一个小而便宜的固态硬盘也并非不合理。显然,将您的主要文件保存在固态硬盘上会更有用。
答案3
遗憾的是您不能这样做,基本上您可以拥有一个页面文件,或者没有页面文件,您可以选择存储页面文件的位置和大小,但您无法控制交换出的算法。
我确信你一定得到过令你沮丧的答案,就好像你是一个白痴,而微软开发人员总是正确的等等。
基本上,Windows 被设计为优先使用备用内存(读取缓存),而不是将内容保留在页面文件之外。这个想法是,您可能想要读取备用缓存中的数据,如果发生这种情况,您的性能就会提高。
我不太同意这一点,我的观点是,如果你将实时数据交换到页面文件,那么你的系统“不可避免地”会在某个时候想要读取该数据,而当它读取时,你会遇到延迟,因为它是从页面文件中读取的。此外,从页面文件读取的开销比直接从文件系统读取的开销更高。
以我的系统为例,Windows 总是会调出 Nvidia 多显示器省电工具的页面,我不知道为什么,算法中的某些东西让它选择该应用程序,即使 RAM 利用率低至 5%,它也会调出页面。
我的观点是页面文件应该只用于避免灾难,基本上类似于 swappiness=1 linux sysctl。这基本上与您在问题中问的一样,本质上 Windows 中唯一重要的 RAM 使用部分是“正在使用”和“已修改”,已修改的是写入缓存,显然需要将其数据转储到磁盘才能清除,而清除待机缓存不会产生任何负面影响。
我已经在我的 32 GB 的 Windows 系统上进行了大量测试,并且我没有看到任何证据表明启用页面文件可以提高性能,但是我发现在尝试使用它选择分页的任何应用程序时会出现性能损失,从而导致延迟。
对于该怎么做的问题,我给出的明确答案是,如果系统稳定性是您的首要目标,请保持页面文件处于启用状态,并将其设置为至少 8 GB。如果您的目标是性能,尤其是如果您至少有 32 GB 的 RAM,那么一定要禁用页面文件。