我在双核,x64 AMD和8 GB RAM上运行
Windows 7.
我甚至需要一个页面文件吗?
删除它有助于或损害性能吗?
如果这是服务器或桌面,它会有所作为吗?
Windows 7与Windows 2008是否会对页面文件产生影响?
TL; DR版本:让Windows处理您的内存/页面文件设置.与大多数系统管理员相比,MS的人们花了很多时间思考这些问题.
很多人似乎都认为Windows会根据需要将数据推送到页面文件中. EG:有些东西需要大量内存,并且没有足够的内存来满足需求,因此Windows在最后一分钟开始疯狂地将数据从RAM写入磁盘,以便它可以释放RAM以满足新的需求.
这是不正确的.引擎盖下还有更多内容.一般来说,Windows维护着一个后备存储,这意味着它希望在磁盘上的某个地方看到内存中的所有内容.现在,当某些东西出现并需要大量内存时,Windows可以非常快速地清除RAM,因为该数据已经存在于磁盘上,如果需要,可以将其分页回RAM.所以可以说页面文件中的大部分内容也在RAM中;数据被预先放置在页面文件中以加速新的内存分配需求.
描述所涉及的具体机制需要很多页面(参见Windows Internals第7章,并注意new edition将很快可用),但有一些值得注意的好事.首先,RAM中的大部分内容已经存在于磁盘上 – 例如从可执行文件或DLL获取的程序代码.所以这不需要写入页面文件; Windows可以简单地跟踪最初从中获取位的位置.其次,Windows会跟踪RAM中最常使用的数据,因此从RAM中清除那些在没有被访问的情况下最长的数据.
完全删除页面文件会导致更多的磁盘抖动.想象一个简单的场景,其中一些应用程序启动并需要80%的现有RAM.这将迫使当前可执行代码从RAM中 – 甚至可能是OS代码.现在,每当其他应用程序 – 或操作系统本身(!!)需要访问该数据时,操作系统必须将它们从磁盘上的后备存储中分页,导致大量颠簸.因为没有页面文件可以作为临时数据的后备存储,所以可以分页的唯一内容是可执行文件和具有固有后备存储的DLL.
当然有许多资源/利用方案.你有一个场景可能不会因为删除页面文件而产生不利影响,但这些都是少数.在大多数情况下,删除或减少页面文件将导致峰值资源利用率方案下的性能降低.
一些参考:
> Windows Internals book(s)(4th edition和5th edition)
> Pushing the Limits of Windows: Physical Memory
> Pushing the Limits of Windows: Virtual Memory
> Inside the Windows Vista Kernel: Part 1
> Inside the Windows Vista Kernel: Part 2
> Inside the Windows Vista Kernel: Part 3
> Understanding Virtual Memory
> RAM,Virtual Memory,Pagefile and all that stuff(这是longer version)
> The Out-of-Memory Syndrome,or: Why Do I Still Need a Pagefile?
dmo noted最近的Eric Lippert post有助于理解虚拟内存(尽管与问题的关联性较小).我把它放在这里因为我怀疑有些人不会向下滚动到其他答案 – 但如果你发现它有价值,你欠dmo投票,所以用the link到达那里!