XSLT存档  

不及格的程序员-八神

 查看分类:  ASP.NET XML/XSLT JavaScripT   我的MSN空间Blog
问 14 年零 1 个月前
观看 次数 29,000 次
 
37

禁用 Windows 页面文件的问题已经讨论了不少,例如这里这里这里人们继续支持这样的答案:“即使你有足够的 RAM,你也不应该禁用你的页面文件”,但我还没有看到任何具体的、可验证的理由来支持这个建议。据我所知,如果您永远不需要从页面文件中读取数据(因为您有足够的 RAM),那么启用它后性能只会更差,因为 Windows 会先发制人地写入它。最好的情况下,性能是相同的。我看不出如何通过写入您永远不需要读取的数据来改进它。

所以我的问题是:

假设我有足够的物理 RAM 来完成我所做的一切,我有什么理由不应该禁用页面文件吗?

假设 Windows 的版本是 Windows XP x64 SP2 或 Windows Server 2003 x64 SP2(相同)。如果 Windows Server 2008 x64 有所不同,我也有兴趣听到这个问题的答案。我正在从好的来源中寻找具体、客观的原因,而不仅仅是意见。诸如“这里是使用和不使用页面文件完成的基准测试,即使有足够的 RAM,使用页面文件的结果也更好”或“根据这篇 MS 知识库文章,如果禁用页面文件,则会出现问题 X”。

到目前为止,我看到提到的唯一原因是:

  • 即使您认为自己有足够的 RAM,您也可能会用完。好吧,但就这个问题而言,我们假设我有足够的东西。也许我只读过电子邮件,而且我有 16GB 内存。或者128GB。或者 1TB。或者其他什么——但这对于我 100% 所做的事情、100% 时间来说已经足够了。另一种思考方式是:如果我有x MB 物理 RAM 和y MB 页面文件,并且在该配置中我从未用完 RAM,那么在性能方面,使用x+y MB 物理 RAM 并且没有页面文件?
  • Windows“习惯”拥有页面文件,并且它可能无法可靠地运行(来自了解 RAM 对整体系统性能的影响)这是相当模糊的,我发现很难相信,因为 MS 提供了禁用页面文件的选项。
  • Windows 比您更了解它在做什么。不 - 它不知道我不会运行更多程序或加载更多数据,但我会。
  • 14
    这个话题几乎在世界上所有与技术相关的论坛上都被讨论得令人作呕。结论:要么做,要么不做。如果它对你有用,那就太好了,继续你的生活吧。如果没有,那么只需点击几下鼠标即可获得虚拟内存。除此之外,我们在这里浪费时间。最好还是讨论一下最好的浏览器或防病毒软件!:)(顺便说一句,你的那个链接很好读,推荐) 
    – 莫莉7244
     2009 年 8 月 26 日 23:49
  • 1
    @Molly你的意思是,你的链接?:)   2009 年 8 月 27 日 0:31
  • 3
    @Molly:如果您认为这是浪费时间,那么根本不要发表评论,只需忽略并继续。为什么要批评这个问题?你可能不在乎,但其他人却在乎。 
    – 马斯
     2011 年 1 月 28 日 18:01
  • 2
    我感觉到你对此感到沮丧。我最近从 4GB DDR2 升级到 8GB DDR3。工作中的一个人说“确保你的交换大小为 8-12GB”。为什么?我做的事情和以前一样,现在我的物理内存是原来的两倍;为什么我需要更多交换空间?   2011 年 2 月 12 日 21:14
  • 2
    不是主观的 - 请仔细阅读问题,特别是假设。我是从可靠来源询问具体原因,而不是意见。   2011 年 2 月 17 日 4:55

16 个答案

15

这是一个微观优化。关键是,在任何类似于正常操作的情况下,没有理由这样如果您的使用模式发生变化,它很容易伤害您。

在特殊情况下,它可能有意义,例如如果没有本地可写磁盘。

  •  
    我同意就保留它吧。   2009 年 9 月 10 日 2:57
  •  
    Windows 甚至可以从不可写磁盘启动吗?   2009 年 9 月 10 日 9:39
  •  
    是的,但是您需要改变很多事情才能使其正常工作。例如,注册表必须位于可写磁盘上,因此您需要将其重定向到 ramdisk 等......   2009 年 9 月 14 日 10:19
  • 4
    当然,禁用交换是有原因的 - 第一个原因是,即使物理内存空闲,Windows 也会交换应用程序内存。因此,每当您离开计算机一小时后返回计算机时,您都会花费大量时间让硬盘驱动器重新填充物理 RAM。说没有理由禁用交换文件绝对是可怕的建议。 
    – PP。
     2010 年 1 月 15 日 17:40
  •  
    您是否确实注意到禁用页面文件带来的加速?我个人没有,而且根据我所读到的,大多数人也没有。正如@Captain Segfault 所说,这是一个微优化。   2010 年 9 月 9 日 2:35
 
8

我已经运行具有 4GB RAM(Windows“官方”仅识别 3GB)的 Windows XP SP3 Professional 32 位笔记本电脑一年多了,没有页面文件。我圈子里的人也一直试图吓唬我,说我不应该这样做。

我使用内存非常密集的应用程序 - 在任何给定的时间点,我至少有两台虚拟机 (vmware),其上配置为 100% 在 RAM 中运行,我至少有一个 Visual Studio 实例(其中有很多安装的附加组件)、SQL Server 和一些“小型”应用程序,例如电子邮件、IM、IE 等。

除此之外,我还有一个永久的 256 MB Ramdisk。有时,我会在其他应用程序运行时使用 Adob​​e Photoshop。我也玩一些游戏,包括 Quake3、Neverwinter Nights、Oblivion。

我没有任何问题。

BlueNovember 请注意:我们的朋友非常客气地询问了客观原因。因此,诸如“我怀疑......”之类的陈述是没有根据的。发帖前请先了解清楚!休眠与分页无关。它使用一个名为 hiberfil.sys 的单独文件,您可以在没有页面文件的情况下休眠。

PS:抱歉,伙计,我拒绝回到“正常”配置,这样我实际上可以基准测试此设置的速度有多快,但只要看到硬盘活动导致的闪烁少得多,就非常令人欣慰。如果没有别的原因,我会为此禁用页面文件,因为当 HDD LED 不不断闪烁时,至少您的计算机“感觉”更快。

不禁用页面文件的唯一原因是如果您使用性能监视器 (PerfMon),因为这取决于页面文件并且至少需要 2 MB 页面文件,否则以下对象的计数器将丢失:缓存、内存、对象、处理器和系统。

  • 1
    你总会发现有人倾向于告诉别人应该如何操作他们的计算机,从而助长了恐惧文化(“坏事”将会发生survivor2012.com 
    – 莫莉7244
     2009 年 9 月 10 日 3:02
  • 2
    呵呵。好一个。你会注意到我已经尽力避免这种情况。;-) 我只是描述我正在做的事情,将分析和接受留给读者自由选择。但我确实想尝试消除这个神话:如果禁用页面文件,你的电脑就会在你面前爆炸。 
    – 维尔
     2009 年 9 月 14 日 5:14
8

即使您可以将所有内容放入 RAM,也有很多理由保留页面文件。

SF上的回答有125个赞,链接了很多可信的文章。一探究竟:

https://serverfault.com/questions/23621/any-benefit-or-detriment-from-removing-a-pagefile-on-an-8gb-ram-machine/23684#23684

  • 3
    虽然这一切可能都是真的,而且我肯定同意,但我很高兴提供一个链接,微软(那些花了很多时间思考这个问题的人:)明确建议禁用虚拟内存(我的 eee 电脑上几乎没有页面文件近两年了,早在 MS 发布这些指南之前)。话虽如此,在具有现代硬盘驱动器和巨大高速缓存的台式计算机上,这并没有什么区别。然而,每个人都有自己的。链接(PDF,第 10 页):download.microsoft.com/download/2/0/a/... 
    – 莫莉7244
     2009 年 9 月 10 日 3:41
  • 3
    如果您的 eee 已使用 2 年,则它装有第一代 SSD。禁用页面文件将延长 SSD 的使用寿命,但显然不是标准情况。   2009 年 9 月 10 日 11:14
  •  
    我没有说标准程序,不是吗?:) 我不会建议禁用页面文件作为“良好的计算实践”,但是,如果有人想这样做,那就让他们吧。事实证明,尽管会发生各种“糟糕的事情”,但它一次又一次地正常工作,没有出现任何问题。如果它不起作用,那么只需点击几下即可获得一个全新的页面文件。如果您的硬盘驱动器/SSD 速度较慢,有一些程序可以让您将系统内存分配为硬盘驱动器缓存,以加快分页速度。 
    – 莫莉7244
     2009 年 9 月 10 日 11:55
  •  
    我已经阅读了该答案(事实上它已链接在我的问题中),这就是我发布此问题的原因。   2009 年 9 月 16 日 4:44
 
8

从这个链接:

注意:Microsoft 强烈建议您不要禁用或删除页面文件。

要在 Windows XP 中禁用分页文件,您应该至少拥有 768MB 的 RAM。

这是杰夫·阿特伍德对此的看法的链接。

  •  
    注意:我认为这个数字太低了,在禁用页面文件之前您应该拥有大量的内存,并且我确信您仍然会遇到各种问题。   2009 年 8 月 26 日 23:43
  •  
    不过,他们没有给出该建议的原因 - 我怀疑这只是因为大多数用户不知道他们是否有足够的 RAM,所以这是一个很好的“经验法则”。至于分配不使用的内存的应用程序,该内存应该“保留”,而不是“提交”,因此它只占用虚拟地址空间。如果他们确实提交了大量内存,他们不需要页面文件,这并不能真正拯救我。   2009 年 8 月 27 日 0:29
  •  
    Jeff 博客文章的链接似乎已损坏。   2017 年 8 月 28 日 15:59
  • 1
    @艾萨克,已修复..   2017 年 8 月 29 日 16:44
5

我相信,如果您没有页面文件,那么在出现 BSOD 的情况下,Windows 将无法写入小型转储。这意味着您将无法使用适当的工具来分析问题。

如果您没有遇到 BSOD,这可能不会打扰您,并且您当然可以足够快地重新创建页面文件,但为什么不做好准备呢?

4

我发现的最好的原因是页面文件允许 Windows 使用更多的物理 RAM 作为磁盘缓存,这可能比很少使用的内存页面更好。Mark Russinovich 有一篇关于此的精彩文章,突破 Windows 的极限:虚拟内存,其中说道:

有些人认为没有分页文件会带来更好的性能,但一般来说,有分页文件意味着 Windows 可以将修改列表上的页面(代表未被主动访问但尚未保存到磁盘的页面)写入到分页文件,从而使该内存可用于更有用的目的(进程或文件缓存)。因此,虽然某些工作负载在没有分页文件的情况下可能会表现得更好,但一般来说,拥有分页文件意味着系统可以使用更多的可用内存(不用担心,如果没有大的分页文件,Windows 将无法写入内核故障转储)足以容纳它们)。

4

我运行的是 Windows XP,内存为 4GB(3.5GB 可用)。我需要运行 Visual Studio 2008,它需要大量内存。我经常打开 3 到 4 个实例,每个实例占用 500MB 或更多内存。

我对此非常恼火,因为每当我需要快速关闭所有 Visual Studio 实例时,Windows 都会花很长时间才能关闭这些实例。花了3分钟或更长时间。我意识到发生的情况是,即使有足够的可用内存,Visual Studio 实例也会从 RAM 中分页并进入页面文件。当关闭应用程序时,它会将所有分页数据加载回 RAM,然后将其关闭。本质上,它会在关闭实例之前将 2GB 数据从磁盘复制到内存中。

禁用分页后,我注意到关闭多个 Visual Studio 实例时性能得到了巨大提升。它会占用 100% 的 CPU 几秒钟,然后消失。现在可以在一分钟内关闭 Windows,而不是几分钟。

但是,在启动应用程序时,我没有注意到任何性能提升,这是有道理的,因为启动时仍然必须从磁盘读取数据。另外,我觉得禁用分页后事情通常会更快。

另外,由于内存不足,我一年只遇到几次程序崩溃的情况。通常,如果我打开太多程序,或者程序发疯并开始疯狂分配内存。

总之,我对禁用分页感到非常满意。Windows 中的内存管理非常糟糕。对于那些习惯于修改内存设置并意识到可能出现的问题的人,我建议这样做。

2

与流行的观点相反,页面文件不仅仅是物理内存的廉价但缓慢的替代品。它旨在优化您所拥有的 RAM 的使用。

即使有 4GB RAM,您也可能没有足够的内存来保存所有内容。任务管理器中没有任何内容可以揭示这一点。认识到这一点,Windows 设计者创建了一个系统,其中可执行代码仅在需要时才被放入内存中,然后尽可能长时间地保留。如果系统发现这样使用的内存有更好的用途,它将被重新分配。该系统自 1993 年发布的 NT3.1 起就被 Microsoft 使用。自 1960 年代以来,它一直在大型系统中常规使用。

该系统适用于大多数形式的可执行代码。但是修改后的数据必须写入某个地方,即页面文件,然后才能重新分配所使用的内存。页面文件通常不用于存储代码,仅用于存储数据。能够调出代码和数据使系统可以灵活地在必要时调出哪些内容。禁用页面文件意味着只能重新分配用于代码存储的内存。所有修改的数据,即使是长时间未访问且可能不再需要的数据,也必须永久保留在 RAM 中。但代码分页将像以前一样继续。缺少页面文件,或者页面文件太小,都会使系统失去平衡,并迫使 Windows 以次优方式进行分页。这通常会影响性能。

  • 1
    你的第一句话听起来很有希望,但其余的答案最终还是老套的“你认为你有足够的内存,但你没有”的论点。我认为您基本上是说,在确定我需要多少 RAM 时,我没有考虑代码,只考虑了数据。一般来说,这是一个有效的观点,但它并没有回答这个问题。如果我有 x MB 物理 RAM 和 y MB 页面文件,请参阅开头部分... 另外,我不明白缺少页面文件如何导致 Windows 分页。   2010 年 7 月 23 日 0:08
  • 1
    您刚才指出该系统自 1993 年以来一直在使用。您是否知道当时与现在相比有多少可用内存?我们谈论的是 2-4MB 与 2-4GB,增加了 1000 倍。与此同时,硬盘的速度还没有达到 1000 倍。因此,将 200MB 从 RAM 分页到磁盘,然后再返回,确实非常昂贵!1993 年分页 200KB 比现在分页 200MB 便宜得多。 
    – 马斯
     2011 年 1 月 28 日 13:47 
  •  
    @Mas:现在有SSD,并且有足够的内存来关闭分页(如果你确定你永远不会填满它)。   2011 年 2 月 2 日 15:46
1

如果您的内存达到最大,请求内存的一个或多个程序可能会突然崩溃。

这种风险将超过您可能获得的任何性能收益。

  •  
    也就是说,如果您像问题所暗示的那样有信心,那么应该不会有太大问题。我还怀疑没有设置页面文件会阻止您休眠。   2009 年 8 月 26 日 23:55
  •  
    没关系 - 它不会最大化。我们假设我有足够的内存。顺便说一句,我不认为 Windows 会因蓝屏而崩溃,除非 RAM 太少以至于操作系统本身无法容纳。我在实践中从未见过这种情况,但是,是的,我想如果您尝试在 16MB RAM 上运行 XP,可能会发生这种情况。   2009 年 8 月 27 日 5:42
  •  
    是的,你不会蓝屏,你只会得到某种内存不足的错误。   2009 年 9 月 10 日 2:54
1

我的建议是保留页面文件,但在系统盘上手动将其修复为较小的大小,例如128MB。

原因是一个实际的原因:Windows 确实希望有一个交换文件,并且如果没有找到,通常会创建一个临时的自动管理文件,从而消除了禁用它的任何便利。

此外,它会在某些操作中默默地失败或行为不当,例如蓝屏死机、性能计数器、挂起/恢复/休眠,并且不知何故系统稳定性受到影响。所有这些都基于我的经验,并且所有这些都随着一个较小的页面文件而消失。

请注意,交换文件很可能会在执行的前几分钟内被填充,在大多数情况下再也不会被触及,因此您不会遭受交换文件通常产生的磁盘访问损失。您可能会在会话中很快收到“内存不足”警报,您可以安全地忽略该警报(是的,交换已满,那又怎样?)

(我也非常不喜欢 superfetch,而是保留空闲内存以实现缓存效果)

1

一个没有提到的答案是 Windows 使用页面文件来存储故障转储。蓝屏计算机的功能将故障转储直接写入磁盘上包含页面文件的扇区(绕过 Windows 目前无法信任的文件系统驱动程序)。

如果没有页面文件,您将无法获取故障转储信息。此外,如果您不使用页面文件,它不会对您造成伤害,因此除了非常有限的一组场景之外,没有理由将其关闭。

0

请考虑 SuperFetch 使用缓存加载剩余内存,然后就清楚为什么我们不应该禁用页面文件。串行任务(因为多任务处理很糟糕)和缓存的应用程序启动非常有用,因此以分页为代价让 SuperFetch 工作是很好的。

  •  
    我不希望 Windows 决定我可能需要什么。我不介意等待几秒钟来加载某些内容。我讨厌的是,当我将应用程序置于焦点之外一段时间以执行其他操作,然后将该应用程序重新置于焦点中时,我必须等待 Windows 将应用程序从磁盘加载回内存。这对于占用大量 RAM 的应用程序来说非常明显。不过我发现这种行为在 Windows 7 中有所改善。 
    – 马斯
     2011 年 1 月 28 日 17:57
  •  
    @Mas:这是正常行为,如果 SuperFetch 不存在的话,这将是无关紧要的。尽管如此,您仍然可以决定禁用 SuperFetch,但这不会加快将不活动的应用程序加载回内存的速度。如果非常明显,您确定您的磁盘仍然处于良好状态吗?   2011 年 1 月 28 日 18:23 
  •  
    我的观点是,我宁愿让我的应用程序在内存中准备好运行,而不是将它们换成 Super-Fetch 认为我可能需要的东西。由于经常运行 Visual Studio 的多个实例,因此可能需要相当长的时间才能将这些实例加载回内存。 
    – 马斯
     2011 年 2 月 2 日 15:08
  •  
    @Mas:您所描述的行为不是我在几台计算机上看到的,并且 SuperFetch 也不会执行您所描述的操作。正如Coding Horror 文章中有关 SuperFetch 的描述“空高速缓存是浪费高速缓存”。此外,无需运行 Visual Studio 的多个实例,因为您可以在一个解决方案的多个项目中拥有多个文件。如果您正在开发多个解决方案,那么您可能需要考虑更改项目层次结构,因为这不是推荐的工作方式。   2011 年 2 月 2 日 15:30 
  •  
0

如果你的问题是:

假设我有足够的物理 RAM 来完成我所做的一切,并且

  • 我只执行一小部分固定任务,这些任务不是本地密集型文件访问

  • 当所有这些任务与它们可以运行的最大可能的文件/数据以及 Windows 系统进程同时运行时,它所容纳的 RAM 比安装的 RAM 少

  • 并且环境中只会偶尔出现新的或意外的本地文件,并且访问它们的速度并不重要

我有什么理由不应该禁用页面文件吗?

你说是的,那就没问题了。

嵌入式环境可能是最有可能应用的环境,例如收银机操作系统安装。

0

简单的答案是,如果内存不足,Windows 就会变得很糟糕。

事情变得极其缓慢。

许多软件包都存在内存泄漏,会慢慢消耗您的可用 RAM。

另外,Windows 使用一些 RAM 作为硬盘驱动器的缓存。

除非你确实有足够多的内存,否则最终将成为一个问题。

0

根据我的个人经验,禁用Windows页面文件可能会导致隐藏的问题。

我有 32GiB 物理 RAM,并禁用页面文件以避免不断写入 SSD。然后我玩3-8分钟后总是崩溃Battlefield 5Call of Duty 16: MW我的游戏只是随机崩溃,没有任何原因,页面文件被禁用。

我认为我的超频 GPU、RAM 或 CPU 存在问题。然而,经过 5 个小时的调试,在我的硬盘上创建了 512MB 的页面文件后,这个神奇的问题立即消失了。

Win10内存管理仍然存在一些问题。只是提供一下我的经验供大家参考。

-1

页面文件

我运行 32 位 XP,内存为 4 GB(我知道,XP 只能看到 3GB,但它是交错的,速度非常快),我想说两点:

XP只能看到3GB内存。当我的机器已经有了这个文件时,页面文件还有什么意义呢?它正在保留永远无法访问的磁盘内存。除非它禁用了一些 RAM。所以你把辛苦赚来的钱花在了内存上,却发现 XP 正在与磁盘约会。

如果您运行的是 XP 32 位且拥有 4GB 内存,请尝试以下实验:关闭页面文件。重新启动XP。删除页面文件。运行一些程序、Word、Excel、Chrome、IE Ex、看电影、播放音乐或电视。一切都应该运作良好。重新打开页面文件,这次的大小非常小,比如 25 MB。重新启动XP。运行一些程序、Word、Excel、Chrome、IE Ex、看电影、播放音乐或电视。您很快就会收到一条消息,指出虚拟内存不足。这证明 XP 即使不需要也使用页面文件。检查任务管理器性能选项卡(alt ctrl del)。峰值将远低于总物理内存,那么为什么 XP 使用页面文件呢?为什么 XP 认为内存不足?

从 DOS 和 Windows 98 时代开始,页面文件就已经不合时宜了。如果您有足够的内存,请将其删除。

  • 4
    使用页面文件根本不会禁用 RAM。虽然应用程序使用的 RAM 量可能不会超过(并且大多数 32 位应用程序无论如何都无法识别大地址),但它允许 Windows 将内容缓存到磁盘。如果您让进程处于空闲状态,则会将其写入页面文件,以便为您实际使用的进程释放更多内存。有时缓存可能不合适,但这就是原理。我建议您查找一些有关页面文件如何工作以及它们到底做什么的技术文档。 
    – 苏贝
     2010 年 9 月 9 日 4:22
  • 1
    David Read:您混淆了虚拟和物理寻址限制。您的 32 位 XP 肯定可以寻址超过 4 GB 的虚拟地址空间。每个进程只有 4 GB,但您可以有很多进程。您对“XP 即使不需要也使用页面文件”的分析也是有缺陷的。事实上,XP 始终使用虚拟寻址,但这并不意味着它始终使用页面文件。页面文件只是允许同时存在更多的虚拟地址空间。如果您没有,而您又需要它,程序就会崩溃。   2014 年 9 月 15 日 10:18

您必须登录才能回答此问题。

posted on 2023-09-28 16:49  不及格的程序员-八神  阅读(16)  评论(0编辑  收藏  举报