PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

SLC Cache与应对读取测试方法

[复制链接]
跳转到指定楼层
1#
ggxuelei 发表于 2016-3-30 09:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
点击数:16030|回复数:45
基础知识回顾:
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是怎么测试硬盘的?
HDTune的基准测试(也就是常用的读取测试显示蓝色曲线的部分)默认使用64KB区块对全盘LBA范围抽取采样进行持续读取测试,这些设置可以更改,但是在最终测试成绩页面上不会显示这一成绩使用了何种设定,所以你看到的HDTune测试速度与自己测出的出入巨大时也需要考虑设置原因。

上图为HDTune设置选项,默认是局部测试,也就是从硬盘全部寻址范围内抽取一定比例的点进行测试,越是偏向“快速”选取的采样点越少,而只有选择“全部测试”,才会测试硬盘全部可寻址范围内的速度,当然一般来说硬盘都不是填满数据的,所以盘内数据存放多少也会影响HDTune测出来的速度曲线。由于磨损均衡等影响,数据在SSD内部实际存储位置是随机化的,而HDTune测试区块大小每次是一个固定值,采样测试选取的LBA位置上不定是什么样的数据存储状态,可能是全空的(速度最快),可能是全写满数据的(速度最慢),甚至还可能是部分有数据的(64K区块测试,如果采样区间选的位置正好有4K数据和60K空白呢):用HDTune基准测试测量SSD读取速度是不靠谱的手段。

AS SSD Benchmark怎么测试硬盘的以及读取成绩如何被污染的?
既然SSD读取到空白位置时的成绩有水分,那只要在测试读取的时候先生成一个测试文件,然后只读取文件内的有数据部分不就好了嘛?AS SSD Benchmark既要测读取又要测写入,所以他就借着生成测试文件的机会把测试文件的体积除以生成测试文件所用的时间,然后就得出了持续写入速度。接下来马上读取刚生成的测试文件,得出持续读取的速度。那么问题就来了,前边有网友提出有些SSD会借着写入和读取测试连续进行的特点利用SLC Cache进行读取成绩作弊,这个情况我在2014年就发现了,原本只是好奇为何三星840Evo的4K单线程读取成绩那么妖娆,结果最终发现不但4K单线程读取成绩掺水,持续读取和4K多线程读取成绩都有水分,漂亮的跑分之下是针对测试软件的定向优化。

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

如何绕开SLC Cache测得真实读取性能?
目前来看,使用TLC闪存的SSD基本都使用了固定SLC Cache容量的模式,没有用动态SLC范围的(其中一个原因是因为TLC颗粒太慢,根本撑不起中间动态转换),而这些固定SLC Cache的盘,只要遇有空闲就肯定会将SLC Cache区域全部释放清空,也只有这样才能保障用户需要写入时有充足的SLC空间响应突发写入。要想避开SLC Cache对于读取可能产生的干扰,那就在建立测试文件之后,稍等个几分钟,SLC Cache都释放光了,这时候你对测试文件进行读取,得到的就是真实读取性能了。使用IOMeter可以实现这个目的,我在以前的帖子里其实已经说过具体怎么做,简单来说就是IOMeter设置好测试文件大小后先添加一个Idle任务开始跑,等测试文件建立好了就可以停下来,然后等几分钟再把测试项目改成你想测试的类型就可以了。

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


在实际回放测试项目开始前会有几秒钟监测不到硬盘读写操作,但这个时间过程并不长,绝对不够30秒,对于某些SSD来说可能还不够它把SLC Cache全部释放完毕,SSD这时会选择暂停释放保留缓存还是继续强制释放完就要看设计策略了。短暂停歇之后PC Mark 8就开始了回放式读写测试。

测试对应的磁盘活动:这些磁盘活动都是Futuremark公司预先在固定设备上进行涉及磁盘IO的软件操作时记录下的硬盘访问日志,在其他盘上测试时依样葫芦的回放这些磁盘读写操作,来模拟考察实际应用程序使用硬盘时的快慢表现。由于回放测试的脚本是固定的,不同的SSD之间就可以通过完成时间来对比性能表现高下了。

不过我同时发现一个问题,PC Mark 8的存储测试文件体积仅有11.4GB,而且在切换测试项目的时候,这个测试文件似乎并不会重建,而是反复在其上面进行读写测试。

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的自我娱乐中呢。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 2代金券 +100 绝对值 +1 收起 理由
SuperbirdRIP + 1 很给力!
石头 + 100 2精

查看全部评分

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

他们怎么不说把TBW写完了再用
6#
kobe 发表于 2016-3-30 14:46 | 只看该作者
fjzjk1 发表于 2016-3-30 14:13
正好今天看到某贴吧有个叫人家为什么不要买tlc的帖子.......就是暴力写他几十G,用光slc cache看速度 ...

那是无理取闹了,TLC盘原本都是入门级定位,不是设计用来暴力使用的,既然暴力使用何不买高端的适合的盘用呢
SLC Cache这东西并不是邪恶的,对加快TLC写入速度很有帮助,而且也是有用的,毕竟轻负载应用很多时候SSD都是空闲的,完全有时间去慢慢释放缓存
楼主写的乃是有些盘不光用好了SLC Cache的写入加速功能,还顺便用来给测试软件的读取测试作弊,这就不应该的了
7#
小钻风 发表于 2016-3-30 14:56 | 只看该作者
SLC Cache现在是个绕不开的问题,哪家TLC颗粒不用SLC CACHE跑分太差卖不出去的
8#
czq1351 发表于 2016-3-30 15:01 | 只看该作者
学习了,感谢楼主,不知道什么时候能看全
9#
Calvi 发表于 2016-3-30 16:20 | 只看该作者
主旨并不是说SLC Cache不好,只是在解释各个软件跑分的原理以及某品牌跑分作弊的行为
10#
yhhekeda 发表于 2016-3-30 18:13 | 只看该作者
闪迪加强版120g 240g的ncache技术跟slc cache相似,那这俩在as ssd的成绩有水分吗?
11#
neeyuese 发表于 2016-3-30 18:18 | 只看该作者
yhhekeda 发表于 2016-3-30 20:13
闪迪加强版120g 240g的ncache技术跟slc cache相似,那这俩在as ssd的成绩有水分吗? ...

闪迪加强版没有nCache。

12#
batzxcboy 发表于 2016-3-30 19:22 | 只看该作者
跑分很重要的
13#
wgy07 发表于 2016-3-30 19:49 | 只看该作者
跑分就是安慰剂,很有效果
14#
chenkedi 发表于 2016-3-30 20:11 | 只看该作者
为什么要积分高于30才可以浏览
15#
spore 发表于 2016-3-30 20:18 | 只看该作者
请问积分如何快速提升到30以上?

点评

你不是已经38分了?  发表于 2016-4-1 11:11
16#
pio9999 发表于 2016-3-31 01:34 | 只看该作者
学习了,感谢楼主
17#
mao1990 发表于 2016-3-31 07:54 | 只看该作者
为什么AS等SSD测试软件要先测写入后测读取?
18#
Metasploit 发表于 2016-3-31 12:27 | 只看该作者
写的很清楚,TKS~~
19#
夜色迷离 发表于 2016-4-1 11:08 | 只看该作者
积分30,好遥远啊

点评

你都50分了  发表于 2016-4-1 11:11
20#
心有猛虎 发表于 2016-4-2 10:34 | 只看该作者
还没搞清楚怎么才有30积分
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部