我在具有 8 GB RAM 的双核 x64 AMD 上运行 Windows 7。
我什至需要页面文件吗?
删除它会帮助还是损害性能?
如果这是服务器还是台式机,会有所不同吗?
Windows 7 与 Windows 2008 对页面文件有影响吗?
我在具有 8 GB RAM 的双核 x64 AMD 上运行 Windows 7。
我什至需要页面文件吗?
删除它会帮助还是损害性能?
如果这是服务器还是台式机,会有所不同吗?
Windows 7 与 Windows 2008 对页面文件有影响吗?
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 - 甚至可能是操作系统代码。现在,每当其他应用程序或操作系统本身(!!)需要访问该数据时,操作系统都必须从磁盘上的后备存储中将它们分页,从而导致大量抖动。因为没有页面文件作为临时数据的后备存储,唯一可以分页的是可执行文件和 DLL,它们具有固有的后备存储开始。
当然有很多资源/使用场景。您可能会遇到一种情况,在这种情况下删除页面文件不会产生不利影响,但这些只是少数。在大多数情况下,删除或减少页面文件会导致在资源利用峰值场景下的性能下降。
一些参考资料:
dmo 注意到Eric Lippert最近发表的一篇文章有助于理解虚拟内存(尽管与问题的关系不大)。我把它放在这里是因为我怀疑有些人不会向下滚动到其他答案 - 但如果你觉得它有价值,你欠dmo投票,所以使用链接到达那里!
Eric Lippert 最近写了一篇博客文章,描述了 Windows 如何管理内存。简而言之,可以将 Windows 内存模型视为磁盘存储,其中 RAM 充当性能增强缓存。
正如我从其他答案中看到的那样,我是唯一一个禁用页面文件并且从不后悔的人。伟大的 :-)
无论是在家还是在工作中,我都有 64 位的 Vista 和 8 GB 的 RAM。两者都禁用了页面文件。在工作中,很少有 Visual Studio 2008 实例、带有 Windows XP 的 Virtual PC、2 个 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 将爆炸,系统将在此之后清除所有内存。
当您启用页面文件时 - 您等待一段时间,当您发现有问题时,您几乎可以对您的系统做任何事情。你的硬盘运行得非常好,即使你以某种方式设法运行任务管理器(等待几分钟后)并杀死
excel.exe
你必须等待几分钟左右,直到系统从页面文件加载所有内容。正如我后来看到的,Excel 2003 处理同一个数据透视表时没有任何禁用页面文件的问题——所以这不是“数据集太大的问题”。
因此,在我看来,禁用的页面文件有时甚至可以保护您免受编写不佳的应用程序的影响。
很快:如果您知道您的内存使用情况 - 您可以安全地禁用它。
编辑:我只想补充一点,我安装了 Windows Vista SP2 没有任何问题。
在进行页面文件调整之前,您可能需要进行一些测量以了解您自己的系统如何使用内存。或者(如果您仍想进行调整),在所述调整之前和之后。
Perfmon 就是这方面的工具;不是任务管理器。一个关键计数器是Memory - Pages Input/sec。这将专门绘制硬页错误,即在进程可以继续之前需要从磁盘读取的错误。软页面错误(这是默认页面错误/秒计数器中绘制的大多数项目;我建议忽略该计数器!)并不是真正的问题;它们只是显示正常从 RAM 读取的项目。
性能图 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尺寸:
我真的很喜欢马克的文章。
我能想到的最佳答案是,在正常负载下,您可能不会用完 8 GB,但在意外负载下您会遇到麻烦。
使用页面文件,一旦开始点击页面,系统至少会运行缓慢。但是,如果您删除页面文件,它就会死掉(据我所知)。
此外,8 GB 现在似乎很多,但几年后它可能被认为是许多软件的最小内存量。
无论哪种方式 - 我建议至少保留一个小页面文件;但如果我不在基地,其他人请纠正我。
您没有提到它是否是 64 位版本的 Windows,但我想是的。
页面文件有很多用途,包括在BSoD (蓝屏死机)的情况下生成内存转储。
如果您没有页面文件,Windows 将无法在内存不足的情况下分页到磁盘。您可能认为使用 8 GB 不会达到该限制。但是随着时间的流逝,您可能会遇到错误的程序泄漏内存。
我认为它不会让你在没有页面文件的情况下进入休眠/待机状态(但我还没有尝试过)。
Windows 7 / 2008 / Vista 不会改变页面文件的使用。
我从 Mark Russinovich(Microsoft Fellow)那里看到了一个解释,他解释说没有页面文件的 Windows 可能比使用页面文件的速度慢(即使有足够的 RAM)。但我找不到根本原因。
你的磁盘空间不足吗?我会保留至少 1 GB 以便能够在 BSoD 的情况下进行内核转储。
唯一可以告诉您您的服务器或工作站是否“需要”页面文件的人就是您,您需要谨慎使用性能监视器或这些天所谓的任何东西。您正在运行哪些应用程序,它们看到了什么用途,以及您可能看到的最高内存使用量是多少?
为了在较小的硬盘上节省一分钟的钱,是否值得牺牲稳定性?
当你下载一个非常大的补丁时会发生什么,比如一个服务包。如果安装程序服务决定它需要的内存比解压补丁所需的内存要多,那该怎么办?如果您的病毒扫描程序(正确地)决定扫描这个非常大的包,它在解包和扫描这个补丁文件时需要使用什么样的内存 - 我希望补丁存档文件本身不包含任何存档,因为那绝对会谋杀记忆使用数字。
我可以告诉你的是,删除你的页面文件比帮助更容易受到伤害。我看不出你没有的理由——我敢肯定,可能有一些专业案例我错了,但那是另一个领域。
我禁用了我的页面文件(在 x86 笔记本电脑上为 8 GB)并且即使有 2500 MB 可用空间也有两个问题:
尝试激活 WCF 服务的 ASP.NET 错误:内存门检查失败,因为可用内存(399,556,608 字节)小于总内存的 5%。因此,该服务将无法用于传入请求。要解决此问题,请减少机器上的负载或调整 serviceHostingEnvironment 配置元素上的 minFreeMemoryPercentageToActivateService 的值。
我永远不会知道 3.7 GB 如何小于 8 GB 的 5%!
关闭程序以防止信息丢失对话框:当我使用了 75% 的 RAM 时,我收到一个对话框,告诉我关闭程序。您可以通过修改注册表来禁用它(或者可能通过禁用“诊断策略服务”)。
最后,我决定重新打开它。简单明了的 Windows 从未设计为在没有页面文件的情况下使用。它经过优化以使用分页运行,而不是没有。如果您计划使用超过 75% 的内存并且您不想弄乱您的注册表 - 那么它可能不适合您。