拿三台不同代内存的机子试预取,发现机械盘开SuperFetch反而更卡
之前发过调电源计划的帖子,有兄弟在评论区问预取和SuperFetch要不要关,我干脆拿三台机子做了个长周期对照,今天把数据摆出来。
先说测试环境,三台机子:
- A机:i5-6500 + DDR4 8G + 500G机械盘
- B机:i5-10400 + DDR4 16G + 256G SATA固态
- C机:R7-5800H + DDR4 16G + 512G NVMe
每台机子跑同样的脚本:开机后自动打开十个常用程序(浏览器、微信、WPS、VS Code、两个IDE工程、资源管理器、任务管理器、计算器、记事本),记录从点击到窗口可交互的时间,每台跑五轮取中位数。
结果有点反直觉:
A机(机械盘):关掉SuperFetch之后,第二轮启动平均快了约1.8秒,第三轮差距缩小到0.9秒。打开SuperFetch时,后台预读反而让机械盘的磁头来回跳,启动阶段磁盘队列长度经常飘到3以上。机械盘本身随机读写就烂,预取等于给它添乱。
B机(SATA固态):开着SuperFetch,第二轮起就比关着快1.2秒左右,五轮下来平均快0.9秒。SATA固态的随机读延迟够低,预取能吃到红利。
C机(NVMe):差距不到0.3秒,基本在误差范围内。NVMe本身够快,预取带来的收益被淹没了,但也没拖后腿。
我的判断:
- 机械盘系统盘,SuperFetch和预取建议关掉,别信「内存大就全开」那套。
- SATA固态可以留着,收益真实存在。
- NVMe开不开都行,看心情,别为这玩意纠结。
- 内存小于8G的机子,预取占的那点缓存反而挤占可用内存,不如关。
手动改的位置:services.msc里找SysMain(Win10 1809之后SuperFetch改名叫这个),或者注册表HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters里的EnablePrefetcher,机械盘设0,固态设3。改完重启才生效,别改完就测,我第一次就是没重启白测了一轮。
另外说一句,软领那种自动优化确实省事,无广告这点我也认,但它判断不了你用的是机械盘还是NVMe,一刀切关掉或者一刀切开,总有一头吃亏。我这人就是爱自己抠,数据摆在这,心里踏实。
问一句:你们手头还有机械盘当系统盘的机子吗?关了SysMain之后有没有遇到开机反而变慢的情况?我A机第三轮数据有点飘,想多收几个样本看看。
