禁用 Windows 页面文件有什么问题?

use*_*686 15 windows windows-7 performance swap pagefile

人们说你总是需要一个页面文件,它会提高性能,但我的 Windows 7 设置为没有页面文件运行。我只是不明白为什么人们会这样说 - 我有 6 GiB 的 RAM,而且我唯一一次几乎用完 RAM 是在我编译 Chromium 时,为此我临时启用了一个页面文件。

在典型情况下,我真的需要一个页面文件*来提高速度吗?为什么?

*我知道故障转储需要一个页面文件。不过,我从不使用故障转储,所以这无关紧要。

Ker*_*tts 8

页面文件永远不会提高性能,但也不一定会降低性能(通过适当的内存管理)。但是,在没有页面文件的情况下运行只会增加系统对于请求不可用内存的应用程序的不稳定性。

除非您的操作系统在内存管理方面特别糟糕,否则具有 6GiB 内存的页面文件应该没什么用。这并不是说它根本看不到任何用处;即使有足够的内存可用,IIRC MS Windows 在将内容分页时也有点疯狂。(为什么,我永远不会知道。)

但是,当您没有使用页面文件时发生的情况可能足以启用它:硬崩溃。大多数应用程序希望收到他们请求的内存。如果他们不这样做,他们就会崩溃。(啊,但是不得不生活在几千字节中的美好时光已经一去不复返了......对于太多的开发人员来说,处理内存管理的做法也已经一去不复返了。)

如果应用程序构建正确,它就会失败。(运气好的话,它根本不会失败。但不要指望它。)对于大多数应用程序,您都会遇到奇妙的失败。此外,接近该限制的应用程序越多,您就越有可能看到系统范围内的不稳定。

案例来自我自己的经历。Windows XP,4GiB,无页面文件。性能很棒。直到我们开始接近 4GiB 的限制。然后事情变得疯狂:应用程序会崩溃,菜单项只会部分显示(或根本不显示),按钮什么也不做,等等。我切换回页面文件,尽管它的性能更差 - 整体稳定性很简单更好更重要。

现在,也许您没有使用任何应用程序或在您的应用程序中工作会推动 6GiB,但我可以想到一些您可能接近的情况:视频编辑、摄影编辑、音频混合和制作等。--基本上是您处理大量数据的任何事物(使用或流式传输)。当该数据超出您的内存容量时,您的应用程序很可能会“噗通”一声。

  • 不,页面文件永远不会_提高_性能。它只会提高_稳定性_。分页,顾名思义,是一种磁盘级操作,磁盘操作总是比 RAM 级操作慢。而且,即使使用 6GiB(永远不会超过 2GiB),您很有可能仍然会遇到一些性能问题,因为 Windows 仍然会令人沮丧地将未使用的进程分页到磁盘。谁认为这是明智的,我希望他们'坦白!) (9认同)

Law*_*ceC 7

Mark Russinovich撰写的这篇文章将告诉您有关页面文件的所有信息。

我不知道“缓存”是否是关于页面文件功能的正确术语。缓存是一个可快速访问的数据临时保存点。当对物理 RAM 的争用过多时,操作系统会将内容“故障”到页面文件中。所以它是RAM溢出的权宜之计,以防止程序因内存不足而崩溃。但我确实相信 Windows 会尝试将一段时间未访问的内容放入页面文件中(Linux 也可能会这样做),因此从这个意义上说,它是一个缓存,但实际上并不是它的主要功能。

无论如何,请阅读文章。它将为您提供有关将页面文件设置为什么的良好指南。正如@Sandeep Bansal 所说,可能偶尔会有游戏需要您将其作为“需求检查”的一部分才能运行(但我不知道)。

编辑:这个例子可以帮助你理解页面文件的作用:

假设您有 512MB 的 RAM。您打开了许多程序,包括一个最小化的浏览器本身消耗 250MB 的 RAM,并且当时运行的所有程序的总 RAM 使用量为 500MB。

然后,您启动另一个程序(比如文字处理器),它想要分配 150MB 的 RAM。内存不足。然而,如果我们有一个分页系统,那么包含最小化浏览器的内存页面可以被分页到磁盘。这样就可以加载新程序了。

现在假设您想稍后返回浏览器。好吧,它需要“调入”刚刚发送到磁盘的内容。如果当时有足够的空闲 RAM,它可以毫无问题地做到这一点。如果没有,则必须先分页出其他内容。如果有很多程序争用 CPU 并且不断进行分页,那么事情就会变慢,并且您会遇到称为“颠簸”的情况。 所有这些分页进出都会导致性能下降,但它避免了由于内存不足错误而导致程序“硬”崩溃。这就是分页文件的目的。 太多的分页,即“颠簸”可能并不比程序只是放弃更好,因为它在大多数时间无法获得更多的 RAM。

现在,您可以看到如果存在算法来预测在给定时刻可能不会使用的内容,那么操作系统可以“预分页”它认为不会立即使用的内容。因此,即使 Windows 确实有足够的 RAM,它也会使用存在的页面文件来解释 Windows。它试图使尽可能多的 RAM 可用。Windows 就像 Linux,其中可用 RAM 充当磁盘缓存,因此如果平衡行为正确,它可以有助于整体性能。这是操作系统设计的全部内容,也是为什么从成千上万的程序员那里获得一个好的操作系统需要 10 年的时间。

因此,要实际回答您的问题,这是禁用页面文件的唯一错误。回到我提供的示例,如果没有页面文件,您将根本无法启动浏览器,或者编写得不好的程序没有进行防御性编程以预测 OOM 错误,这可能会表现得很奇怪。

  • +1 表示 Russinovitch 链接。这就是答案。如果你想放弃一个安全机制来防止可能的崩溃,那是你的特权。Windows 将在没有页面文件的情况下正常运行,除非它决定不这样做。;) (3认同)
  • 页面文件*不是*缓存!如果您的 ram 已满,而您仍想确保它看起来仍然像您的系统有更多可用的 ram,那么它将开始将数据从 ram 复制到您的磁盘(从似乎很困的进程),因此您仍然有可用的 ram您的新流程! (2认同)
  • @ultrasawblade:我反对您的编辑的反对意见是,您的示例指定了 97% 的 RAM 使用率(500/512),而我的示例指定了 33% 的 RAM 使用率(6 个中的 2 GB)。我**不是**询问如果我接近极限会发生什么;我已经很清楚会导致什么问题。我问的是,如果您还有很长的路要走,不会(应该?)发生颠簸或类似情况,会发生什么。如果您可以对我的情况提出相同的论点(使用 6 GiB 内存和 2 GiB),那会好得多;否则,它根本无法解决我的问题。 (2认同)