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

我是否还需要页面文件?

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

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

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

#1 楼

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。

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

一些参考:


Windows Internals书籍(第4版和第5版)
推动Windows极限:物理内存
推动Windows极限:虚拟内存
在Windows Vista内核内部:第1部分
在Windows内部Vista内核:第2部分
在Windows Vista内核中:第3部分
了解虚拟内存

RAM,虚拟内存,Pagefile以及所有这些东西(这是更长的版本)
/>“内存不足综合症”,或者:为什么我仍需要页面文件?


评论


对于Jeff和Joel:与“鸭子”押韵

– Quux
09年6月24日在23:48

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

–马丁·贝克特(Martin Beckett)
2009年6月25日19:40

我长期以来一直相信,与其让Windows管理我的页面文件大小,不如将其设置为固定值(例如,最小2GB,最大2GB),因为让其增大和缩小会导致碎片问题。是个好主意,还是我应该遵循您的第一句话,让Windows处理一切?

–约翰·富希(John Fouhy)
09年7月29日在3:26

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

– David Schwartz
11-10-27在9:03

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

– David Schwartz
2011-10-27 9:35

#2 楼

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

#3 楼

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

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

我每天也都在使用混合睡眠(休眠时处于睡眠状态),没有任何问题。

我开始尝试混合睡眠Windows XP具有2 GB的RAM,我真的看到了区别。典型的例子是“控制面板”中的图标停止一个接一个地显示,但一次全部显示。 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,没有任何问题。

评论


我已经禁用了页面文件,当我真正使用内存时感到后悔。因此,高兴的是您拥有更多的内存。

–山姆
09年7月22日在9:45

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

–米兰·加迪安
09-09-29 at 20:17

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

–AngryHacker
09-10-20在6:36

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

–克里斯S
10 May 18 '21:43

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

–塔玛拉·维斯曼(Tamara Wijsman)
2011-12-4 13:59

#4 楼

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

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

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

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

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

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

评论


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

–cgp
2011-3-21在2:56

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

– Kinokijuf
15年8月11日在10:55

是的,“ ImageHost.org已关闭”

– Peter Mortensen
18年4月4日在19:17

#5 楼

我已经在没有页面文件的情况下运行8 GB Vista x64盒子多年了,没有任何问题。

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

三周前,我开始在Photoshop中编辑非常大的图像文件(约2 GB)。一次编辑会话耗尽了我的全部记忆。问题:由于Photoshop需要更多的内存来保存文件,所以我无法保存我的工作!关闭程序(是的,我做了,但是帮助太少了。)

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

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

评论


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

– alexandrul
09年12月10日下午5:19

容易说,当保存确实需要几分钟时,这是皮塔饼。

–山姆
09年12月21日在9:46

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

–达蒙
17年12月30日在1:34

#6 楼

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

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

他几乎在最后谈到了PF大小:


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


我真的很喜欢Mark的文章。

评论


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

–cgp
2011-3-21在2:59

#7 楼

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

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

此外,现在8 GB似乎已经很多了,但几年下来可能被认为是最小数量

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

评论


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

–迈克尔·哈伦(Michael Haren)
09年6月24日在19:37

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

– mpbloch
2010年4月13日23:00

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

– David Schwartz
2011-10-27 9:05

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

–马夫
2012年1月30日在21:39

#8 楼

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

该页面文件可以完成很多事情,包括在发生BSoD(蓝屏死机)的情况下生成内存转储。

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

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

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

我看到了Mark Russinovich(Microsoft研究员)的一种解释,该解释说明没有页面文件的Windows可能比使用页面慢得多。文件(即使有足够的RAM)。但我找不到根本原因。
磁盘空间不足吗?如果有BSoD,我将至少保留1 GB的空间以进行内核转储。

评论


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

–火热
09年6月10日在20:18

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

–马修城堡
09年6月10日在21:19

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

– PP。
2010年1月15日17:50

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

–马夫
2012年1月30日在21:41

纵观事实,您可能现在已经太迟了,但是您可以将您的声明转为一个问题,并将其表达为一个问题:什么时候页面文件会降低速度?一个很好的答案将证明您的理论。

– Quux
2014年3月6日23:39

#9 楼

可以告诉您服务器或工作站是否“需要”页面文件的唯一人是您,请仔细使用性能监视器或最近使用的任何监视器。您正在运行哪些应用程序,它们将看到什么用途,以及您可能看到的最高内存使用量是什么?

为了节省一小笔金钱在较小的硬盘上,稳定性是否值得妥协?磁盘?

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

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

#10 楼

我禁用了页面文件(在x86笔记本电脑上为8 GB),即使有2500 MB的可用空间也有两个问题:尝试激活WCF服务的ASP.NET错误:内存门检查失败,因为可用内存(399,556,608字节)少于总内存的5%。因此,该服务将无法用于传入请求。要解决此问题,请减少计算机上的负载,或者调整serviceHostingEnvironment配置元素上的minFreeMemoryPercentageToActivateService的值。

3.7 GB的内存不足8 GB的5%,我永远都不知道! br />
获取关闭程序以防止信息丢失对话框:当我使用75%的RAM时,出现一个对话框,告诉我关闭程序。您可以通过修改注册表来禁用此功能(或可能通过禁用“诊断策略服务”)。

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

评论


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

–围栏
2010-10-12 18:11

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

–西蒙
16年8月26日在5:07

#11 楼

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

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

PS:请不要忘记允许将来的增长!

评论


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

–JéQueue
09年11月30日在5:20

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

–塔玛拉·维斯曼(Tamara Wijsman)
2011-12-04 14:03

#12 楼

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

很少有人尝试过,甚至没有。似乎更不知道Windows如何处理页面文件。当物理RAM用完时,它不会“只是”填满。我敢打赌,你们中的大多数人甚至都不知道您的“可用” RAM用作文件缓存!您的系统将更容易出现内存不足错误(并且您是否知道应用程序在这种情况下的响应方式-大多数情况下,操作系统只是终止应用程序)。从待机状态或长时间空闲状态的启动时间将非常容易。

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

评论


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

–塔玛拉·维斯曼(Tamara Wijsman)
2011-12-04 14:01



#13 楼

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

评论


您确实有问题,但是没有注意到它们,请考虑增加的内存负载如何减慢同时请求的速度。启用页面文件可使此类时刻变得更加轻松...

–塔玛拉·维斯曼(Tamara Wijsman)
2011-12-04 14:06