如果我有很多 RAM,我应该禁用交换文件还是应该将它移动到虚拟 RAM 驱动器?

use*_*322 105 memory windows performance pagefile virtual-memory

想象一下,我有大量的 RAM。假设 64GB。即使是游戏 PC 也是如此。现在,Windows 中页面文件的默认位置在主操作系统驱动器上,无论是 HDD 还是 SSD,它们通常都更快,但仍然不如 RAM 快。

有些东西告诉我禁用硬盘驱动器上的页面文件或创建虚拟 RAM 驱动器并让页面文件在那里可以使 Windows 将其所有虚拟内存移动到 RAM,从而提高系统的性能,但我对此不太了解区域,所以这可能根本不是真的。

两种方法我都试过,但是我无法以我在记忆方面的知识水平来分析结果以得出明确的结论。

这行得通吗?如果不是,为什么?

Dav*_*rtz 140

无论您拥有多少 RAM,您都希望系统能够有效地使用它。由于两个原因,根本没有分页文件会迫使操作系统低效率地使用 RAM。首先,它不能使页面可丢弃,即使它们很长时间没有被访问或修改,这也迫使磁盘缓存变小。其次,它必须保留物理 RAM 来支持不太可能需要它的分配(例如,私有的、可修改的文件映射),导致您可以拥有大量空闲物理 RAM 但分配被拒绝的情况避免过度使用。

例如,考虑一个程序是否对 4GB 文件进行了可写的私有内存映射。操作系统必须为此映射保留 4GB 的 RAM,因为该程序可以想象地修改每个字节,并且除了 RAM 之外别无他处。所以马上,4GB 的 RAM 基本上被浪费了(它可以用来缓存干净的磁盘页面,但仅此而已)。

如果您想充分利用您的 RAM,您需要有一个页面文件,即使它从未使用过。它作为一种保险政策,允许操作系统实际使用它拥有的 RAM,而不必为极不可能的可能性保留它。

设计操作系统行为的人不是傻子。拥有分页文件为操作系统提供了更多的选择,而且不会造成糟糕的选择。

尝试将分页文件放在 RAM 中是没有意义的。而且,如果您有大量 RAM,则不太可能使用分页文件(它只需要在那里),因此它所在的设备的速度并不特别重要。

  • 我与否决票相矛盾。但是对于您的最后一条评论:我运行 2 台不同的机器而无需交换。如果您确切地知道机器将如何使用,那就太好了。 (11认同)
  • @DavidSchwartz 您提供的信息在技术上是正确的,这是很好的信息。但是,无论您拥有多少 RAM,您都应该始终拥有一个页面文件的结论是不正确的,我坚持我的主张,即这不应该是公认的答案。 (10认同)
  • 我怀疑 ramdrive 中的页面文件最初是作为一种货物崇拜的“解决方法”,因为某些软件如果检测到没有页面文件就会拒绝启动。(有人告诉我 Adob​​e 的图形/视频工具可以做到这一点。) (8认同)
  • 我只是不喜欢听到“页面文件很神奇,所以不要关闭它们,否则你会后悔”,当我知道在许多常见情况下你*可以*关闭它们,并安全地看到性能的提高因为当 MMS 想要做某事时,您不再将磁盘 I/O 增加 100% 或更高。我想从辩论另一端的人那里听到的是“是的,在某些情况下,您可以关闭它们并减少可能导致颠簸的磁盘 I/O”。我并不是说页面文件总是不好,也许你可以说它们并不总是必要的。 (7认同)
  • 我意识到让我对这一切感到恼火的是,一方面似乎在说“页面文件除了好的什么都做不了”,而另一方面是“页面文件很糟糕”,然后人们就会在一侧或另一侧根深蒂固。“事实”是,在某些情况下它们非常有用,甚至可以防止崩溃,而在其他情况下,它们是不需要的,实际上可能会导致性能下降。无论如何,作为我的最终声明,我很高兴。长寿和繁荣,@David Schwartz。 (7认同)
  • 这不应该是公认的答案。结论是不正确的,因为答案没有考虑到 OP 的假设,即他拥有“大量 RAM”,我认为这意味着他的 RAM 比他使用的要多得多。在这种情况下,1) 磁盘缓存的大小不受影响,2) 由于永远不会读取的分配而“浪费”RAM 也不是问题。 (4认同)
  • @Bigwheels“*但是在所有 RAM 都已提交之前这不是问题。*”不,这不是真的。在没有页面文件的情况下,已提交但尚未使用的每个 RAM 字节都是一个 RAM 字节,仅限于保存干净的、支持的页面。这会影响性能(通过强制早期丢弃属于工作集的干净页面)早在任何东西都快用完之前。 (4认同)
  • 说每个人都必须一直使用页面文件的唯一可接受的理由是,无论他们拥有多少 RAM 以及他们如何使用他们的 PC,如果内存管理系统非常非常地损坏。运行带有 4GB RAM 的 Win8 的人是否需要页面文件?绝对地。运行带有 64GB RAM 的 Win8 的人是否需要页面文件?只有当他们正在做大量使用超过大多数用户使用的 4GB - 8GB 的​​事情时。当然,页面文件会导致颠簸。人们怎么能争论这些观点呢? (4认同)
  • @FredHamilton 不,那将是一件*坏事。开始写入页面文件的*最坏* 时间是在您需要它的时候 -- 那是 I/O 对系统造成最大危害的时候,因为您需要 I/O 功能来读取页面文件并写入最近修改的数据。您实际上希望在 I/O 不宝贵的时候尽早开始机会性写入,以便以后可以丢弃更多页面。我并不是要粗鲁,但我确切地知道我在说什么,并且已经花了几十年的时间研究这些东西,经常被不知道的人告诉我错了,这很烦人。 (4认同)
  • 我没有说 MMS 应该在 RAM 用完之前立即写入页面文件,我说的是“直到实际需要它”,我的观点是,如果您有一个非常大的文件,则不需要它RAM 量,而您使用的程序只要求其中的一小部分。然而,即使只使用了 10%-20% 的 RAM,Windows(至少是 XP,我上次使用页面文件运行 Windows 时)也会读取/写入足以导致抖动的页面文件。 (4认同)
  • David Schwartz 是绝对正确的,如果您真的担心分页到磁盘可能会减慢系统速度,您可以几乎不花钱(40 澳元)购买 64GB SSD,并将其用作分页/交换磁盘。此外,保留 RAM 以备以后需要更多内存的可能性还有其他性能影响。在 Windows(和其他操作系统)中,它会将常用项目放入内存缓存中,在需要时可以立即销毁,但在需要时可以比从磁盘读取更快地访问 (3认同)
  • @DanNeely:+1。其中一款战锤游戏也是如此。:) (3认同)
  • @Bigwheels 你有多少内存并不重要。这就像说你不必担心钱,因为你的支票簿里有很多支票。如果该 RAM 已提交,即使未使用,系统也将不得不拒绝后续分配。(考虑一个程序,它对 1GB 文件进行不可共享的、可修改的映射。即使该映射没有使用 RAM,如果没有分页文件,1GB 的 RAM 也将被限制为仅用于干净的、可丢弃的页面。) (3认同)
  • @Bigwheels 因为后备商店已提交。这与你不能仅仅因为你的银行账户中有足够的钱而开支票的原因是一样的。Windows 不会过量使用后备存储,因此如果它没有分页文件,它也不会过量使用 RAM。如果已提交,则可用多少 RAM 并不重要,除非有足够的未提交后备存储,否则它不能用于保存任何不可丢弃的内容。不可共享的、可写的文件映射提交与映射大小一样多的后备存储,即使它实际上从未使用任何 RAM。 (3认同)
  • @DavidSchwartz 当您有页面文件时,您针对没有页面文件提出的每一个论点也是正确的。关于您的论点,添加 1GB 的 RAM 相当于添加 1GB 的页面文件。我不确定你为什么坚持推动没有页面文件是不好的议程,但这对阅读你的答案的人来说是一种伤害。 (3认同)
  • @Bigwheels 如果没有页面文件,1GB 的私有、可修改映射会阻止 1GB 的 RAM 保存可丢弃的页面。对于 1GB 的页面文件,它不会。因此,“当您拥有页面文件时,您针对没有页面文件提出的每一个论点也是正确的。” 简直是假的。“我不确定你为什么坚持推动没有页面文件是不好的议程”,因为它*是*坏的,原因我已经解释过。(而且我没有看到你理解的证据。) (3认同)
  • @FredHamilton 说“页面文件会导致颠簸”相当于说内存管理系统非常非常糟糕。您本质上是在声称为系统提供更多选择(因为这就是页面文件所做的一切,它不需要系统执行任何操作)会使性能变差。我不明白你怎么能说,“只有当他们做大量使用超过 4GB - 大多数用户使用的 8GB 的​​事情时”。正如我多次解释的那样,他们有多少可用的 RAM 并不重要。 (3认同)
  • @DavidSchwartz '说“页面文件会导致颠簸”等同于说内存管理系统非常非常糟糕。我会说你描述的彩信严重损坏。唯一一个具有 4GB RAM 和 4GB 页面文件的系统比具有 64GB 且没有页面文件的系统更可靠、更不混乱的宇宙是内存管理系统非常、非常损坏的宇宙。 (3认同)
  • 我确实同意带有页面文件的系统不必很糟糕 - 我只是从经验中知道,在我使用过的每个版本的 Windows 中都更加糟糕,因为 Windows 正在读取/写入页面文件,即使它只使用 10可用 RAM 的百分比。如果系统在实际需要之前不使用页面文件,那么没有人会与您争论(我相信 linux 更接近于它,如果还没有的话)。那将是一件很棒的事情。但是,至少对于 Windows,它不是这样工作的。 (3认同)
  • 我知道 MMS 设计人员可能正在为一些突然的最坏情况内存分配请求做准备,但我不明白为什么在运行任务要求的数小时/数天/数年内必须如此频繁地写入/读取页面文件一小部分 RAM。我不是说我们不需要页面文件,我只是说从零到完美,这个特殊的彩信不够完美,我(以及我可以告诉许多其他人)获得了明显更快的硬盘通过禁用页面文件不会产生负面影响的 I/O。 (3认同)
  • @FredHamilton 所以你的抱怨是我没说的话? (3认同)
  • @NickSotiros 更多的 RAM 总是比等量的交换更好。但这几乎从来都不是你面临的决定。当然,如果您可以选择多 16GB 的 RAM 或多 16GB 的交换,请选择 RAM。 (3认同)
  • @DavidSchwartz 我真的不明白为什么人们如此强烈地支持页面文件,而常识(和实际经验)表明它工作正常。你的比喻“这就像说你不必担心钱,因为你的支票簿里有很多支票”是不正确的。打个比方,你以 50,000 美元/年的价格相处得很好,而你赢得了 1000 万美元。如果您保持相当接近相同的生活方式,您就不再需要担心钱。如果您只想玩魔兽世界和上网冲浪,我相信您可以在 64GB 的机器上无需页面文件即可完成。 (2认同)
  • @BamsBamx 如果达到这一点,您要么需要获得更多 RAM,获得更快的交换设备,减少机器上的负载,或容忍性能下降。硬件只能做它可以做的。 (2认同)
  • 当然,问一个关于它的问题,如果我不回答,请指出来。几十年来,操作系统开发人员一直在精确地优化和微调虚拟内存系统,但不了解它的人坚持寻找一个不存在的神奇“更快”按钮。 (2认同)

Art*_*ner 36

你的假设是完全正确的。

内存管理算法非常复杂,无论如何都不完美。因此,即使有足够的备用 RAM 也会发生交换。在某些系统上,例如Linux,您可以控制swappiness,而在其他系统上则不能。通过在仍有大量 RAM 时换出数据,系统以自己的方式为可能耗尽 RAM 的情况做好准备。

因此,禁用交换功能可能会提高性能,因为您将只使用如您所说的更快的 RAM。

需要考虑的一件事(您已经提到过) - 您需要有足够的RAM 来容纳您正在执行的所有程序,否则您将面临内存不足的风险。在这种情况下,性能会下降,某些进程可能会被操作系统终止,系统可能会崩溃/冻结。(在此处阅读更多相关信息)

在某些机器上,尤其是那些将交换文件保存在 HDD 而非 SSD 上的机器上,禁用交换的效果非常明显。在其他方面,它不是那么明显。但即使你没有得到明显的改进,换一种方式想一想,通过禁用交换,你会在你的 SSD 上节省一些磁盘空间。

通过禁用交换,您还可以防止内存算法执行不必要的操作 - 将数据从 RAM 移动到交换,反之亦然 - 在 SSD 的情况下,这将防止过度磨损。无论如何,这将通过消除不必要的操作来提高性能。

另外,请阅读:

  • @DavidSchwartz,我不明白开发内存管理算法的人很聪明这一事实对原始主题有什么影响。OP 询问禁用交换是否可以提高性能,我已经解释说它可以在某些条件下并在其他条件下导致问题。回答你为什么(?)的问题 - 我可以说,因为算法并不完美,用户可以对其进行微调。这就是为什么在 Linux 中有一个 swappiness 参数,这就是为什么禁用交换是完全可能的。 (20认同)
  • @smc OP 的用例没有什么异常。操作系统 [未针对沼泽标准用例进行适当调整](http://serverfault.com/questions/23621/any-benefit-or-detriment-from-removing-a-pagefile-on-an-8gb -ram-machine/23684#23684) 完全是胡说八道。(有关您为什么不想这样做的更多信息,请参阅我的回答。) (12认同)
  • 这个答案是不正确的,并且包含很多错误信息。但了解其错误原因的简单方法是——设计操作系统内存行为的人可能是世界上最聪明的人之一。他们为什么要设计一个系统,让它有更多的选择(当且仅当它认为这是最好的时候交换的选项)会使其性能变差?只有白痴才会设计出这样的系统。 (9认同)
  • 给定算法总是会为用户做出理想决定的假设是完全不正确的。他们根据程序员确定的重要参数做出决定。这很可能与用户需要发生的事情直接矛盾。 (5认同)
  • @ChrisH 您也可能无法将 sql 数据库加载到文字处理器中,因为它们完全在 RAM 中运行 :-) (2认同)

Pet*_*ter 14

你能安全地禁用页面文件吗?

如果您的可用内存(包括虚拟内存)用完,系统将无法继续保证确定性执行,并自行结束。在此之前,操作系统会做各种其他的事情,例如杀死使用过多内存的程序。我想说的是,内存永远是有限的,每个操作系统都可以解决这个问题。因此,将总可用内存限制为 64 GB 不会损害 Windows - 许多系统即使使用页面文件也不能超过 8 GB,因为使用 1 或 2 GB 内存时,页面文件通常比 6 或 7 GB 小得多。应该注意的是,只要您有过多的未使用 RAM,操作系统维护页面文件的开销将无法衡量。

将页面文件放在 ramdisk 上有意义吗?

为了增加可用内存,大多数(如果不是全部)高级操作系统都使用某种交换文件,它们会占用 RAM 中的一些内存并且有一段时间没有被访问,将内存写入硬盘(swapfile aka pagefile),并且从 RAM 中删除内存,以便获得更快的内存。交换文件用于将内存的最大大小扩展到可用 RAM 的大小之外。

因此,使用 ramdisk(通过 ramdisk 的大小减少可用内存)来托管交换文件(通过交换文件的大小增加可用内存)是可行的,但没有多大意义。它不会提供比禁用页面文件更多的内存,但它仍然需要系统运行分页算法。

  • @Mast 这过于简单化了。交换文件也允许有效地使用 RAM。 (6认同)
  • 正确的。将字节从 RAM 复制到 ramdisk 上的页面文件是最快的页面文件。但根本不复制更聪明。 (2认同)
  • 交换文件可以弥补 RAM 的不足。如果有足够的 RAM,则无需补偿。不过,您的操作系统仍将使用交换文件,因此在这种情况下将其关闭会更快。 (2认同)

dem*_*ryu 8

重申其他人所说的,将交换移动到直 RAM 磁盘是毫无意义的(在最常见的情况下,见下文)。它实现了在某个时刻,当系统缺乏可用内存时,一些数据以相当低效的方式从 RAM 移动到 RAM。

在 HDD/SSD 上进行交换实现了操作系统可以清除一些完全未使用的 RAM 页面并将释放的空间用于例如文件缓存或其他系统缓冲区。您可能没有意识到系统分配的这些 RAM 缓冲区较少,因为没有页面文件就没有可用的虚拟内存;所以实际上你可能会通过禁用交换来阻碍你的表现。

但是,作为交换驱动器压缩 RAM 磁盘,即“ZSWAP”驱动器,通过将一段 RAM 的空间效率提高到一个一定程度上。


Dan*_*n W 6

从理论上讲,将页面文件放入 RAM 完全没有意义,因为您只是在消耗您应该获得的东西,而 Windows 是基于页面文件不会用于此类目的的假设而构建的。

然而在实践中,有缺陷的设计和理念甚至可以使它进入 Windows 内核,而微软的内存管理也不一定是完美的。许多人发现将页面文件放入 Ramdisk 确实会提高性能,只要您有足够的内存。

我编译了一篇文章,其中显示了来自单个论坛线程的此类用户的集合,他们发现尽管有大量可用的 RAM,但页面文件仍在使用:

http://www.overclock.net/t/1193401/why-it-is-bad-to-store-the-page-file-on-a-ram-disk/290#post_23508589

  • 特别是,“页面文件正在被使用”这一说法需要证据。仅在页面文件中包含 GB 的内容并不能证明页面文件的使用方式将其置于关键性能路径中。要评估这一点,请将页面文件单独隔离在一个分区上 - 或者至少隔离一个未主动用于其他用途的页面文件 - 然后您可以在该“逻辑磁盘”上使用 PerfMon 来监视其 IO 速率。如果页面文件不经常被读取,那么向其写入多少内容都没有关系! (2认同)

har*_*ymc 6

如果您没有页面文件,那么在出现 BSOD(崩溃)的情况下,Windows 将无法写入崩溃转储文件。这意味着您将无法使用适当的工具来分析问题。

将页面文件放在 RAM 中几乎没有用,因为它可能会在崩溃中丢失。

有关详细信息,请参阅 Microsoft 文章了解故障转储文件


Jam*_*yan 5

不要禁用交换文件 这不仅仅适用于内存不足的情况。 关闭它并没有直接的性能提升,Windows 仅在需要时从它读取,它一直写入它,因此它在需要时就准备好了。

如果内存大小超过 4GB 左右,则可以将其减少到大约 2/3 左右,因为它存储压缩的内存映像。如果 SSD 上没有空间,您可以将其放在较慢的硬盘上,该硬盘不会被其他频繁访问的磁盘访问。但在某个地方拥有一个是有好处的。

有关原因的更多信息,请参阅此答案。https://superuser.com/a/286476/4236


小智 5

对于 Windows,来自马口:

\n\n
\n

有些人认为没有分页文件会带来更好的性能,但一般来说,有分页文件意味着 Windows 可以在修改列表上写入页面(表示未主动访问但尚未保存到磁盘的\xe2\x80\x99 页面) )输出到分页文件,从而使该内存可用于更有用的目的(进程或文件缓存)。因此,虽然某些工作负载在没有分页文件的情况下可能会表现得更好,但一般来说,拥有分页文件意味着系统可以使用更多可用内存*(不用担心 Windows 将\xe2\x80\x99 无法在没有分页文件的情况下写入内核故障转储)大小足以容纳它们的分页文件)。

\n
\n\n

https://blogs.technet.microsoft.com/markrussinovich/2008/11/17/pushing-the-limits-of-windows-virtual-memory/

\n\n
    \n
  • 可用内存 - 因此,虽然这建议使用虚拟内存,但它也表明您需要大量的 RAM 才能确保从没有页面文件/虚拟内存中受益。我有 4GB RAM 128GB SSD,没有页面文件,但我用它来浏览网页和输入 Word 文档。
  • \n
\n

  • 根据我个人的经验教训,以及我向所有新员工宣扬的一句话:只有两条规则。#1:永远不要相信微软。#2..你没有听规则1,所以没有规则2。 (2认同)