从8 GB RAM计算机上删除页面文件有什么好处或不利之处?


213

我在具有8 GB RAM的双核x64 AMD上运行Windows 7。

我什至需要页面文件吗?

删除它会帮助还是损害性能?

如果这是服务器还是台式机,会有所不同吗?

Windows 7和Windows 2008的页面文件是否有所不同?

Answers:


299

TL; DR版本:让Windows处理您的内存/页面文件设置。在MS的人都花了很多更多的时间思考这些问题比我们大多数的系统管理员。

许多人似乎认为Windows会根据需要将数据推送到页面文件中。EG:某物需要大量内存,并且没有足够的RAM来满足需要,因此Windows在最后一刻开始疯狂地将数据从RAM写入磁盘,以便可以为新需求释放RAM。

这是不正确的。引擎盖下还有更多事情要做。一般来说,Windows维护一个后备存储区,这意味着它希望查看磁盘上某处内存中的所有内容。现在,当出现问题并需要大量内存时,Windows可以非常快地清除RAM,因为该数据已经在磁盘上,可以根据需要将其分页回RAM。因此可以说,页面文件中的许多内容也都在RAM中。数据被抢先放置在页面文件中,以加快新的内存分配需求。

描述涉及的特定机制将花费很多页面(请参阅Windows Internals的第7章,并注意即将推出新版本),但是有一些注意事项。首先,RAM中的许多内容本质上已经在磁盘上-例如,从可执行文件或DLL中提取的程序代码。因此,这不需要写入页面文件;Windows可以简单地跟踪最初从何处获取这些位。其次,Windows会跟踪RAM中最常使用的数据,并从RAM中清除那些最长的数据而不被访问。

完全删除页面文件可能会导致更多磁盘抖动。想象一个简单的场景,其中某些应用程序启动并需要80%的现有RAM。这将迫使当前的可执行代码脱离RAM-甚至可能是OS代码。现在,每当其他应用程序-或操作系统本身(!!)需要访问该数据时,操作系统都必须从磁盘上的后备存储中对其进行分页,从而造成很大的麻烦。因为没有页面文件作为瞬态数据的后备存储,所以唯一可以分页的东西是具有固有后备存储的可执行文件和DLL。

当然,有许多资源/利用方案。并非不可能有一种情况,在这种情况下,删除页面文件不会带来不利影响,但这只是少数情况。在大多数情况下,删除或减少页面文件将导致峰值资源利用情况下的性能下降。

一些参考:

dmo注意到Eric Lippert最近发表的一篇文章,该文章有助于理解虚拟内存(尽管与问题的相关性较小)。我将其放在此处是因为我怀疑某些人不会向下滚动到其他答案-但是,如果您发现它有价值,那么您欠dmo一票,因此请使用链接到达那里!


25
对于杰夫(Jeff)和乔尔(Joel):与“鸭子”押韵
魁北克省2009年

2
在Solaris上,它的参与程度更大。交换文件镜像到tmpfs之类的ram磁盘中,因此内存始终几乎已满-但显然可以证明这是最佳策略。
马丁·贝克特

2
我长期以来一直认为,与其允许Windows管理我的页面文件大小,不如将其设置为固定大小(例如,最小2GB,最大2GB),因为增大和缩小它会导致碎片问题。是个好主意,还是我应该遵循您的第一句话,让Windows处理所有事情?
约翰·富希

2
@Mehrdad:因为您不需要保留50%的RAM。当然,您可以这样做,但是您将丢失50%的物理RAM,而这些RAM可能用作活动数据的磁盘缓存。可用RAM是效率低下的标志,就像联邦快递卡车在仓库而不是在路上一样。这意味着您没有搬运尽可能多的货物,因为您花费了太多时间装卸货。
大卫·史瓦兹

2
@Mehrdad:问题是,没有页面文件,即使很可能永远也不会访问它们,但仍有许多数据必须保留在RAM中。例如,考虑由系统启动时启动的进程分配的任何内存,但这些内存提供的服务将在几天内不使用。系统无法证明不会访问数据,并且除了RAM之外没有其他地方可以保留它。因此,磁盘缓存减少了,而数据却保存了好几天没有被访问过的RAM。
大卫·史瓦兹

80

埃里克·利珀特(Eric Lippert)最近写了一篇博客文章,描述Windows如何管理内存。简而言之,可以将Windows内存模型视为磁盘存储,其中RAM充当性能增强缓存。


47

从其他答案中可以看出,我是唯一禁用页面文件并且从不后悔的人。好极了:-)

无论在家中还是在办公室,我都拥有带有8 GB RAM的Vista 64位。两者都禁用了页面文件。在工作中,很少有Visual Studio 2008实例,带有Windows XP的Virtual PC实例,两个SQL Server实例和Internet Explorer 8以及许多选项卡可以协同工作。我很少达到80%的内存。

我每天也使用混合睡眠(休眠睡眠),没有任何问题。

当我使用具有2 GB RAM的Windows XP时,我开始尝试使用它,我真的看到了区别。典型的例子是“控制面板”中的图标停止一个接一个地显示,但是一次全部显示。Firefox / Thunderbird的启动时间也大大增加了。单击某些内容后,一切立即开始工作。不幸的是2 GB对于我的应用程序使用(Visual Studio 2008,Virtual PC和SQL Server)来说太小了,因此我将其重新启用。

但是现在有了8 GB,我再也不想返回启用页面文件了。

对于那些说极端情况的人,请从我的Windows XP时代开始。
当您尝试通过SQL查询在Excel中加载大型数据透视表时,Excel 2000会很快增加其内存使用量。
禁用页面文件后-等待一会儿,然后Excel将崩溃,并且系统将清除所有内存。
启用页面文件后-等待一段时间,当您发现有问题时,您几乎无法对系统执行任何操作。您的HDD像地狱一样工作,即使您设法以某种方式运行了任务管理器(经过几分钟的等待)并杀死它,excel.exe也必须等待一分钟左右,直到系统从页面文件中加载所有内容。
正如我稍后看到的,Excel 2003处理相同的数据透视表时页面文件被禁用没有任何问题-因此它不是“数据集太大”。

因此,我认为,禁用的页面文件有时甚至可以保护您免受编写不良的应用程序的侵害。

很快:如果您知道内存使用情况,则可以安全地禁用它。

编辑:我只想补充一点,我安装了Windows Vista SP2,没有任何问题。


3
我已经禁用了页面文件,并在我真正使用内存时感到遗憾。因此,高兴的是您拥有更多的内存。
山姆

7
+1,“我也是” :-)。同样的故事-8GB内存,Vista x64,运行带有ReSharper + SQL Server Express + IIS + 1-2个虚拟机(每个具有1500MB内存)+一堆实用程序的Visual Studio-从来没有问题。
米兰·加迪安

21
我喜欢每个人都在说“微软花了很多时间思考这个问题,所以请不要理会”,却完全忽略了现实世界的经历。从XP开始,我就禁用了分页文件,从不后悔。就像计算机注入了真棒。
AngryHacker

4
在iSCSI引导的服务器上禁用分页是一种很标准的做法,通过SAN进行分页会非常缓慢。您只需要真正注意内存使用情况,并远离最大值即可。
克里斯·S

6
-1我在这个答案中没有看到任何参考。实际上,我的系统崩溃是因为页面文件被禁用并且页面缓冲池内存已满。但是,我的物理内存使用量仅为2 GB ...
Tamara Wijsman

34

您可能需要进行一些测量,以了解您自己的系统在进行页面文件调整之前如何使用内存。或者(如果你仍然想做出调整),之前和之后说的调整。

Perfmon是实现此目的的工具;不是任务管理器。关键计数器是Memory-Pages Input / sec。这将专门绘制页面错误的图形,这些错误是需要继续从磁盘读取数据的过程。页面错误(这是默认“ 页面错误/秒”计数器中显示的大多数项目;我建议忽略该计数器!)并不是真正的问题。它们只是显示正常从RAM读取的项目。

Perfmon图http://g.imagehost.org/0383/perfmon-paging.png

上面是一个在内存方面无后顾之忧的系统示例。偶尔会出现尖峰的硬故障-由于硬盘总是比RAM大,因此无法避免。但是,该图基本为零。因此,操作系统很少从后备存储中调入。

如果您看到的“ 内存-页面输入/秒”图比此图更为精巧,则正确的响应是降低内存利用率(运行较少的程序)或添加RAM。更改页面文件设置不会改变以下事实,即系统对内存的需求超过了实际需求。

一个方便监视的附加计数器是PhysicalDisk-Avg。队列长度(所有实例)。这将显示您的更改在多大程度上影响磁盘使用本身。行为良好的系统将显示每个计数器平均计数器等于或小于4 。


1
甚至让某人喘不过气来演示如何检查交换文件。太棒了
cgp

1
图片的无效链接。需要解决。
kinokijuf

是的,“ ImageHost.org已关闭”
Peter Mortensen

34

我已经运行了8 GB Vista x64框且没有页面文件的情况已经好几年了,没有任何问题。

当我真正使用内存时,确实出现了问题!

三周前,我开始在Photoshop中编辑非常大的图像文件(约2 GB)。一次编辑会话耗尽了我的全部记忆。问题:由于Photoshop需要更多的内存来保存文件,因此无法保存我的工作!

而且由于是Photoshop本身消耗了所有内存,因此我什至无法通过关闭程序来释放内存(嗯,我确实做到了,但这太少了,无法提供帮助)。

我所能做的就是取消我的工作,启用我的页面文件并重做所有工作-由于此,我失去了很多工作,因此不建议禁用您的页面文件。

是的,它将在大多数情况下都很好用。但是一旦破裂,可能会很痛苦。


7
您应该多保存点:D,以最大程度地减少损失
alexandrul

1
容易说,保存确实需要几分钟,这是皮塔饼。
山姆

如果您使用更复杂的软件,我们都会感到高兴,但有时,“崩溃”最终会与“哦,废话,我有一段时间没有保存”一致。
达蒙

19

尽管此处的答案很好地涵盖了该主题,但我仍然建议您阅读以下内容:

http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx

他几乎在最后谈到了PF尺寸:

有人认为没有分页文件会带来更好的性能,但总的来说,拥有分页文件意味着Windows可以在修改后的列表中写入页面(这些页面代表未被主动访问但尚未保存到磁盘的页面)。分页文件,从而使该内存可用于更多有用的目的(进程或文件缓存)。因此,尽管有些工作负载在没有分页文件的情况下表现更好,但总的来说,只有一个工作负载才意味着系统可以使用更多可用的内存(不要介意,如果没有大尺寸的分页文件,Windows将无法编写内核崩溃转储足以容纳它们)。

我真的很喜欢Mark的文章。


+1,对于Mark Russinovich链接很简单。值得指出的是,win7甚至会弹出一个通知,指出如果禁用交换文件,您将无法“追踪系统问题”。
cgp

13

我能想到的最好的答案是,在正常负载下,您可能不会用完8 GB,但是在意外负载下,您会遇到麻烦。

对于页面文件,一旦开始点击页面,系统至少会运行缓慢。但是,如果您删除页面文件,它只会死(据我所知)。

同样,现在8 GB似乎已经很多了,但是几年下来,它可能被认为是许多软件的最小内存量。

无论哪种方式-我建议至少保留一个小页面文件;但是如果我不在基地,其他人请纠正我。


4
我会走得更远而不限制页面文件。那并不是真正的改善。让Windows来做...他们更了解。
Michael Haren

1
刚刚尝试使用Media Player Classic加载6GB mkv文件。它耗尽了我的RAM和页面文件内存。很快又回到了VLC。为“您永远都不知道会遇到什么” +1。最终MPC崩溃了,我的RAM恢复了,但是如果第三方软件中的DLL出现内存泄漏怎么办?如果您有一些磁盘支持的内存来帮助您,那么您的工作量将会更多。
mpbloch 2010年

1
还有一点,如果您不得不一直担心实际使用它,那么拥有8GB有什么好处?
David Schwartz

对我来说,“至少保留一个小的页面文件”似乎有些奇怪,因为不清楚Windows将如何使用它。例如,它可能比提供更大空间的更大页面文件更受打击-我猜,但是,如果没有可靠的消息来源,我会认为小的页面文件建议可能有害并建议采用标准做法。
mafu 2012年

6

您没有提到它是否是Windows的64位版本,但我想是的。

该页面文件提供了许多功能,包括在发生BSoD蓝屏死机)的情况下生成内存转储。

如果没有页面文件,则如果没有足够的内存,Windows将无法将页面调出到磁盘。您可能认为8 GB不会达到该限制。但是随着时间的流逝,您可能会遇到不良的程序来泄漏内存。

我认为如果没有页面文件,它不会让您进入休眠/待机状态(但我还没有尝试过)。

Windows 7/2008 / Vista不会更改页面文件的使用。

我看到了Mark Russinovich(Microsoft研究员)的一种解释,该解释解释说,没有页面文件的Windows可能比没有页面文件的Windows慢(即使有足够的RAM)。但我找不到根本原因。

您的磁盘空间不足吗?对于BSoD,我将至少保留1 GB的空间以进行内核转储。


你是这个意思吗 blogs.technet.com/markrussinovich/archive/2008/11/17/… 如果是这样,他的建议很la脚。他说页面文件将提高性能,因为如果这样做会给其他应用带来更多的内存。是的,如果您没有太多的内存。但是,如果您拥有足够的资源,页面文件将永远不会更快。
火热

这是与Salomon一起播放的sysinternal视频。它与内核页面池有关
Mathieu Chateau

不知道时,您无法发布“答案”:我有一台具有4GB RAM的Windows Vista 32位笔记本电脑,并且一直处于待机状态。您至少可以限制自己提供对您实际知道的答案的问题的答案吗?
PP。

PP试图说的是:休眠过程使用的文件与交换文件分开,因此在这种情况下这不是问题。
mafu 2012年

纵观事实,您看到这可能为时已晚,但是请转回您的声明,并以一个问题作答:什么时候pagefile会降低速度?一个好的答案将证明您的理论。
quux 2014年

5

我禁用了页面文件(在x86笔记本电脑上为8 GB),即使有2500 MB的可用空间也有两个问题:

  1. 尝试激活WCF服务的ASP.NET错误:内存门检查失败,因为可用内存(399,556,608字节)少于总内存的5%。因此,该服务将无法用于传入请求。要解决此问题,请减少计算机上的负载或调整serviceHostingEnvironment配置元素上的minFreeMemoryPercentageToActivateService的值。

    3.7 GB不足8 GB的5%,我永远不会知道!

  2. 获取关闭程序以防止信息丢失对话框:当我使用75%的RAM时,出现一个对话框,告诉我关闭程序。您可以通过修改注册表来禁用此功能(或可能通过禁用“诊断策略服务”)。

最后,我决定再次将其重新打开。单纯而简单的Windows从来没有设计成没有页面文件就可以使用。它经过优化,可以与分页一起运行,而不是没有。如果您打算使用超过75%的内存,并且不想弄乱注册表,那么它可能不适合您。


1
ASP.NET错误可能使我震惊,可能是32位问题,但是如果您提供的数字正确(399556608 = 399,556,608),则错误正确-大约400MB约为8GB的5%。
fencepost

@fencepost好捕获-由于某种原因,必须已将其读取为kb。怪异
西蒙

5

唯一可以告诉您服务器或工作站“需要”页面文件的人是,请仔细使用性能监视器或最近使用的任何监视器。正在运行什么应用程序,都看到有什么用,什么是最可能的内存使用情况,你可能会看到什么?

为了在较小的硬盘上节省少量资金,稳定性是否值得妥协?

如果下载一个非常大的补丁(例如Service Pack),会发生什么情况。如果安装程序服务确定需要比解压缩补丁所需的内存更多的内存,那该怎么办?如果您的病毒扫描程序(正确)决定扫描此超大文件包,则在解压缩并扫描此补丁文件时将需要使用哪种内存-我希望补丁存档文件本身不包含任何存档,因为那绝对谋杀记忆使用数字。

告诉您的是,删除页面文件造成伤害的可能性远大于提供帮助的可能性。我看不出您为什么没有这样的原因-我敢肯定,可能会有一些专家案例在那方面我弄错了,但这是另外一个方面。


2

可用的总内存是页面文件+实际内存。

关键问题是所有应用程序和操作系统的预期总内存使用量是否接近8 GB。如果平均内存使用量为2 GB,最大内存使用量仅为4 GB,那么拥有页面文件将毫无意义。如果您的最大内存使用量接近6-7 Gb或更大,则最好有一个页面文件。

PS:别忘了允许将来增长!


您不是说总内存可能可用吗?大多数分页系统保留快照页面副本。
JE队列

请注意,还有分页缓冲池内存,即使您仅使用2 GB的物理内存也可能耗尽。
Tamara Wijsman

2

似乎很多受严格限制的人对此主题都有意见,但从未真正尝试过在没有页面文件的情况下运行计算机。

几乎没有人尝试过。似乎更不知道Windows如何处理页面文件。当物理RAM用完时,它不会“只是”填满。我敢打赌,你们大多数人甚至都不知道您的“可用” RAM被用作文件缓存!

通过禁用页面文件,可以大大提高性能。您的系统将更容易遭受内存不足错误的影响(并且您知道您的应用程序在那种情况下会如何响应-大多数情况下,操作系统只是终止应用程序)。从待机状态或长时间的空闲状态开始的启动时间将更加迅速。

如果Microsoft实际允许您设置一个选项,即仅当物理RAM不足(并且所有文件缓冲区都已被丢弃)时才使用该页面文件,那么我认为禁用该页面文件没有什么好处。


禁用页面文件会导致性能下降,而引入内存负载不会带来任何性能改进。仅在内存不足时才使用页面文件,这肯定不是您想要的...
Tamara Wijsman

-3

这是对立的,但是我们为大约20个用户运行Windows Server 2003终端服务器,一次登录10-15,并且具有8 GB的RAM。我们不使用页面文件来运行,并且我们的服务器比以前运行得更快。显然,这并不是所有问题的解决方案,但是我们已经像这样运行了两年了,没有任何我知道的问题。


1
您确实有问题,但是没有注意到它们,请考虑增加的内存负载如何减慢同时请求的速度。启用页面文件使这些时刻变得更加轻松……
Tamara Wijsman
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.