- 积分
- 68
- 最后登录
- 2024-4-22
- 精华
- 0
- 阅读权限
- 20
- 主题
- 25
- UID
- 414475
- 帖子
- 171
- PB币
- 413
- 威望
- 0
- 贡献
- 0
- 技术
- 0
- 活跃
- 1207
- UID
- 414475
- 帖子
- 171
- PB币
- 413
- 贡献
- 0
- 技术
- 0
- 活跃
- 1207
|
本帖最后由 EyeRain 于 2019-12-23 21:58 编辑
首先感谢多位大大对这个问题用资料和官方QA做的科普和引证。
我个人也在这个问题上折腾了很久,感觉有些东西是值得跟大家分享的,水平有限,有说错的地方,也希望大家指正。
在用win10 1909这类比较新的系统时,32G以上内存+高速SSD的机器,设置为无分页文件(pagefile)是否还有其价值呢。
(俗称关闭虚拟内存,其实说法是不准确的)
首先是跑分软件测不出差别,日常办公,浏览网页,做简单设计和小规模开发时,我主观上感受不到任何差别,至少我认为是过不了双盲测试的。我个人认为这些情况下,没有必要关闭页面文件,交由win10自己管理就好,已经比win7时代好很多了。
但是对于动作竞技游戏用户来说,win10在开启分页文件时能明显感知到不可预测的帧数波动和延时(非载入情况下的瞬间丢帧或卡顿)。
经过一段时间的折腾,发现这个影响主要来自两个因素:
1. win10新版默认打开的内存压缩技术,将要写入页面文件的内容进行压缩后再写入,减小硬盘写入的压力,这个技术能提高小内存+机械硬盘这种IO瓶颈严重电脑的日常使用感受,但是对于游戏用户就是灾难了,会造成cpu使用率的波动,建议通过powershell命令:Disable-MMAgent -mc 关闭。当然,如果关闭SysMain服务(原superfetch服务),或是禁用页面文件,这个功能也是失效的,可以在任务管理器内存页的“使用中(已压缩)”看到运行状况。
2. win系统的老历史,在打开页面文件的情况下,无论你有多少闲置内存,windows都会往硬盘的页面文件里倒腾东西。现象就是一些载入完成的的场景,开页面文件时会发现系统一下一下访问硬盘,而关闭页面文件运行同一场景,系统就完全没有这些操作,帧数的瞬时波动也就没有了,所以有时候FPS游戏感觉没跟手,真不一定是网络问题。测试的话,单机赛车游戏一个人跑闭环赛道最容易重现与分析。
确实,微软一直不推荐用户关闭页面文件,但是也知道有些情况下,用户是需要完全禁用页面文件的。
所以这个设置既不在策略组,也不在注册表,而是一直保留在系统属性的选项卡里。
(能完全禁用页面文件是xp的NT5.1内核开始的,之前的win2000是不能完全禁用的。)
如果确实想禁用页面文件的话,还有以下两点需要明确:
1. window内核的功能有部分依赖于页面文件,虽然常用这部分功能的用户不多。
(我个人目前只用过崩溃文件转储,这部分也希望其它朋友能给与补充。)
2. 明明可用内存还有很多,就报内存不足或出现莫名其妙的死进程的情况。
这个问题主要是因为微软让大家误判了哪一部分是空余内存,因为任务管理器的内存页明确标注了“使用中”和“可用”这两项的内存数量,所以大家自然而然的认为“可用”的那个数量就是空余内存。
而实际上,内存页里的“已提交”容量,才是实实在在的目前所有运行程序所发起的内存总需求量,一旦“已提交”用量超过内存容量,随之而来的就是报内存不足和进程崩溃,即使你有大量的内存在任务管理器上显示为可用。
同理,对于那些固定了页面文件大小的用户,物理内存+页面文件的总和就变成了固定阈值,“已提交”超过时也会报内存不足。
所以16G内存+最大16G页面文件和32G内存禁用页面文件,报内存不足的阈值是一样的。
这也是为啥有大佬说,设置页面文件大小的关键是确保Commit Limit > 运行程序要求的Total Commit Charge。
综上,是否禁用页面文件,主要是看用户的用途,针对特殊需求的用户是有价值的。
禁用页面文件,或是指定了偏小的页面文件限制,都需要格外关注已提交这个数据。(早期时候低配的surface内存和存储都很小,大量用户会指定页面文件大小,然后在微软的社区爆出了问题)
我个人推荐32G及以上内存的游戏用户关闭页面文件,16G内存已经有部分游戏的Commit需求会超标。
至于一般家用办公设计等,个人觉得还是交给win10管理最为理想。
内存盘的方式,对于页面文件这一块来说,看来没有啥价值。
参考:
https://blogs.technet.microsoft.com/markrussinovich/2008/11/17/pushing-the-limits-of-windows-virtual-memory/
wybb同学做的测试.
看到大家的恢复。我觉得自己写太啰嗦了,所以把重点部分换个颜色吧。
之所以写这些东西,是因为自己需要关闭页面文件,但是遇到了明明有可用内存却报内存不足或死进程的问题。
一直在各个论坛都有询问,往往得到只是“你比微软聪明系列”“反正我关了没事”“关了铁定出问题”等类似的答案。
于是花了很大功夫,也不局限在国内的论坛,才算理清了一些东西。
至于xp关页面文件这事,当时用的32版本,1g就可以关,后来给自己升级到了2g。
看了不少回帖,不得不再次编辑内容了:
指定非常小的页面文件,会和禁用页面文件遇到同样的内存不足和死进程问题!
比如你16G物理内存并设置固定1G的页面文件,你的已提交总量限额就是17G,超过一样会崩溃!
这样设置既没有得到禁用页面文件的所带来的好处,也失去了使用大量内存程序的宽容度,得不偿失。
所以,如不禁用请将将页面文件交由win10系统管理。
(前文也提到过,这种设定方式已经有大量surface用户被坑过了,微软官方也给过相应的答复)
如果有特殊需求,比如怕有些程序内存泄漏,一定要限制页面文件大小。
可以观察自己常用程序的使用中内存和已提交内存数据,推算出合适自己的页面文件限制。
不过无论如何,推荐页面文件的最大值限制不小于物理内存的1.5倍。
(因为浏览网页和轻办公时,已提交内存量往往能达到使用中内存量的2.5倍左右)
希望各位能理性看待页面文件的设置问题。
|
-
2
查看全部评分
-
|