我在双核、x64 AMD 和 8 GB RAM 上运行 Windows 7。
我是否真的需要页面文件?
删除它会提高还是损害性能?
如果这是服务器还是桌面,会有什么区别吗?
Windows 7 与 Windows 2008 的页面文件有区别吗?
答案1
TL;DR 版本:让 Windows 处理您的内存/页面文件设置。MS 的人已经花了很多比我们大多数系统管理员花费更多的时间来思考这些问题。
许多人似乎认为 Windows 会根据需要将数据推送到页面文件中。例如:某些东西需要大量内存,而 RAM 又不足以满足需求,因此 Windows 在最后一刻开始疯狂地将数据从 RAM 写入磁盘,以便释放 RAM 以满足新的需求。
这是不正确的。幕后还有更多事情发生。一般来说,Windows 维护一个后备存储,这意味着它希望看到内存中的所有内容也存在于磁盘的某个地方。现在,当出现需要大量内存的情况时,Windows 可以非常快速地清除 RAM,因为这些数据已经存储在磁盘上,如果需要,可以调回到 RAM 中。因此可以说,页面文件中的大部分内容还在 RAM 中;数据是先发制人地放置在页面文件中以加快速度新的内存分配需求。
描述所涉及的具体机制需要很多页(参见Windows 内部原理,并注意到新版本即将推出),但有几点值得注意。首先,RAM 中的大部分内容本质上已经在磁盘上 - 例如从可执行文件或 DLL 中提取的程序代码。因此,这不需要写入页面文件;Windows 只需跟踪最初从哪里提取位即可。其次,Windows 会跟踪 RAM 中最常使用的数据,因此会从 RAM 中清除那些长时间未访问的数据。
完全删除页面文件可能会导致更多的磁盘抖动。想象一个简单的场景,某个应用程序启动并需要 80% 的现有 RAM。这将迫使当前的可执行代码超出 RAM 范围 - 甚至可能是操作系统代码。现在,每当其他应用程序 - 或操作系统本身(!!)需要访问该数据时,操作系统都必须从磁盘上的后备存储中分页,从而导致严重的抖动。因为没有页面文件作为临时数据的后备存储,唯一可以分页的东西是可执行文件和 DLL,它们一开始就有固有的后备存储。
当然,资源/利用率场景有很多。您遇到的场景中,删除页面文件不会产生不利影响并非不可能,但这种情况很少见。在大多数情况下,在资源利用率达到峰值的情况下,删除或减少页面文件会导致性能下降。
一些参考资料:
- Windows Internals 书籍 (第四版和第五版)
- 突破 Windows 的极限:物理内存
- 突破 Windows 的极限:虚拟内存
- Windows Vista 内核:第一部分
- Windows Vista 内核:第二部分
- Windows Vista 内核:第 3 部分
- 了解虚拟内存
- RAM、虚拟内存、页面文件和所有这些东西(这里有一个较长版本)
- 内存不足综合症,或者:为什么我仍然需要页面文件?
dmo 指出最近埃里克·利珀特 (Eric Lippert) 帖子这有助于理解虚拟内存(尽管与问题关系不大)。我把它放在这里是因为我怀疑有些人不会向下滚动到其他答案 - 但如果你觉得它有价值,你应该管理机构投票,因此使用链接到那里!
答案2
Eric Lippert 最近写了一篇博客条目描述 Windows 如何管理内存。简而言之,Windows 内存模型可以被认为是一个磁盘存储,其中 RAM 充当性能增强缓存。
答案3
从其他答案中我可以看出,我是唯一一个禁用页面文件并且从未后悔的人。太棒了 :-)
在家里和办公室,我都使用 64 位 Vista 和 8 GB 内存。两者都禁用了页面文件。在工作中,我经常会使用几个 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 就会崩溃,系统会清除所有内存。
当您启用页面文件时 - 您等待一段时间,然后您会注意到出现问题,您几乎无法对系统进行任何操作。您的硬盘驱动器工作不正常,即使您设法运行任务管理器(等待几分钟后)并终止运行,excel.exe
您也必须等待一分钟左右,直到系统从页面文件重新加载所有内容。
正如我后来看到的,Excel 2003 在禁用页面文件的情况下处理相同的数据透视表没有任何问题 - 因此这不是“数据集太大的问题”。
因此,在我看来,禁用的页面文件有时甚至还可以保护您免受编写不良的应用程序的侵害。
简而言之:如果您知道您的内存使用情况 - 您可以安全地禁用它。
编辑:我只想补充一点,我安装 Windows Vista SP2 时没有任何问题。
答案4
我已经运行了我的 8 GB Vista x64 盒子很多年了,没有使用页面文件,也没有出现任何问题。
当我真正使用记忆的时候,问题确实出现了!
三周前,我开始在 Photoshop 中编辑非常大的图像文件(约 2 GB)。一次编辑会话就占用了我所有的内存。问题:我无法保存我的工作,因为 Photoshop 需要更多内存来保存文件!
而且由于 Photoshop 本身占用了所有内存,我甚至无法通过关闭程序来释放内存(好吧,我这样做了,但这无济于事)。
我所能做的就是放弃我的工作,启用我的页面文件并重新做我所有的工作 - 我因此损失了很多工作,不建议禁用你的页面文件。
是的,大多数时候它都能很好地发挥作用。但它一旦坏掉,可能会很痛苦。