电脑公司WIN7系统缓存策略浅谈
更新日期:2016-01-29
来源:互联网
手机扫码继续观看

前面几期我们聊的都是系统写入缓存设置方面的话题,这期开始我们来聊聊关于读取缓存方面的话题,因为我们有留意到不少网友在这方面都存在一些理解上的误区。
我们现在主要谈的是基于NT 6核心的WIN系统(即从VISTA开始到目前电脑公司WIN7使用的系统核心版本)缓存策略。
微软从NT 6核心开始,采取了一种动态调用系统读取缓存的策略,以让使用大容量内存的用户,其内存容量可得到最大的利用效率。
大家可以看看上面的图,一个是XP的任务管理器,一个则是VISTA的任务管理器,注意‘Free’和‘Available’,即真正空闲的内存容量,可见到VISTA和XP在这里的巨大差别。
再看一下,上面这2个是WIN 7的任务管理器,我放上个中文的帮大家对照参考。
在VISTA和WIN 7中,微软采取的策略就是:只有系统有需要,中文图里你看到的‘可用’内存容量,会被完全作为系统的一部分读取缓存来使用,而图中可用内存容量为2597MB,空闲内存容量为1142MB,2597减去1142,即当时被用于作为读取缓存的内存容量约有1455MB。(不过上图中显示已缓存的容量为1532MB,与理论计算结果有所差异,这方面的具体原因还需要再深入研究)
这里大家要留意,虽然说系统可能会把所有‘可用’内存都作为缓存使用,但这个操作对用户来说是完全透明的,也就是用户使用时不会察觉得到空闲的内存容量被用作了读取缓存。当用户运行程序或进行任何需要占用更多内存容量的操作时,如果‘空闲’内存容量不足应付用户的需求,系统就会从被缓存的部分内存容量中自行释放足够的内存容量给用户使用。
正因为微软采取了上面这种策略,大容量内存的利用率就被最大限度的提高了,因为这个策略几乎让普通民用环境下的二次热访问(就是冷开机后,已非首次读取的任意数据),利用大容量内存的优势,达到了最大的命中率(就是指冷开机后读过的数据都在内存里了,不用再从硬盘读取)。
我们把VISTA和WIN 7跟XP的对比来看,就可以看出XP的内存利用效率其实非常低下,大量的内存其实被白白‘浪费’掉。
现在很多网友都知道,单独使用SSD后,WIN 7默认会把Superfetch(超级预读)服务关闭,但也有很多人把Superfetch和系统的缓存机制产生了混淆,认为Superfetch被关闭后,上述的系统缓存机制也被同时关掉。
我要跟大家说的是,Superfetch仅仅只是系统缓存机制其中一个独立的部分,和整体的缓存机制关系并不大,它的开启和关闭,并不对系统缓存机制产生影响。
我这里再说几句Superfetch的工作原理,它其实是通过一种长期性的后台统计用户操作习惯数据记录,再分析这些记录,每当用户冷开机后,通过之前的分析预测到用户最有机会可能会去读取的数据都有哪些,就把这些数据尽可能的主动预先读取到缓存中去。在前面的存储大讲堂里,我们都知道数据直接从内存这些缓存中读取和从硬盘中读取,速度会存在巨大的差距,Superfetch正正是利用了尽可能让用户可能需要读取的数据都预先加载到缓存中,从而提升用户在读取数据时的‘性能’感受。
大家可以参考上图,在Superfetch开启时的2个曲线上出现的波峰,正正就是系统预先缓存数据到缓存时产生的。
所以关闭Superfetch,实际就是关闭了开机后系统预先加载数据进缓存的功能而已,而前面所说的,系统缓存机制会尽可能的缓存用户曾经读取过的热数据(就是最常被读取的)这一功能,并不受Superfetch所影响。
jeffxl为此曾经写过一篇文章,专门讲述了大容量内存在NT6环境下操作系统是如何利用剩余内存的,并且还有其它的一些相关分析。想更详细了解的网友可以去看看。
该文章是否有帮助到您?
有帮助
0人
无帮助
0人
常见问题
- Win7系统提示“此Windows副本不是正版”怎么办94400次
- 屏幕上鼠标箭头不见了的解决方法68434次
- 鼠标六个按键功能介绍46783次
- 怎么解决0x0000003b物理内存导致蓝屏37343次
- win732位旗舰版系统电脑中设置任务栏的透明度36490次
- cbox文件缓存在哪 cbox缓存在哪呢33108次
- 键盘没有fn键的代替方法32584次
- win7中LOL登入时“遇到了一个预期之外的错误”的修复图文方法31157次
- Win7系统启动后出现Grub的处理妙招24190次
- 电脑音响有杂音滋滋滋解决方法23790次
系统下载排行
周
月
系统推荐
其他人正在下载
更多
安卓下载
更多