Answers:
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一票,因此请使用链接到达那里!
从其他答案中可以看出,我是唯一禁用页面文件并且从不后悔的人。好极了:-)
无论在家中还是在办公室,我都拥有带有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,没有任何问题。
您可能需要进行一些测量,以了解您自己的系统在进行页面文件调整之前如何使用内存。或者(如果你仍然想做出调整),之前和之后说的调整。
Perfmon是实现此目的的工具;不是任务管理器。关键计数器是Memory-Pages Input / sec。这将专门绘制硬页面错误的图形,这些错误是需要继续从磁盘读取数据的过程。软页面错误(这是默认“ 页面错误/秒”计数器中显示的大多数项目;我建议忽略该计数器!)并不是真正的问题。它们只是显示正常从RAM读取的项目。
Perfmon图http://g.imagehost.org/0383/perfmon-paging.png
上面是一个在内存方面无后顾之忧的系统示例。偶尔会出现尖峰的硬故障-由于硬盘总是比RAM大,因此无法避免。但是,该图基本为零。因此,操作系统很少从后备存储中调入。
如果您看到的“ 内存-页面输入/秒”图比此图更为精巧,则正确的响应是降低内存利用率(运行较少的程序)或添加RAM。更改页面文件设置不会改变以下事实,即系统对内存的需求超过了实际需求。
一个方便监视的附加计数器是PhysicalDisk-Avg。队列长度(所有实例)。这将显示您的更改在多大程度上影响磁盘使用本身。行为良好的系统将显示每个计数器平均计数器等于或小于4 。
我已经运行了8 GB Vista x64框且没有页面文件的情况已经好几年了,没有任何问题。
当我真正使用内存时,确实出现了问题!
三周前,我开始在Photoshop中编辑非常大的图像文件(约2 GB)。一次编辑会话耗尽了我的全部记忆。问题:由于Photoshop需要更多的内存来保存文件,因此无法保存我的工作!
而且由于是Photoshop本身消耗了所有内存,因此我什至无法通过关闭程序来释放内存(嗯,我确实做到了,但这太少了,无法提供帮助)。
我所能做的就是取消我的工作,启用我的页面文件并重做所有工作-由于此,我失去了很多工作,因此不建议禁用您的页面文件。
是的,它将在大多数情况下都很好用。但是一旦破裂,可能会很痛苦。
尽管此处的答案很好地涵盖了该主题,但我仍然建议您阅读以下内容:
http://blogs.technet.com/markrussinovich/archive/2008/11/17/3155406.aspx
他几乎在最后谈到了PF尺寸:
有人认为没有分页文件会带来更好的性能,但总的来说,拥有分页文件意味着Windows可以在修改后的列表中写入页面(这些页面代表未被主动访问但尚未保存到磁盘的页面)。分页文件,从而使该内存可用于更多有用的目的(进程或文件缓存)。因此,尽管有些工作负载在没有分页文件的情况下表现更好,但总的来说,只有一个工作负载才意味着系统可以使用更多可用的内存(不要介意,如果没有大尺寸的分页文件,Windows将无法编写内核崩溃转储足以容纳它们)。
我真的很喜欢Mark的文章。
我能想到的最好的答案是,在正常负载下,您可能不会用完8 GB,但是在意外负载下,您会遇到麻烦。
对于页面文件,一旦开始点击页面,系统至少会运行缓慢。但是,如果您删除页面文件,它只会死(据我所知)。
同样,现在8 GB似乎已经很多了,但是几年下来,它可能被认为是许多软件的最小内存量。
无论哪种方式-我建议至少保留一个小页面文件;但是如果我不在基地,其他人请纠正我。
您没有提到它是否是Windows的64位版本,但我想是的。
该页面文件提供了许多功能,包括在发生BSoD(蓝屏死机)的情况下生成内存转储。
如果没有页面文件,则如果没有足够的内存,Windows将无法将页面调出到磁盘。您可能认为8 GB不会达到该限制。但是随着时间的流逝,您可能会遇到不良的程序来泄漏内存。
我认为如果没有页面文件,它不会让您进入休眠/待机状态(但我还没有尝试过)。
Windows 7/2008 / Vista不会更改页面文件的使用。
我看到了Mark Russinovich(Microsoft研究员)的一种解释,该解释解释说,没有页面文件的Windows可能比没有页面文件的Windows慢(即使有足够的RAM)。但我找不到根本原因。
您的磁盘空间不足吗?对于BSoD,我将至少保留1 GB的空间以进行内核转储。
我禁用了页面文件(在x86笔记本电脑上为8 GB),即使有2500 MB的可用空间也有两个问题:
尝试激活WCF服务的ASP.NET错误:内存门检查失败,因为可用内存(399,556,608字节)少于总内存的5%。因此,该服务将无法用于传入请求。要解决此问题,请减少计算机上的负载或调整serviceHostingEnvironment配置元素上的minFreeMemoryPercentageToActivateService的值。
3.7 GB不足8 GB的5%,我永远不会知道!
获取关闭程序以防止信息丢失对话框:当我使用75%的RAM时,出现一个对话框,告诉我关闭程序。您可以通过修改注册表来禁用此功能(或可能通过禁用“诊断策略服务”)。
最后,我决定再次将其重新打开。单纯而简单的Windows从来没有设计成没有页面文件就可以使用。它经过优化,可以与分页一起运行,而不是没有。如果您打算使用超过75%的内存,并且不想弄乱注册表,那么它可能不适合您。
唯一可以告诉您服务器或工作站“需要”页面文件的人是您,请仔细使用性能监视器或最近使用的任何监视器。正在运行什么应用程序,都看到有什么用,什么是最可能的内存使用情况,你可能会看到什么?
为了在较小的硬盘上节省少量资金,稳定性是否值得妥协?
如果下载一个非常大的补丁(例如Service Pack),会发生什么情况。如果安装程序服务确定需要比解压缩补丁所需的内存更多的内存,那该怎么办?如果您的病毒扫描程序(正确)决定扫描此超大文件包,则在解压缩并扫描此补丁文件时将需要使用哪种内存-我希望补丁存档文件本身不包含任何存档,因为那绝对谋杀记忆使用数字。
我能告诉您的是,删除页面文件造成伤害的可能性远大于提供帮助的可能性。我看不出您为什么没有这样的原因-我敢肯定,可能会有一些专家案例在那方面我弄错了,但这是另外一个方面。
可用的总内存是页面文件+实际内存。
关键问题是所有应用程序和操作系统的预期总内存使用量是否接近8 GB。如果平均内存使用量为2 GB,最大内存使用量仅为4 GB,那么拥有页面文件将毫无意义。如果您的最大内存使用量接近6-7 Gb或更大,则最好有一个页面文件。
PS:别忘了允许将来增长!
似乎很多受严格限制的人对此主题都有意见,但从未真正尝试过在没有页面文件的情况下运行计算机。
几乎没有人尝试过。似乎更不知道Windows如何处理页面文件。当物理RAM用完时,它不会“只是”填满。我敢打赌,你们大多数人甚至都不知道您的“可用” RAM被用作文件缓存!
通过禁用页面文件,可以大大提高性能。您的系统将更容易遭受内存不足错误的影响(并且您知道您的应用程序在那种情况下会如何响应-大多数情况下,操作系统只是终止应用程序)。从待机状态或长时间的空闲状态开始的启动时间将更加迅速。
如果Microsoft实际允许您设置一个选项,即仅当物理RAM不足(并且所有文件缓冲区都已被丢弃)时才使用该页面文件,那么我认为禁用该页面文件没有什么好处。
这是对立的,但是我们为大约20个用户运行Windows Server 2003终端服务器,一次登录10-15,并且具有8 GB的RAM。我们不使用页面文件来运行,并且我们的服务器比以前运行得更快。显然,这并不是所有问题的解决方案,但是我们已经像这样运行了两年了,没有任何我知道的问题。