Superfetch与Readyboost完全解析

  长期以来,闪盘、SD卡等外部存储设备所扮演的角色,一直仅仅是使用方便的移动存储元件而已,而内存大户Windows Vista推出后,这类设备已经可以为加速系统和程序的启动速度,缓解Windows Vista的内存荒起到一定的作用! 原来,在Windows Vista里,微软使用了一项名为Superfetch的新技术。为了配合这项技术,微软还启用了Readyboost技术,Readyboost最引人注目的特点就是它允许使用闪盘、SD卡等外部存储设备,在内存不足的系统中加速应用程序的载入速度。

  

  关于Readyboost技术,虽然此前不少媒体已经作过这方面的相关介绍和测试,但多数仅限于泛泛而谈,使读者知其然而不知其所以然,而测试方面也多数仅局限于测试USB2.0闪盘,而没有测试过Readyboost在USB2.0读卡器和闪存卡上的表现。本次的Readyboost专题试图更为全面地为大家介绍Readyboost技术的背景和原理,测试方面则更为注重于闪存卡和读卡器的测试,整个专题共分为三大部分:

  1- Readyboost理论篇:较为详细地解说了Superfetch和Readyboost的技术背景,而WinXP中虚拟内存和预取技术是这两项新技术的基础,因此专题理论篇部分不仅介绍了Vista的这两项新技术,还介绍了虚拟内存和预取技术的机制,所以即使是那些对Readyboost并不感兴趣的读者,也可以在理论篇中了解到一些操作系统内存管理器方面的知识;

  2- Readyboost应用篇:实践证明,并不是所有的闪存设备和读卡器都可以符合Readyboost的需求,专题在这一部分介绍了能实现Readyboost的闪存设备需要满足的技术条件,并且介绍了几种很有用的闪存性能测试方法供读者应用Readyboost时选用;

  3- Readyboost实测篇:专题的这一部分按实现Readyboost技术的要求,对数款本地闪存设备和USB2.0读卡器进行了一系列测试。此外,针对Readyboost究竟能提高多少系统性能的疑问,我们也通过实际的测试给出了答案。

  相信能够完整阅读完本专题的读者,都能够对Vista和Readyboost技术有更加深入的理解,轻松搞定Readyboost! Readyboost理论篇(1)-虚拟内存技术及其在Windows中的应用

  正如前文所说,WinXP中虚拟内存和预取技术是Vista Superfetch与Readyboost这两项新技术的基础,因此要理解这两项技术,我们就必须回过头来看看在过去的操作系统中,这些技术是如何为我们服务的。

  在所有使用保护模式寻址内存的操作系统里,虚拟内存一直是一个重要的概念,Windows Vista也不例外。即使所有程序的内存占用小于系统内存的总量,Windows仍然要使用到虚拟内存管理技术。实际上,每个运行在Windows环境下的进程,在载入时操作系统都会自动为他们指派虚拟内存空间。

  简单地说,虚拟内存技术就是一种使用硬盘等外部存取设备,来保存物理内存不足以存放的信息的技术。 

    

  在Windows操作系统中,使用虚拟内存技术的具体情况是:如果系统出现物理内存不足,那么在启动某个新程序时,操作系统将释放内存中被其它程序占用的空间(内存页面),并将这些内存页面中的信息拷贝到硬盘的Pagefile.sys文件中(交换文件),以便为这个新程序释放一部分物理内存空间。

 

  

  而当需要再次运行那些被释放的程序时,Windows会到Pagefile.sys中查找内存页面的交换文件,同时释放其它程序的内存页面,再完成当前程序的载入过程。 这种互换内存页面的过程被称之为“交换”(switch),而用于暂存内存页面的Pagefile.sys文件则被称之为“交换文件”(switch file)。 Readyboost理论篇(2)-预取技术及其在Windows操作系统中的应用

  虚拟内存技术虽然解决了内存不足的问题,但在程序运行过程中经常需要载入其它文件到内存中,此时如果物理内存不足,则需要进行换页操作,频繁地读写硬盘,造成程序运行时响应缓慢。

  在Windows XP操作系统中,微软对虚拟内存技术做了进一步改进,发展出了预取技术(Prefetch),预取技术的基本思路是,在载入某个程序之前,预先从硬盘上中载入一部分该程序运行所需的数据到物理内存中,这样便能加快程序的启动速度。

  在Widows XP中,使用预取技术的具体方法是:在系统和应用程序启动时,监视内存页面与交换文件以及硬盘上其它文件的数据交换状况,当发生数据交换时,Windows XP会纪录下每一个程序运行时经常需要读取的硬盘文件,并将读取的情况记录在/windows/Prefetch目录中的pf后缀名文件中。

  

 

  一旦建立了这些pf文件,在每次需要启动系统或相应程序的时候,Windows会首先中断当前准备载入的程序,而转去查找/Windows/Prefetch目录,看是否有当前载入程序的纪录,如果有纪录,则马上按照纪录的情况载入程序运行过程中可能会用到的所需文件到物理内存中。这项任务完成之后,Windows才继续载入被中断的程序。如下图所示:

  

  经过这样的处理之后,在程序运行过程中,需要读取那些文件时,由于文件已经被“预取”到内存中,此时就不用再到硬盘上进行读取,因此减轻了程序载入过程中频繁交换内存页面与交换文件的现象,改善了内存不足时程序运行的响应速度。

  为了进一步优化预取操作的效率,Windows XP还会定期对pf文件进行分析处理,组织好程序文件载入的顺序,并将这些分析处理后的信息存放在/Windows/Prefetch目录中的Layout.ini文件中。同时还会通知磁盘碎片整理程序,在下次运行碎片整理时,按照Layout.ini文件记录的内容,将相关文件的位置整理在连续的硬盘区块中。 Readyboost理论篇(3)-SuperFetch技术及其在Vista中的应用

  前面我们已经粗略了解了Windows XP操作系统中虚拟内存以及预取技术的机理。仔细思考它们的执行过程,我们不难发现,这项技术从根本上说仍然属于被动式的调度。换句话说,只有在程序主动发起载入请求时,Windows才会进行相关的调度操作。

  被动式调度的存在可能对系统性能造成一些影响。我们考虑这样一个例子,假设你有在工作的午休时间运行杀毒软件的习惯,那么在下班前,一般会停止处理工作程序,然后运行杀毒软件,此时,如果使用的是Windows XP,那么操作系统会将工作程序所占用的内存页面写入硬盘交换文件中,并读取杀毒软件的文件载入内存。午休过后,杀毒软件已经运行完毕,但是你在重新开始使用工作程序的时候,系统仍然需要经历杀毒软件和工作程序的硬盘交换文件与内存页面的交换过程,此时程序的响应速度明显降低。

  如果系统能够进一步自动记录下这些经常性的操作行为所发生和结束的时间,当时运行的前台和后台软件等等详细情况,那么在内存有空闲空间的时候,就可以在预定的时机预先将一部分文件载入到内存中,这样就避免了上面例子中发生的不愉快情况。

  不错,这正是Windows Vista中Superfetch技术所能解决的问题。由于采用了新算法,Superfetch不但继承了Windows XP预取技术的全部优点,还进一步具备监视程序运行时状况,时间等详细情况的功能,可以根据用户的使用习惯,自动预先将存放在硬盘的交换文件转换到内存页面中去,使用户经常运行的程序启动时的速度得到进一步的加快。如下图:

  

  Superfetch技术的中心思想是:“过分空余的内存空间即是浪费”。的确,如果一个操作系统总是保留着过多的空余物理内存耗费电能,却不能够利用这些多余的内存空间提高系统性能的话,为什么不更好地利用这些多余的内存空间呢?将这些多余的物理内存作为缓存使用,就是Superfetch技术的本质。而也正是由于采用了这种以内存为缓存的策略,才造成了Vista对内存容量的饥渴!

  

  当然,如果你对这项技术感到反感,或者物理内存容量实在太小,那么到管理工具—服务中关闭Superfetch服务也是一种选择。但需要注意的是,如果再次开启Supertech服务,那么由于需要经过一段监视记录用户使用习惯的过程,因此需要等待较长一段时间后,Superfetch技术才能重新为系统带来明显的提速效果。

  

  

  联系实际情况看,在Vista系统的Windows/Prefetch目录中,保存的内容也发生了一些变化,除了pf和layout.ini之外,增加了不少db后缀名和bin后缀名的数据记录文件,还增加了一个Readyboot(注意不是Readyboost)目录,里面存放着一些Trace文件。 Readyboost理论篇(4)-Readyboost技术及其在Vista中的应用

  正如前文所说,Superfetch机制固然好用,但由于该技术预先载入交换文件的特点,因此对物理内存容量的需求进一步增长,假如系统的内存容量不够,依然会出现需要到硬盘中读取文件,造成启动迟缓的现象。那么我们除了关闭Superfetch服务以外,难道就没有别的选择了吗?

  

  答案是肯定的!为了提高内存容量较小的系统中Superfetch机制的整体性能,微软采用以USB2.0接口的外部存储器件(如闪盘、SD/CF卡等电子器件)为缓存的办法,在内存与硬盘之间建立一个闪存缓冲区,来减轻内存不足时可能带来的不利影响。这便是Readyboost技术在闪存盘上的应用。在Vista载入的服务列表中,我们可以看到Superfetch和Readyboost的相关项目。

  

  看到这里,可能有人会问:难道硬盘的速度还会比不上闪盘吗?要知道一般硬盘传输数据的速度可是都能达到40MB/S以上呢,而闪盘数据传输率能够到30MB/S已经算是相当不容易了。

  的确,在传送地址连续的成片大块数据时,硬盘具备的优势是闪盘等电子存储设备所无法比肩的,但这样问的人忽略了一点很重要的问题,那就是机械式寻道的硬盘在传送地址分散的多块小块数据时,花费在磁头寻道等查找数据位置的动作上的时间较长,而在这方面闪存却具有独到的优势。下表直观地表明了这一点:

  

  因此在数据零散分散的情况下,闪存的读取效率反而可能优于机械式寻道的硬盘。而由于被频繁地读出和写入,存放在硬盘上的交换文件正具有这样的分布特点。这便是使用闪存为缓存的优势所在。 Readyboost应用篇(1)-顺利开启Readyboost功能的条件

  尽管闪存随机读写性能一般较好,但由于市场上闪存设备性能良莠不齐,因此要达到Readyboost的要求,仍有必要对闪存的性能作出一定的规范和限定,为此,微软对支持Readyboost的闪存设备做出了如下的限定:

  

  1- 读写速度方面,最低要求闪盘等存取设备在随机读取4KB尺寸文件时,速度应达到2.5MB/s以上,而在随机写512KB尺寸文件时,速度应不低于1.75MB/s;要想完全发挥出Readyboost技术的性能优势,要求闪盘等存取设备在随机读取4KB尺寸文件时,速度应达到5MB/s以上,而在随机写入512KB尺寸文件时,速度应不低于3MB/s。在将外存设备插入系统时,会自动弹出Readyboost选项,同时系统会自动对外存设备的随机读写性能进行测试,如果能够满足最低要求,则在选项卡中会出现Readyboost的相关选项;在我们后面的文章里,会对测试方法进行详细介绍。

  

  2- 闪存容量和接口方面,至少具备256MB以上的空余空间,微软推荐使用1GB以上空余空间的闪存。另外,如果使用USB1.1及以下规格的接口,将无法开启Readyboost功能;

  3- 闪存整体的读写性能要保持一定的一致性,内部不同位置的读写响应不能相差太大。有些所谓的高速闪存只有一部分容量使用高速存储体,余下的容量则使用低速存储体来填补,这样就会造成闪盘不同区域的读写性能不一致。具体的一致性数值要求微软并没有作出说明,但提供了测试软件以供用户测试,在我们后面的文章里会对这部分进行介绍。

  

  没有达到这些要求的闪盘设备,虽然在“属性”中也有Readyboost选项,但无法开启Readyboost功能。另外还有一点要注意的就是,Windows Vista Starter版本并不支持此项技术。

  安全的Readyboost技术

  

  启用Readyboost功能后,闪盘上会生成指定大小的缓存文件(如上图中的Readyboost.sfcache)。一般来说,用户可以随时随意取出USB插口上的闪盘,由于一般情况下闪盘内的所有缓存文件不过是硬盘交换文件的一个备份,因此不会造成系统崩溃。而保存在闪盘上的缓存文件采用了一定的压缩和加密措施,因此也具备一定的数据安全性。 Readyboost应用篇(2)-自己动手,测试闪盘性能

  虽然Vista会自动对外部存储设备进行性能测试,但并没有给出具体的测试结果,只是在测试通过后开启功能而已。而SISoft SANDRA或ATTO这些常用测试软件,由于没有针对Readyboost安排特别的测试,又不能够很直观地给出设备对4KB,512KB数据块的随机读写性能。如果要在两款都支持Readyboost的设备间挑选,用户就会无所适从。因此在专题的这一部分,我们将为大家介绍使用Winsat和Rbtest程序测试闪存Readyboost性能的方法。

  闪存随机读写性能测试方法

  其实,在Vista系统中就自带有对Readyboost很实用的测试软件,我们完全可以使用这些软件来达到辨别随机读取性能好坏的目的。在Vista 的Windows/system32目录中,有一个Winsat.exe程序,它的名称是Windows评估工具(Windows System Assessment Tool),这个评估工具相必Vista的用户都已经十分熟悉,每次装好系统后运行的体验索引分数就是由这个程序测试而来。但恐怕很多人都不知道,加上命令行参数之后,Winsat还可以用于很多硬件的性能测试,其中自然也包括闪存,正好符合我们的要求!

  

  具体测试闪盘Readyboost性能的运行方法如下:

  1- 首先保证当前具备用户管理员权限,如何实现管理员权限在很多Vista应用文章中已经有介绍,本文就不再重复。

  2- 获得管理员权限后,按WIN+R键,打入“CMD”,进入DOS窗口模式。

  3- 要测试4KB数据块的随机读取速度,可以打入:

  winsat disk –read –ran –ransize 4096 –drive 驱动器盘符

  如:“winsat disk –read –ran –ransize 4096 –drive i”表示对盘符为I的闪存盘进行4KB随机读取测试,测试完成后,画面大致如下:

  

  在测试结果的倒数第二行,也就是图中划红框的部分,我们可以看到测试的结果数值。

  同样的,要测试512KB数据块的随机写入速度,可以打入:

  winsat disk –write –ran –ransize 524288 –drive 驱动器盘符

  测试完成后,可以得到如下的结果:

  

  类似地,在测试结果的倒数第二行,也就是图中划红框的部分,我们可以看到测试的结果数值。

  闪存读写一致性测试方法

  要自行测试闪存读写的一致性,我们可以到这个地址下载微软测试工具,同样以管理员权限在DOS提示符窗口运行解包后的Rbtest.exe,命令格式为:“RBtest –assess 盘符:”(注意不要忘记打最后的”:”号)。如下图:

  

  测试完成后,如最后一行显示“PASSED”,则表示该闪盘已经通过该项测试,达到了要求。

  需要注意的是,由于这两个测试只是侧重于考察闪存配合Readyboost技术的性能,因此并不能代替全面的闪存性能测试,而随机读写性能也只是闪存性能的一部分而已,并不能作为衡量闪存性能的唯一标准。 Readyboost实测篇(1)-本地闪存卡Readyboost性能测试

  经过前面的介绍,相信大家对WIndows Vista中的Superfetch和Readyboost技术都有了一定的了解,简单地说,Readyboost技术是Superfetch技术的一种辅助技术,它要求闪存具有较好的随机读写性能,还要求闪存各区域的读写性能有较好的一致性。

  那么,市面上闪存实际产品的表现如何呢?读卡器方面是不是只要是USB2.0接口,就一定可以满足Readyboost的需要呢?为了帮助大家了解市场上产品的实际情况,在本次专题的实测部分,我们搜集了一些本地市面上常见的闪存卡,配合两款USB2.0读卡器进行了对比测试,以供对Readyboost功能感兴趣的读者选用时参考。此外,我们还做了开启和关闭Readyboost功能后系统性能的对比测试,以便大家对Readyboost技术有更为直观的了解。

  

  在测试进行之前,我们先来看看测试的软硬件配置情况。

  

  为什么我们没有选用支持USB2.0的闪盘来作测试呢?其实理由很简单,目前本地市面上流通的USB2.0闪盘产品质量龙鱼混杂,很少有产品能够满足Readyboost的要求,而闪盘也有许多媒体做过了这方面的测试,因此我们另辟蹊径,选择市场相对规范,其它媒体也很少测过Readyboost性能的闪存卡产品进行测试。另外,由于笔记本上多数自带读卡器,这样只要配合一块闪存卡就可以实现Readyboost功能,相信不少笔记本用户对此会有兴趣。

      Readyboost实测篇(2)Readyboost性能测试结果汇总

  以下就让我们进入闪存读写性能测试的结果汇总环节。在这一环节中,我们将分别使用Winsat、Rbtest对闪存进行测试,最后,将闪存和读卡器插入Vista系统,使用Vista自测功能检查Readyboost功能能否正常开启。 Readyboost 4KB随机读取性能测试结果汇总

  首先是4KB随机读取速度的测试,在这一步测试中,我们先使用锐志读卡器进行所有闪存卡产品的测试,之后再换用SSK读卡器进行部分闪存卡产品的测试,所有测试均重复3次,记最高值作为成绩,测试程序采用Vista自带的Winsat命令。最后将测试结果汇总如下:

  

  在4KB读取速度测试中,对金士顿Elitepro 1GB CF卡和金士顿512MB CF卡这两款产品,我们分别使用Reiz读卡器和SSK读卡器进行了测试,并将结果分别作了标记。而对Sandisk UltraII Plus USB 1GB SD卡,由于该卡采用特殊设计,不但可以通过插入读卡器使用,而且卡上还预设了USB2.0接口,因此我们分别使用Reiz读卡器和卡上自带的USB2.0接口进行了测试。

  最后的测试结果表明,虽然同为USB2.0读卡器,但由于内部设计的不同,造成读卡器对闪存Readyboost性能影响甚大。而本次到测的所有闪存卡,配合Reiz 35合1读卡器,基本都能达到微软要求的4KB读取速度最低值,其中金士顿512MB CF卡虽然成绩略低于最低要求值,但在经过Vista的自动测试后,仍然可以顺利打开Readyboost功能。而4KB读取速度推荐值方面则没有一款产品能够达到要求。

  Readyboost512KB随机写入性能测试结果汇总

  接下来进行的是512K随机写入速度测试,采用与上面的测试同样的步骤和方法进行,最后得到如下的测试结果:

  

  在512KB写入速度测试中,对金士顿512MB CF卡我们分别使用Reiz读卡器和SSK读卡器进行了测试,并将结果分别作了标记。而对Sandisk UltraII Plus USB 1GB SD卡则同样分使用Reiz读卡器和自带USB2.0接口两种情况进行了测试。

  最后的测试结果表明,读卡器仍然对闪存Readyboost性能影响较大。而本次到测的闪存卡,配合Reiz 35合1读卡器,除了金士顿512MB CF卡和某款无牌SD卡之外,基本都能达到微软推荐的Readyboost 512KB写入速度要求值,而即使是使用SSK读卡器,所有闪存卡也能都超过微软要求的Readyboost512KB写入速度最低值。

  特别值得一提的是Sandisk UltraII Plus USB 1GB SD卡这款特殊产品,即使在使用自带USB2.0插口的情况下,Readyboost性能方面也表现出不逊与使用读卡器的水平,方便性方面则明显优于其它产品。

  读写性能一致性检查结果及Vista自测试功能通过情况汇总

  最后,是进行Rbtest测试,以及使用Vista的自测功能检查系统能否打开Readyboost功能的最终验证。根据前面测试的结果,这个环节没有使用SSK读卡器进行测试,除了特殊的Sandisk UltraII Plus USB分为使用自带接口(1)和Reiz读卡器(2)两种情况外,所有闪存卡均在Reiz读卡器上进行测试。

  

  所有闪存都通过了Rbtest的一致性检查测试,而虽然有部分闪存在4KB读取性能测试中未能达到最低要求值,但最终插入系统后,经过Vista自测,只要所使用的读卡器合格,到测的所有闪存都能够正常开启Readyboost功能。

  需要再次提醒大家注意的是,由于本次测试只侧重于考察配合Readyboost技术的性能,因此并不能作为一次全面的闪存卡性能测试,而随机读写性能也只是闪存卡性能的一部分而已,并不能作为衡量闪存卡性能的唯一标准。 Readyboost实测篇(3)-Readyboost性能提升测试介绍

  经过前面的一轮测试,我们已经初步了解了闪存卡在配合Readyboost技术方面,所能够达到的性能指标,那么当我们开启Readyboost功能后,又能获得什么样的性能提升呢?在接下来的测试中,我们将为大家揭开谜底。

  根据我们前面的介绍,大家已经知道闪存开启Readyboost功能后的主要作用是能够配合Superfetch提高程序的启动速度,而Superfetch的特点是具有“记忆”功能,但也需要多次反复运行之后才能够起到应有的作用。因此我们安排了如下的测试过程。

  

  以下是测试过程的详细说明:

  1- 首先启动Windows Vista,并让系统闲置2分钟;

  2- 使用Acrobat8.0打开485MB的PDF文件,遍历全文,系统闲置2分钟;

  3- 打开预先保存在盘上的1个532KB大小的网页文件,记录从点击文件起到IE7完全打开网页为止所花费的时间,系统闲置2分钟;

  4- 开启一个130MB大小的Word2007文档,记录打开文件所需的时间,系统闲置2分钟;

  5- 开启一个3MB大小的Excel2007文档,记录打开文件所需的时间,系统闲置2分钟;

  6- 开启一个128MB大小的Photoshop文件,系统闲置2分钟;;

  7- 关闭所有程序,系统重新启动。

  我们将在安装单条512MB内存的配置下,分开启Readyboost和没有开启Readyboost两种情况,按照以上的流程,各重复做3次测试。至于测试的用具,由于Reiz读卡器和金士顿Elitepro 1GB CF卡在前面的测试中表现优良的性能,因此本轮测试也只使用这两款产品进行。 Readyboost实测篇(4)-Readyboost512MB内存性能提升测试结果汇总

  以下是在单条512MB系统内存的条件下,所测出的开启和关闭Readyboost功能后的系统性能对比。

  

  

  

  

  由512MB内存的测试结果,我们可以看到,Readyboost功能开启后,系统性能得到了不小的提升,尤其是在文件体积较大的情况下,由于闪存的缓存作用,Readyboost带来的性能提升更为可观,一般都可以有7-8秒左右的提高,达到20%以上的增幅,相当引人注目!

     总结与建议

  经过本专题的介绍,我们已经知道,Readyboost技术其实质是Vista操作系统利用闪存作为内存缓存的一种技术,这种技术在系统内存不足时(尤其是无奈使用512MB跑Vista的情况),可以使大型程序启动的速度有较大幅度的加快。它是作为Vista操作系统最新的Superfetch技术的一种辅助技术而开发出来的。由于闪存在读取随机数据方面,比起硬盘来说有得天独厚的优势,因此被选用为实现Readyboost功能的媒介。

  

  而要想在您的系统中开启Readyboost功能,方法是多种多样的,既可以使用USB2.0闪盘,也可以使用USB2.0读卡器+闪存卡的组合。当然,需要实现Readyboost还需要一些条件,主要是闪存的随机读写性能和一致性性能能够符合要求。但本次测试的结果表明,并不是所有的USB2.0读卡器和闪存卡都能够达到Readyboost技术的要求,由于目前读卡器和闪存卡还没有普遍推行Readyboost认证,因此在选购的时候,建议大家要按照专题中所述的方法自行测试,才能够确保买到的是合乎要求的产品。

  当然,Readyboost性能只是闪存卡总体性能的一小部分,其它如耐久性等也是闪存卡很重要的参数,因此虽然本次测试中的无牌SD卡能够满足Readyboost的最低要求,但我们还是不建议读者选购这样的产品。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值