SSD新范式 |数据中心SSD测试 之Windows篇(二)

上一期,大家对SSD测试的基本参数已经熟悉。这一期,我们将详细讲解IOmeter的设置,以及一些稍微高级的测试设计技巧。

IOmeter初上手

对于IOmeter,线程×队列的设置就不是那么直观。IOmeter的线程是通过选择Worker的数量实现的,每个Worker对应一个处理器内核。

在某个Worker内,可以选择测试对象、测试对象等。“Disk Targets”标签可以选择测试的目标,右侧偏中间的“#of Outstanding I/O”,那就是相当于队列数。Worker的数量乘以IO数,就是总的队列深度。做顺序读/写的测试时,我们可以只用一个Worker,IO可以设为32。

在“Disk Targets”标签中,还有一些相对高级的设置。譬如最下方的“Write IO Data Pattern”,设置的是用于填充数据包的类型,默认是“Repeating bytes”,顾名思义就是重复的字节,这样比较省资源,但可能会由于数据压缩等因素导致成绩被干扰。我们一般是建议选择第二项“Pseudo random”,伪随机数。

上方有关“Sectors”(扇区)的内容,可以指定当前测试线程涉及的最大容量、起始扇区等。嗯,是不是想起前面我曾经提到过的“让不同线程写入不同的区域”?这是服务器应用中的基本调优技能,专业的测试软件,如IOmeter、FIO都会有这样的功能来对应这些使用需求。

具体的测试项目,可以在“Access Specifications”标签中找到。右侧是预设好的一些项目,把需要的项目添加到中间的任务框中就可以。

由于自带的项目中没有128KB的数据包,我们可以自行添加一个顺序读的操作,也可以在256KB项目的基础上进行修改,数据包大小填128KB,右边的读写比例拉到读。然后,把这个项目添加到任务栏中。

类似的,我们可以再做一个顺序写的操作,也加到任务栏。相同的项目是可以重复添加的,如果想测五遍,那就各加5个项目就好了,很简单直白。

添加了测试项目后,建议到“Test Setup”标签中设置一下测试时间之类的,譬如10分钟,或者更长的时间。如果时间设置均为“0”,那就是不间断地测试,直到手动停止。在Setup中还有高级一点的设置技巧:让队列逐次增加,1、2、4……16、32。这个设置在下方,按照我截图所示选择对应的项目就可以。通过这个高级一点儿的设置可以更直观地看到随着队列增加,SSD吞吐量会逐步提升。

完成设置后,点上方的绿色的旗帜就可以开始测试。测试结果会实时显示,还可以点界面右侧的箭头(>)把仪表盘调出来。

这组测试结束时,我们可以得到了QD32、128KB顺序读写的测试成绩。

做随机读写的测试时,IOmeter有包括4KB数据包在内的丰富的预设项,也包括混合读写的项目。任务栏中,可以分别加入4KB读、4KB写、4KB混合读写等项目,混合读写的比例也可以根据目标SSD的特点选择或者稍做修改,譬如预设有50:50、75:25,可以调成70:30、90:10等。混合读写的意义,稍晚些专门讲一下。我们先把随机读写的重要设置讲透一些。

其一,预设的4KB随机读写有两类选择,“0% random”或“100% random”。对应的设置在前面“Edit Access Specification”的截图中可以看到,在左下方的部分。选择“0% random”,更适合体现SSD处理能力的“上限”;选择“100% random”,更适合体现实际应用中面临的“下限”,代表了一种极度混乱的状态。有理想的架构师、运维人员们都在努力减少后一种状态的出现,尽量将随机操作向前一种状态优化。

其二是队列的设置。由于随机读写需要较大的队列数,我们建议启用8个甚至16个Worker,再搭配32的IO,那就可以实现256甚至512的队列深度了。需要注意检查每个Worker下的任务顺序是一致的,确保每个阶段各个Worker跑的是同样的项目。

Setup中的时间依旧按需设置。至于逐次增加队列的高级技巧也可以用上,搭配8个Worker,我们就可以睡等自动输出8、16、32……128、256队列深度的4KB随机读写成绩。

可能会有个别特别“秀”的高徒想问:能不能让Worker也自动递增?1、2、4、8,再搭配IO的递增,那画面不要太美……原则上是可以的,通过把Idle项加到任务列表前面,就可以让指定的若干Worker暂时不参与测试。至于每个Worker轮空多少次,就看Idle的多寡了——讲真,这一招只适合骨骼清奇的天才,为师我一定是有什么大病,才会想到教IOmeter初学者这么残暴的招式。我真有这么闲,去高速公路当ETC不香吗?

小结

看到这里,大家已经可以用IOmeter进行基本测试,甚至还掌握了一些稍微高级的测试设计技巧。但是,必须强调的是:这些操作对于消费类SSD已经足够了,但是,对于数据中心SSD还是不够的。

数据中心SSD的工作负荷很大,用随机写的“万秒图”并不能真正呈现其特点,甚至测试数据并不一定可靠(譬如与原厂的标称数值差异过大),不能真正体现实际应用的价值。在下一章节,我们会着重讲讲,为什么数据中心SSD的性能必须是可预期的,我们应该如何获得“可信的数据”。