Essence 发表于 2014-8-19 17:08

浦科特PlexTurbo测试

本帖最后由 Essence 于 2014-8-19 17:38 编辑

在浦科特M6Pro的评测中我们提到PlexTurbo具有加速SSD和降低SSD写入量的功能,本文将做详细的探索分析。由于小编水平有限,且缺乏可供参考的资料,本文中的测试均是摸索得来,如有纰漏欢迎大家批评指正。

PlexTurbo加速效果测试:

为了探索PlexTurbo功能的加速效果,首先使用到了一个最常见的工具软件:HDTune。HDTune文件基准测试的初衷不是为了测试内存加速软件,不过文件基准测试可以自定义测试文件长度,又能显示实时速度曲线,采样频率也比较快,能够满足我们这次的使用需求。

测试文件长度设置为2048MB,HDTune文件基准测试结果如下图:

HDTune文件基准测试是先连续写入,然后再连续读取(连续读取之后还有随机读写测试,不过那些不是我们今天要考察的内容)。传输速度曲线红色为写入速度曲线,蓝色为读取速度曲线。由基准测试项目1的数据可知,浦科特M6Pro 128GB的持续读取速度小于538MB/s,持续写入速度小于319MB/s,高于以上数值的读/写操作是受到了PlexTurbo内存缓存的影响。读取的部分,并非全部写入被缓存的区间在读取时都获得了速度增益,这是因为内存缓冲区大小受限。

PlexTurbo的缓存过程就是在写入过程中自己在内存中留了一份备忘。下面可以用一个比较形象的比喻:老师讲课过程中,小明在脑中记忆。老师讲了很多,小明只能记住一部分(内存缓冲区有限),后边讲的太快就记不住了。这时老师停下来提问,小明还记得的内容就能立刻回答出来,而记不住的就只能慢慢翻课本后才能回答了。

经过反复测试,最终我们确定PlexTurbo的内存缓存大小为900MB左右:

可能细心的读者已经发现,为何文件长度为900MB时写入速度平均只有319MB/s左右,曲线全程都没有多少高峰出现,完全不同于文件长度为2048MB时的情况。经过反复调整测试文件长度进行试验,我们发现当文件长度小于等于1999MB时写入速度基本就是M6Pro的实际写入速度,数据被老老实实的直接写到了固态硬盘内(Write Through模式);当测试文件长度大于等于2000MB时情况发生改变,写入速度曲线会出现高峰,PlexTurbo开始缓存写入数据(Write Back模式)。

为何文件长度2000MB会成为一个转折点?我们使用Process Monitor监视HDTune的写入操作发现,文件长度设置会影响到HDTune写入测试时的区块大小,文件长度设置越大,写入测试时使用的区块也越大,当达到文件长度设置达到2000MB时,写入测试使用的区块大小刚好是10MB。由此我们得知PlexTurbo对于持续写入操作的缓存策略:当连续写入时,如果数据区块小于10MB,则应用Write Through策略,数据被直接写入到固态硬盘内;如果数据区块大于等于10MB,则应用Write Back策略,要写入的数据进入内存缓存中的同时向M6Pro内写入(但写入到盘内后缓存的内容不会立即被释放,后边会分析缓存释放策略)。由于内存速度很快,900MB的内存缓存区被占满,此时暂停缓存,改为Write Through模式并全力将缓存中的数据写入到盘内。让我们再来看第一张HDTune文件基准测试图,920MB-1843MB区间就是内存缓存区被占满,应用Write Through模式的区间,这期间写入的数据未进入缓存中,所以再次读取的时候也不会得到速度增益,表现在图中就是读取速度曲线也是低位。

对于连续写入,10M区块大小是是否缓存的分界岭,小于10M区块的连续写入将不被缓存,这也就解答了M6Pro开启PlexTurbo后TxBENCH成绩里两项128K区块持续写入的性能读数没有提升。

上面是针对连续写入的缓存策略,低于10MB区块不缓存Write Through,大于10MB区块会缓存Write Back。对于随机写入,经过测试PlexTurbo会选择照单全收,全部缓存,应用Write Back模式。特别要指出的是,浦科特的PlexTurbo针对数据安全性还是做了比较多的考虑,虽然某些情况下应用Write Back模式将要写入的数据先缓存到了内存中,但并非把数据留在缓存内就不管了,而是会积极将其实际写入到SSD内,避免掉电数据丢失。

前面分析了数据进入缓存的策略,由于内存速度远大于NAND,900MB的内存缓存区被占满后就需要选择清空一部分旧缓存数据来接纳新的数据进入。浦科特宣称PlexTurbo在此有分析Hot DATA热数据的能力,自动将最常使用的数据保留在缓存内。关于PlexTurbo是否有热数据分析能力,因为要使用到测试PlexTurbo降低写入量效果的部分内容,我们在后边部分再分析,首先还是先来验证PlexTurbo是否具有降低SSD写入量的效果。

我们在前面已经提到,浦科特PlexTurbo重视数据安全,会及时将缓存内的数据实际写入到M6Pro盘内,那是否就意味着无法有效降低写入量了呢?内存缓存软件降低写入量和保持数据安全性原本是一对矛盾的选择,不过PlexTurbo还有一项能力能够降低写入量,那就是对比将要写入的数据和缓存内的数据,如果数据是相同的,则不进行实际写入固态硬盘的操作,从而降低了写入量。当然,要达到尽可能好的降低写入量效果,缓存内的数据必须是经常要写入的内容(分析Hot DATA热数据,将其保留在缓存中),这样才有更多机会遇到要写入的数据与缓存内的数据相同,不执行实际写入固态硬盘的操作,从而降低写入量。


PlexTurbo降低写入量的测试:

我们使用Windows自带的画图软件新建了一个9400*9400像素的24位BMP图像文件,将其保存到M6Pro上,文件体积为252MB,小于900MB,能够被PlexTurbo完整地缓存。之所以选择BMP文件格式是因为他的非压缩属性,在像素固定的情况下文件体积不变。打开CrystalDiskInfo记录当前固态硬盘的写入量,然后点击画图软件的保存按钮,再F5刷新CrystalDiskInfo的SMART信息,检查M6Pro写入量变化。在没有开启PlexTurbo的情况下,每次保存都会让M6Pro增加与BMP图像文件体积相同的写入量。而开启PlexTurbo之后,如果图像内容未发生改变,多次按下画图软件的保存按钮,M6Pro的写入量不发生改变。这说明BMP图像文件进入了PlexTurbo内存缓存内,并且PlexTurbo能够检测到要写入的内容未发生变化,不必向M6Pro固态硬盘内写入重复数据,从而降低了写入量。

随后我又测试了更多内容,比如在图像内涂鸦,然后再保存。如果没有开启PlexTurbo,M6Pro会增加图像文件体积的写入量,而在开启PlexTurbo之后,涂鸦再保存,M6Pro的写入量增加很少,CrystalDiskInfo的SMART信息中F1值只增加1(每写入32MB数据F1数值加1)或者干脆不增加。这说明PlexTurbo能够检测到文件的部分改动,写入时不修改重复内容,只写入变化的信息,降低了写入量。

从上面Windows画图测试PlexTurbo降低写入量效果的试验也可以得到一个验证当前数据是否在内存缓存中的方法:再次保存图像的时候如果SSD写入量未增加,说明图像文件当前在缓存当中;如果再次保存图像后SSD写入量增加了,说明图像文件当前没有完整的存在于内存缓存当中了。

这里小编也用一段故事比喻来方便大家理解PlexTurbo降低写入量的原理:
老师布置了新的作业,小明发现老师布置的10道题里有8道是昨天写过的,于是直接拿出了昨天写的8道题作业,然后只需要再补写2道题就可以告诉老师我已经写完了,这样不但作业完成最快,而且省了作业纸。而节省作业纸的效果,就相当于降低了固态硬盘写入量。


嗯,辛苦小明了 - - 下面我们将验证以下内容:
PlexTurbo Hot Data是否有热数据分析能力
PlexTurbo 缓存数据重启是否保存

仍旧使用Windows画图程序创建9400*9400像素的24位色BMP位图,反复保存10次,然后打开HDTune进行文件基准测试,文件长度900MB,结果首次文件基准测试就将测试中写入的900MB文件全部缓存,在HDTune文件基准测试后再次保存BMP位图文件,M6Pro的写入量增加了BMP文件体积大小。也就是说先进入缓存中的图像文件,虽然反复保存了10次,但仍旧直接被首次写入的HDTune测试文件所取代,也即:PlexTurbo在统计热数据时不计算被PlexTurbo发现写入的内容未更改而没有造成实际写入的次数。

如果每次都在图像上涂鸦然后保存,PlexTurbo就会对比缓存中的差异部分,只写入发生变更的部分数据,而后进行HDtune文件基准测试,测试文件长度选择900M,发现有大约250M的写入内容未被保存,这个容量恰好是PlexTurbo缓存的BMP位图文件的大小,说明PlexTurbo分析得出了BMP图像是Hot Data,并将他们保留在了内存缓存当中。

重新启动电脑,等系统完全启动后再打开HDTune运行文件基准测试,文件长度设置900MB,结果全部900M写入数据全部被缓存,也即说明在重新启动电脑之前内存缓存中的BMP位图热数据被丢弃了。

为了结论的准确性,我再次使用另一方法对重启后Hot Data能否保留进行了验证:
还是使用Windows画图,创建一个9400*9400像素的24位BMP图像,通过多次涂鸦后保存(如果文件内容完全无改变,多次保存不会增强PlexTurbo在分析热数据时的权重)使图像文件完整进入PlexTurbo内存缓存当中,然后重启电脑,再次打开BMP图像,再次点击保存,我们通过CrystalDiskInfo发现,M6Pro的写入量增增加了大约256M,与BMP图像的252.8MB相符,说明重新启动电脑之后,这个BMP图像已经不存在于PlexTurbo的内存缓存当中了。

PlexTurbo 缓存数据重启后无法保存,在一定程度上影响了PlexTurbo降低写入量功能的实用性。


PlexTurbo内部是如何管理缓存数据的:

PlexTurbo缓存内是如何管理缓存数据的呢?猜测有按文件名和按LBA地址两种可能。为了证实,我们还是用BMP图像保存的方法来验证。因为上面已经验证过在重启电脑后PlexTurbo缓存会清空,这里我们重启电脑,然后用Windows画图工具打开保存在M6Pro上的252.8MB的BMP位图文件,不做任何改动直接保存,这样BMP位图文件就保留到了PlexTurbo的缓存中。接下来关闭画图程序,把BMP文件修改一个新的文件名然后再次用画图程序打开,不做任何修改再次保存。最后这次保存前后的写入量变化只有32M左右,从而证实PlexTurbo是以LBA地址来管理缓存数据的。


总结:

PlexTurbo是浦科特在内存加速技术上的首次尝试,在加速SSD的同时还具备热数据识别和降低固态硬盘写入量的功能,这些功能都已得到了试验的验证。

PlexTurbo针对小于10MB区块的持续写入采取Write Through策略,同时可以缓存写入的数据;对于大于等于10MB区块的持续写入采取Write Back策略,不同于一般的Write Back策略,PlexTurbo选择的是同时向内存缓存和固态硬盘内进行写入,减少断电可能导致的数据丢失。PlexTurbo降低M6Pro写入量的功能实测有效,但其功能生效有一定前提,在日常使用中的实际降低写入量效果如何尚无法确定,希望浦科特能在接下来在PlexTool工具箱中增加显示PlexTurbo实际降低写入量的统计功能。

PlexTurbo缓存的热数据在重启后不能保留,降低了实用性。同时在测试中我们发现,开启PlexTurbo之后对M6Pro的高负载随机写入会导致较高的CPU占用率,不适合服务器等一些随机写入负载高同时又对性能一致性有要求的环境使用。综上所述,PlexTurbo功能并非仅仅是配合跑分软件的玩具,而是具备一定的实用价值,当然同时也有很多可以继续改进的地方。

忘世 发表于 2014-8-19 17:25

hd tune测试合适吗?

nighttob 发表于 2014-8-19 18:11

忘世 发表于 2014-8-19 17:25 static/image/common/back.gif
hd tune测试合适吗?

只是HD Tune的读取测试会受到SSD原理的影响,写入测试还是实打实的写入的。
而且工具就是工具,还是在人会不会用。

忘世 发表于 2014-8-19 18:26

nighttob 发表于 2014-8-19 18:11 static/image/common/back.gif
只是HD Tune的读取测试会受到SSD原理的影响,写入测试还是实打实的写入的。
而且工具就是工具,还是在人 ...

谢谢说明
SSD新手一个

haierccc 发表于 2014-8-19 19:53

那么多软件都在DRAM上打主意,用复杂的算法来求得高速度/低延迟。
什么时候外存的速度能够抵得上DRAM啊。。。

黑鹰武士 发表于 2014-8-19 20:07

通读一遍 很靠谱 估计一年以后m7推出后 俺的M6S也能享受这个功能。。。哈哈

huilailewo 发表于 2014-8-19 20:58

学习了,能不能辛苦再深度挖掘1下M6pro的http://bbs.pceva.com.cn/thread-97295-1-1.html这里下数第2图 TT 的读写混合比不同的性能情况?
看M6pro128GB/256GB/512GB/1TB四档容量,对应缓存分别是256MB/512MB/768MB/768MB。比常见盘容量更充裕的盘上缓存配合内存缓冲减少实际的读写交错是有可能有更好的效果,就是不知实际怎样

fengmingfm 发表于 2014-8-20 01:16

什么时候 PlexTurbo 能支持 M6S 和 M6M 啊???

toche888 发表于 2014-8-20 08:52

huilailewo 发表于 2014-8-19 20:58 static/image/common/back.gif
学习了,能不能辛苦再深度挖掘1下M6pro的http://bbs.pceva.com.cn/thread-97295-1-1.html这里下数第2图 T ...
SSD本身的缓存主要是用来存放FTL表的, 闪存容量越大, FTL表就越大, 不是用来存放用户数据的。

michelelee 发表于 2014-8-20 09:06

fengmingfm 发表于 2014-8-20 01:16 static/image/common/back.gif
什么时候 PlexTurbo 能支持 M6S 和 M6M 啊???

都支持了,让M6PRO怎么卖。。。

xmiangui 发表于 2014-8-20 10:37

比想象中好,看来不是单纯为了跑分设计的缓存软件。不过因为策略比较保守(怕掉电),也没太大惊喜。而且我个人是不喜欢这类抢操作系统工作的软件,倒不是不好,增加一层系统复杂度总觉得不可靠。

当然有这个需求的用户还是可以玩玩的,就好比有些存储设备,写入的时候数据在缓存留一份,能提高10倍的读性能。

huilailewo 发表于 2014-8-20 11:10

toche888 发表于 2014-8-20 08:52 static/image/common/back.gif
SSD本身的缓存主要是用来存放FTL表的, 闪存容量越大, FTL表就越大, 不是用来存放用户数据的。
...

现在的M6pro或是你说的那个样子但也不是不可改良的,那个路径是http://bbs.pceva.com.cn/thread-95933-1-1.html   《影驰战将M产品评测》里总结前的
          “上面已经提到,战将M所用颗粒最小读写单元Page的大小是16KB。4K区块写入IOPS高出16KB区块,说明了固态硬盘对写入数据进行了缓存。简单的理解就是把要写入的数据在缓存中凑足16KB之后再写入到颗粒中,这样就减小了写入放大,也提高了性能。
固态硬盘的缓存中除了存放FTL表,也会有一小部分用于数据缓存。缓存也是有限制的,为了防止掉电导致数据丢失,数据缓存的容量一般都会比较小,并且会定期刷新将缓存数据写入到闪存中。
那么既然4K随机写入数据是经过缓存的,那么测试固态硬盘的写入能力就不应以此为依据,相比之下考察颗粒Page大小的随机写入性能更有意义。”

这1段里提出的,延展开来就是读有高优先权,写先缓冲着凑整并等待空闲时再写入闪存


kkess 发表于 2014-8-20 11:34

huilailewo 发表于 2014-8-20 11:10 static/image/common/back.gif
现在的M6pro或是你说的那个样子但也不是不可改良的,那个路径是http://bbs.pceva.com.cn/thread-95933-1- ...

应该是定时Flush缓存内存到NAND颗粒内,不管当前缓存了多少内容。
SSD预读取缓存是没有意义的,缓存命中率太低了
混合读写企业级盘做的都很好,Ocz的Barafoot 3主控应对混合读写的表现也不错

Pale_Cheung 发表于 2014-8-20 13:16

haierccc 发表于 2014-8-19 19:53 static/image/common/back.gif
那么多软件都在DRAM上打主意,用复杂的算法来求得高速度/低延迟。
什么时候外存的速度能够抵得上DRAM啊。。 ...

外部存储器进步,dram也会进步。

只要设计目的是“外存”,那永远就要差2个数量级。

因为这个系统就是这么设计的。

xmiangui 发表于 2014-8-20 14:02

本帖最后由 xmiangui 于 2014-8-20 14:03 编辑

haierccc 发表于 2014-8-19 19:53 static/image/common/back.gif
那么多软件都在DRAM上打主意,用复杂的算法来求得高速度/低延迟。
什么时候外存的速度能够抵得上DRAM啊。。 ...
因为一般意义上的外存,最大的特点是数据不易失,而要做到断电XX时间后数据完整,必须面对检错、纠错、冗余。想要进一步提高速度,还要依赖于缓存和映射。

这些都是要依靠复杂的算法来保证,既然有复杂的算法,也需要有高速的内存(供外存的主控使用的内存)。所以外存的速度依赖于内存速度和主控速度的发展,结果就是永远别想超过内存啦。

除非不计成本用比主流内存快一个数量级(同样也至少贵一个数量级)的技术,当然这样的产品估计也没多少人买得起。

huilailewo 发表于 2014-8-20 21:36

kkess 发表于 2014-8-20 11:34 static/image/common/back.gif
应该是定时Flush缓存内存到NAND颗粒内,不管当前缓存了多少内容。
SSD预读取缓存是没有意义的,缓存命中 ...

定时是易用稳定;      120G配256MB、240G配512MB缓存这不拿点出来用也太亏了, 在缓存中的数据写完后的空闲时预读那些难读的随机数据进缓存1但命中就快很多;    看到OCZ Vector 150广告里的混合读写效果,搞1搞新固件M6Pro有可能和它同样好或再好点

easports1200 发表于 2014-8-20 22:27

感觉还是适合笔记本

lxdddxl 发表于 2014-8-20 23:05

装个缓存软件例如PrimoCache设定写入延时也能减少硬盘写入量,而且对所有SSD和机械硬盘都有效
就是跑分没那么好看

skill 发表于 2014-8-21 03:00

lxdddxl 发表于 2014-8-20 23:05 static/image/common/back.gif
装个缓存软件例如PrimoCache设定写入延时也能减少硬盘写入量,而且对所有SSD和机械硬盘都有效
就是跑分没那 ...

可惜现在收费了,比 SUPER CACHE 还贵,其实这两个软件对机械盘更合适,用在SSD上,命中率很低

mmrg 发表于 2014-8-21 16:08

本帖最后由 mmrg 于 2014-8-21 16:18 编辑



SuperCache 5.2
2X M6s 256

两次测试差好多{:1_484:}

补图(不知道可以和6p有的拼不{:1_466:})
页: [1] 2
查看完整版本: 浦科特PlexTurbo测试