PCEVA,PC绝对领域,探寻真正的电脑知识

标题: SLC Cache与应对读取测试方法 [打印本页]

作者: ggxuelei    时间: 2016-3-30 09:43
标题: SLC Cache与应对读取测试方法
基础知识回顾:
LBA(逻辑区块地址)及PBA(物理区块地址)
FTL(Flash translation layer)闪存转换层

为什么AS等SSD测试软件要先测写入后测读取?
因为SSD比HDD多了一个FTL转换层。FTL虚拟转换层是在SSD内部运作的,对于主机端是透明的,所以不存在软件读取到FTL的问题,操作系统都只能对LBA地址进行操作,无法和FTL直接沟通。操作系统通过文件分配表可以得知哪些LBA有文件存储哪些LBA位置没有文件存储,但LBA(Logical Block Address)正如其名,它是一个逻辑地址,即便文件分配表里某个LBA范围没有文件,他并不能确定硬盘上对应位置真的就没有存储数据——只有在Trim正常运作的SSD自己才知道。软件发出读取指令后,必然要进入到SSD当中,SSD查FTL,如果发现指令LBA位置对应的闪存实际是空白的没有数据,就不会再浪费时间进行实际的闪存读取,而是直接返回0,省去了闪存进行实际读取的延迟。所以直接对LBA进行读取的话,就会像HDTune那样测出来读取速度是有高有低的,这并不是SSD有毛病的表现。要想测试真实的数据读取速度,还是需要先写入、建立一个测试文件,然后在有实际数据存储的范围内读取。

HDTune是怎么测试硬盘的?


AS SSD Benchmark怎么测试硬盘的以及读取成绩如何被污染的?

[attach]350330[/attach]
除了AS SSD Benchmark之外,其他很多理论带宽测试软件都是先写入然后马上读取的,都可以被SSD轻松忽悠掉。现在850Evo的AS SSD Benchmark跑分比850Pro的分数高,至于原因大家自己想吧。

如何绕开SLC Cache测得真实读取性能?


除了AS,其他测试软件会被干扰吗?
这个真的不好说,越是复杂的测试方法越难以作弊,不过一旦作弊成功也很难被发现。以PC Mark为例,这款软件的公信力要比AS软件高出很多,记录-回放式的测试方法能够反映SSD的实际使用性能表现,而不仅仅是纯读或纯写的简单几个场景下的带宽。PC Mark 8在测试前同样会有预先生成测试文件的动作,使用Process Monitor可以观察到PC Mark 8存储测试开始后的初始化阶段是在用随机大小的区块进行持续写入:以下我只开了ReadFile和WriteFile两个Filter

[attach]350331[/attach]
在实际回放测试项目开始前会有几秒钟监测不到硬盘读写操作,但这个时间过程并不长,绝对不够30秒,对于某些SSD来说可能还不够它把SLC Cache全部释放完毕,SSD这时会选择暂停释放保留缓存还是继续强制释放完就要看设计策略了。短暂停歇之后PC Mark 8就开始了回放式读写测试。
[attach]350332[/attach]
测试对应的磁盘活动:这些磁盘活动都是Futuremark公司预先在固定设备上进行涉及磁盘IO的软件操作时记录下的硬盘访问日志,在其他盘上测试时依样葫芦的回放这些磁盘读写操作,来模拟考察实际应用程序使用硬盘时的快慢表现。由于回放测试的脚本是固定的,不同的SSD之间就可以通过完成时间来对比性能表现高下了。
[attach]350333[/attach]
不过我同时发现一个问题,PC Mark 8的存储测试文件体积仅有11.4GB,而且在切换测试项目的时候,这个测试文件似乎并不会重建,而是反复在其上面进行读写测试。
[attach]350334[/attach]
11.4G说大不大,说小不小,虽然各种缓存手段(包括SLC Cache和Rapid Mode/PlexTurbo之类的内存缓存)都不大可能将11.4G的测试文件整个吃下,但总有部分读取操作被缓存命中的机会,所以开了1~4GB的内存缓存也能提升PC Mark 8成绩就不足为怪了。虽然从原理上来说PC Mark 8尽可能去衡量硬盘自身性能,但显然并非没有手段可以干扰到他的成绩。当前使用SLC Cache的SSD当中有没有哪个型号在PC Mark 8的存储测试成绩当中取得了不当获利,我就不得而知了。

到底该怎么应对作弊者:
看看3DMark对待三星等手机在测试软件中作弊是如何处理的:直接封杀不承认作弊机型的跑分成绩。也就是说,对付作弊者,直接拒绝他进考场与其他人一起考试。与其研究怎么破解作弊,不如做到心中有数,无视他的作弊“成就”。现在Futuremark只显示前200名成绩,看不到列表末尾因作弊被除名的机型了,据说三星的作弊机型后来也已经在舆论压力下去除了作弊代码,重新回到排行榜了。至于SSD的成绩作弊,现在似乎还没有太多人关心...大把人还停留在跑AS SSD Benchmark的自我娱乐中呢。



作者: ggxuelei    时间: 2016-3-30 09:49
补充说明一下,主楼中Process Monitor两个截图当中的PCM8测试文件名不同,是因为这是我在两次测试过程中分别截到的图,并非是测试过程中文件名发生变化。
作者: 大雄来啦    时间: 2016-3-30 13:45
学习,学习!SLC MODE其实不算是负面的技术,相对来说给用户也有比较大的好处
作者: fjzjk1    时间: 2016-3-30 14:13
正好今天看到某贴吧有个叫人家为什么不要买tlc的帖子.......就是暴力写他几十G,用光slc cache看速度
作者: nighttob    时间: 2016-3-30 14:37
fjzjk1 发表于 2016-3-30 14:13
正好今天看到某贴吧有个叫人家为什么不要买tlc的帖子.......就是暴力写他几十G,用光slc cache看速度 ...

他们怎么不说把TBW写完了再用

作者: kobe    时间: 2016-3-30 14:46
fjzjk1 发表于 2016-3-30 14:13
正好今天看到某贴吧有个叫人家为什么不要买tlc的帖子.......就是暴力写他几十G,用光slc cache看速度 ...

那是无理取闹了,TLC盘原本都是入门级定位,不是设计用来暴力使用的,既然暴力使用何不买高端的适合的盘用呢
SLC Cache这东西并不是邪恶的,对加快TLC写入速度很有帮助,而且也是有用的,毕竟轻负载应用很多时候SSD都是空闲的,完全有时间去慢慢释放缓存
楼主写的乃是有些盘不光用好了SLC Cache的写入加速功能,还顺便用来给测试软件的读取测试作弊,这就不应该的了

作者: 小钻风    时间: 2016-3-30 14:56
SLC Cache现在是个绕不开的问题,哪家TLC颗粒不用SLC CACHE跑分太差卖不出去的
作者: czq1351    时间: 2016-3-30 15:01
学习了,感谢楼主,不知道什么时候能看全
作者: Calvi    时间: 2016-3-30 16:20
主旨并不是说SLC Cache不好,只是在解释各个软件跑分的原理以及某品牌跑分作弊的行为
作者: yhhekeda    时间: 2016-3-30 18:13
闪迪加强版120g 240g的ncache技术跟slc cache相似,那这俩在as ssd的成绩有水分吗?
作者: neeyuese    时间: 2016-3-30 18:18
yhhekeda 发表于 2016-3-30 20:13
闪迪加强版120g 240g的ncache技术跟slc cache相似,那这俩在as ssd的成绩有水分吗? ...

闪迪加强版没有nCache。


作者: batzxcboy    时间: 2016-3-30 19:22
跑分很重要的
作者: wgy07    时间: 2016-3-30 19:49
跑分就是安慰剂,很有效果
作者: chenkedi    时间: 2016-3-30 20:11
为什么要积分高于30才可以浏览

作者: spore    时间: 2016-3-30 20:18
请问积分如何快速提升到30以上?
作者: pio9999    时间: 2016-3-31 01:34
学习了,感谢楼主

作者: mao1990    时间: 2016-3-31 07:54
为什么AS等SSD测试软件要先测写入后测读取?
作者: Metasploit    时间: 2016-3-31 12:27
写的很清楚,TKS~~
作者: 夜色迷离    时间: 2016-4-1 11:08
积分30,好遥远啊
作者: 心有猛虎    时间: 2016-4-2 10:34
还没搞清楚怎么才有30积分
作者: haierccc    时间: 2016-4-2 17:55
好文!           
作者: werewolf2101    时间: 2016-4-3 00:12
不错,学习了。                                
作者: 我叫Jonn.yR    时间: 2016-4-3 17:10
说好的积分30.。。。。
作者: pyazhou    时间: 2016-4-3 18:05
很好的文章,受教了。
作者: czx2014    时间: 2016-4-3 22:44
非常专业,学习了,多谢~~
作者: mengld    时间: 2016-4-4 08:45
as ssd新版本也可以建立10g的测试文件,这样对于120g级别tlc颗粒ssd,应该可以超过cache区了
作者: openzs    时间: 2016-4-4 13:16
Calvi 发表于 2016-3-30 16:20
主旨并不是说SLC Cache不好,只是在解释各个软件跑分的原理以及某品牌跑分作弊的行为 ...

这个SLC cache为何叫作弊?
CPU的L1、L2、L3均与此类似,并未见到有人说此乃作弊行为

作者: DesperadoJ    时间: 2016-4-4 18:28
本帖隐藏的内容需要积分高于 30 才可浏览,您当前积分为 18
真尴尬
作者: ggxuelei    时间: 2016-4-4 19:53
openzs 发表于 2016-4-4 13:16
这个SLC cache为何叫作弊?
CPU的L1、L2、L3均与此类似,并未见到有人说此乃作弊行为
...

问的好,不过这个问题何不直接问我呢?
CPU的L1、L2、L3是预取,而SSD的SLC Cache是缓冲写入并在空闲时立即释放,SSD的SLC Cache并没有预取的特性,包括用了SLC Cache给读取作弊的SSD,它的SLC Cache内缓存的是刚刚写入的数据,只要一有空闲,SLC Cache就会立刻释放,Cache中就什么也不存在了,没有预读,又何来实际应用的加速效果?如果测试软件不是写完后立刻就测读取,又如何能体现出作弊的效果?实际使用中尤其是家用条件下,空闲时间远比IO操作时间多,SLC Cache原本就是用来加速写入的,只要有空闲就会释放的一干二净,不能再被用来影响读取速度,哪里又有机会让作弊算法体现出“优化”的效果来?

如果你还不明白CPU的Cache原理,我直接复制一段计算机组成与系统结构-Cache基本原理的课程内容过来给你看

  1. 2. Cache的基本原理
  2. CPU与Cache之间的数据交换是以字为单位的,而Cache与主存之间的数据交换则是以块为单位的。一个块由若干个定长字组成。
  3. 当CPU读取主存中的一个字时,该字的主存地址被发给Cache和主存,此时,Cache控制逻辑依据地址判断该字当前是否存在于Cache中:若在,该字立即被从Cache传送给CPU;若不在,则用主存读周期把该字从主存读出送到CPU,同时把含有这个字的整个数据块从主存读出送到Cache中,并采用一定的替换策略将Cache中的某一块替换掉,替换算法由Cache管理逻辑电路来实现。
复制代码



作者: ggxuelei    时间: 2016-4-4 19:59
写入缓存只需将写入内容先承接下来,然后待空闲时释放即可
而读取缓存必须有预取特性,只有提前将可能用到的数据放到缓存内,在读取的时候才可能命中缓存。即便不主动预读,作为读取缓存,至少得保证一个底线,那就是读取缓存不能在平常使用中经常保持内容为空的状态,如果缓存是空的,哪里来的读取加速效果?读取缓存容量有限,为了保证命中率,还应有一个热数据算法,将最有可能用到的数据保存在读取缓存内,将冷数据释放出去,而你看看现在有哪一款SSD的SLC Cache是具备这些读取缓存所必备的条件的?@openzs
作者: a120004035    时间: 2016-4-5 12:04
萌新前来围观。。。。
作者: moonrise    时间: 2016-4-5 15:51
原来有好多积分的,论坛崩溃以后就不见了
作者: chenyz_aleck    时间: 2016-4-5 21:05
非常好的科普贴,SLC cache轻度使用挺好,便宜没好货~
无外置缓存的MLC始终还是要贵上那么一点点~
作者: canalvorfeed    时间: 2016-4-5 21:28
30积分?内容太高深?怕新人看不懂?我是看不到,猜的。
作者: hecrix    时间: 2016-4-5 23:09
积分30,不知道还差多少哦
作者: litaohqqt    时间: 2016-4-7 10:55
跑分就是安慰剂,很有效果
作者: fenger313    时间: 2016-4-7 15:53
为什么好好的分享经验要设置积分吗?
作者: openzs    时间: 2016-4-7 20:56
ggxuelei 发表于 2016-4-4 19:59
写入缓存只需将写入内容先承接下来,然后待空闲时释放即可
而读取缓存必须有预取特性,只有提前将可能用到 ...

多谢细心科普,你说的预读机制我记得有HDD+SSD这类混合盘上面小容量SSD会有此预读(或者叫学习?)机制,应该是以前看到的产品,但是没有测试过这类产品。
如果属实的话,那么这类算法应该可以照搬过来用在SSD上吧?会有难度?能够实现了预读,那么我觉得就可摆脱“作弊”说法了!~



作者: ggxuelei    时间: 2016-4-8 18:34
openzs 发表于 2016-4-7 20:56
多谢细心科普,你说的预读机制我记得有HDD+SSD这类混合盘上面小容量SSD会有此预读(或者叫学习 ...

TLC SSD的最大缺憾在写入速度上,现在能拿出不少TLC空间模拟SLC已是不容易了,哪里可能再分一部分给预读用?而且预读需要热数据算法不间断调整缓存内的内容,这样带来的写放大得不偿失。退一步讲,如果真要多做这么一个预读缓存,那么所有读取指令都需要先对照检查一下数据是否存在于“SLC读取缓存”中,如果缓存未命中(显然未命中是大概率事件)还会因为这个对照检查的过程增大一些延迟,综合下来到底是加速了还是减速了?

作者: coolysj    时间: 2016-4-11 13:59
好贴,但看不到,支持下作者,可以做个朋友么,想学习下关于SSD的知识,我玩DIY也有10年,但对SSD真是小白白白 。QQ83188221
作者: kessty    时间: 2016-4-21 17:14
太专业了  一直都无法接受TLC  SSD,特别是感觉被欺骗的SLC Cache
作者: a376230095    时间: 2016-4-24 21:12
为了30积分,小白拼了
作者: Micromiku    时间: 2016-4-25 16:46
还是得再深入学习下~
作者: Rayi    时间: 2016-4-25 20:15
谢谢分享 我也想看看真实速度多少




欢迎光临 PCEVA,PC绝对领域,探寻真正的电脑知识 (https://bbs.pceva.com.cn/) Powered by Discuz! X3.2