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


15

人们说您始终需要页面文件,并且它将提高性能,但是Windows 7设置为不使用页面文件即可运行。我只是不明白为什么人们说这一点-我有6吉布的RAM,我甚至传来了唯一的一次接近的RAM运行时,我被编译铬,为此,我暂时启用页面文件了。

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

*我知道崩溃转储需要页面文件。不过,我从不使用崩溃转储,所以没关系。

Answers:


8

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

除非您的操作系统在内存管理方面特别糟糕,否则具有6GiB内存的页面文件应该很少使用。这并不是说它根本没有用。即使在有足够的可用内存的情况下,IIRC MS Windows在进行页面调度时还是有点疯狂。(为什么,我永远不会知道。)

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

如果正确构建了一个应用程序,它将失败。(幸运的是,它根本不会失败。但是不要指望它。)对于大多数应用程序,您将面临巨大的失败。此外,您拥有的应用程序越接近该限制,就越有可能看到系统范围内的不稳定性。

从我自己的经验来看。Windows XP,4GiB,无页面文件。Perf很棒。直到我们开始接近4GiB限制。然后事情变得发疯了:应用程序崩溃,菜单项仅部分出现(或根本不出现),按钮什么也没做,等等。我切换回页面文件,即使性能变差了-整体稳定性也很简单更好,更重要。

现在,也许您不使用任何应用程序或在能够推动6GiB的应用程序中工作,但是我可以想到您可能会遇到的一些情况:视频编辑,摄影编辑,音频混合和制作等。本质上是您要处理大量数据的任何事物(使用或流式处理)。当这些数据超出您的存储能力时,您的应用很可能会变得“糟糕”。


因此,简单地说(是/否):如果我从未使用超过2 GiB的RAM那么性能将不会提高吗?还是即使有这样的前提,仍然有需要注意的地方?
user541686

9
不,页面文件永远不会提高性能。它只会提高稳定性。根据定义,分页是磁盘级别的操作,并且磁盘操作始终比RAM级别的操作慢。而且,即使使用6GiB(从未超过2GiB),您也很有可能会遇到一些性能问题,因为Windows仍然会令人沮丧地将未使用的进程分页到磁盘上。无论谁认为这是明智的,我都希望他们“勇敢起来!”
Kerri Shotts,

好的。也许是因为这是我想听到的,我不知道,但是我喜欢您的回答。:P听起来很合理,谢谢!
user541686

1
不是正确的-页面文件可以提高性能,因为未使用数据在交换区上的位置可以用于缓存。这给您造成了这种否决。
彼得-恢复莫妮卡2014年

1
页面文件可以提高性能。它增加了可用于各种快速缓存的RAM,从而改善了程序的启动/加载/操作性能。没有页面文件,该宝贵的物理RAM将充满不可移动的垃圾。
方舟坤

7

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

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

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

编辑:此示例可以帮助您了解页面文件的角色:

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

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

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

现在,您将看到,如果存在算法来预测在给定时刻可能未使用的内容,那么操作系统可以“分页”它认为不会立即使用的内容。因此,即使Windows具有足够的RAM,它也会使用存在的页面文件来说明Windows。它正在尝试提供尽可能多的RAM。Windows就像Linux,自由RAM充当磁盘缓存,因此,如果正确执行平衡操作,则可以提高整体性能。这就是OS设计的全部内容,也是为什么要花10年的时间才能从成千上万的程序员中获得好的操作系统的原因。

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


@ultrasawblade:我还是不明白:任何形式的“缓存”的目的都是为了防止磁盘访问。如果您要去那里,为什么不从文件所在的地方获取文件呢?页面文件的目的是什么?
user541686 2011年

@ultrasawblade:另外,关于文章:它说,in general having [a page file] will mean more usable memory being available to the system。等一下 更多可用内存?> 3 GiB的永久未使用RAM空间不够吗?(感到困惑,因为我很少使用超过2个GiB。)
user541686 2011年

2
页面文件缓存!如果您的ram已满,并且您仍然要确保它看起来像您的系统具有更多可用的ram,那么它将开始将数据从ram复制到磁盘(从似乎很困的进程),因此您仍然可以使用ram您的新流程!
2011年

2
@ultrasawblade:我反对您的编辑的反对意见是您的示例指定了97%的RAM使用率(500/512),而我的示例指定了33%的RAM使用率(6 GB中的2 GB)。我不是在问如果我接近极限会怎样?我已经很清楚是什么原因引起的。我在问如果您还有很长的路要走,那儿不会发生任何颠簸或类似现象(应该发生),那将会发生什么。如果对我的情况可以使用相同的参数(使用6 GiB RAM,使用2 GiB),那会更好。否则,它根本无法解决我的问题。
user541686

3
+1为Russinovitch链接。有答案。如果您想放弃一种安全机制以防止可能发生的崩溃,那是您的建议。Windows可以在没有页面文件的情况下正常运行,除非它决定不这样做。;)
卡拉·马菲亚

2

页面文件不仅仅用于存储故障转储,它本质上也不是为此目的而创建的。

页面文件存在,因此它可以存储RAM不需要保留的数据,就像对不需要在内存中存在的项进行高速缓存一样,从而为其他事物提供更多的RAM。

没错,如果您有6GB RAM,则可能不需要页面文件,但是某些项目可能需要页面文件。我记得有些游戏需要页面文件,如果有一个页面文件也很有用。

创建500MB页面文件并没有什么害处,只是为了避免某些过程需要它时出现问题。


但是我的问题是:假设我从未使用超过2 GiB的RAM。无论如何,启用页面文件是否可以提高速度?(“不伤害”与“是,它给您带来好处”不同。)
user541686 2011年

有了6GB的RAM,即使有可用的RAM,Pagefile也将始终用于其他用途,但您不会注意到任何事情。我有4GB,从来没有真正超过。但是我有一个1GB的Pagefile,以防万一,就像普通PC现在有500GB + HDD空间一样,所以至少500-1000MB不会丢失
Sandeep Bansal

@Sandeep:嗯...那些“其他东西”到底是什么?我不打开页面文件的根本原因是我不明白为什么在有大量可用RAM的情况下Windows会使用硬盘,所以我很好奇那些“其他东西”是什么。
user541686 2011年

与Linux相同,为什么Linux在有RAM可以访问时使用交换空间。页面文件保存了一段时间未使用的文件,这些文件距离RAM较远。
Sandeep Bansal

@Sandeep:我也不知道为什么Linux也会这么做,对我来说也是一样。但是将文件保存在页面文件中有什么意义呢?如果它们不在RAM中,为什么不从它们实际位于磁盘上的任何地方读取它们呢?
user541686 2011年

1

第一步是了解什么是缓存,或者更确切地说,不同的缓存用于什么。
CPU的内部缓存很小,因此可以存储OP结果,标志状态和计算出的地址。在双核上,我相信内部缓存约为1mb。它的速度非常快,只能由CPU内部访问,并且受超频CPU热量的影响最大。

2级缓存充当CPU到内存事务的高速缓冲区,并且还保留通过预取收集的代码线程。我相信在双核上,典型安装将具有6mb的lvl2缓存。内部高速缓存虽然速度较慢,但​​速度较慢,仅内存控制器和CPU可以访问,并且位于总线上的专用线上。

页面文件确实是高速缓存,因为它存储了可能存在或可能不存在于内存中的数据。操作系统可以将分页文件用于各种任务,其中之一是保存尚未提交到磁盘的数据文件的当前状态。如果页面文件不存在,则由第三方应用程序在内部提供此功能。这种情况的问题在于,在涉及垃圾回收时,许多程序的运行情况不佳,并且磁盘上还留有虚假的.temp文件。这些残留物不是安装清单的一部分,它们可能会妨碍卸载过程并降低磁盘访问速度。

我认为交换文件通常是一件好事。的确,如果您的系统中安装了Ram,并且它专用于1个特定任务,并且该应用程序负责所有这些事情,那么可能不需要交换文件。一个示例可能是在Windows平台上运行的Arcade视频游戏,这些视频游戏通常仅安装了现有设备所需的驱动程序,并且不太可能遭受驱动程序争用。但是,在大多数情况下,大多数应用程序并不能解决可能出现的所有潜在问题,尤其是那些包含其他第三方应用程序和驱动程序争用影响的问题。

尽管在添加页面文件的短期内您可能会注意到性能有所下降,但从长期来看,性能应保持一致。开始时没有页面文件似乎更快,但是随着时间的流逝,性能将大大降低。

史蒂芬·马尔姆(MCP)。


“当页面文件不存在时,将由第三方应用程序在内部提供此功能。” ->不太清楚你的意思;程序并不真正在乎是否有页面文件。
user541686 2011年

0

个人经验

现在,我的8GB RAM笔记本电脑在阻止创建/使用页面文件方面存在问题。我的生活是地狱。我不断收到“内存不足”的提示,应用程序崩溃等。使用3个程序每个占用1-1.5 GB(例如,Web浏览器,带有特殊插件的Visual Studio等),真是步履蹒跚。

另一个论点

使用物理RAM缓存中的数据非常快。您拥有的“更多”物理RAM越多,它可以容纳的缓存就越大。OS可以从物理RAM移至页面文件的休眠数据越多,则释放更多的物理RAM用于缓存频繁访问的数据。

假设您玩了一些游戏,当您更改位置时会加载位置数据。您还具有运行的网络浏览器,该游戏剩下2GB的空间用于单个位置。如果没有页面文件,则每次更改位置时,都会从HDD缓慢加载数据。对于页面文件,未使用的Web浏览器数据将发送到该页面文件,并且宝贵的物理RAM将用于存储多个位置的数据,从而加快了位置加载的速度。

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.