看到论坛里很多SSD测评的文章里都有以下两项, QD深度对随机4KB/8KB/16KB/32KB/64KB/128KB/256KB/1MB读写造成的影响,
以及
离散分布测试(IOMETER测试大约5000秒)
自己也尝试了一下这两项测试,发现有几个问题无法理解
1. 对于QD深度对速度影响的测试,很多图片里标注的测试工具是IOmeter, 但是IOmeter编辑测试脚本(Specifications)里面并没有QD的选项,只有在测试开始的时候Disk Targets选项卡里面设置OutStanding改变QD深度。目前我想到的方法就是编写一系列4KB/8KB/16KB/32KB/64KB/128KB/256KB/1MB读写的任务,每个任务运行100秒,手工设置QD深度为1,跑一遍; 再把OutStanding改成2,跑一边....一直到跑完QD32后从result.csv里取数据。
但这样有两个问题,a> 这样测试没办法自动化,还是有很多要手工改的地方,很麻烦 b> 从一次测试跑完到手工改变QD深度再开始下一轮测试这个过程之间的的时间是没办法精确控制的,有可能因为这段空闲时间SSD的GC引起测试结果的误差
2. 对于QD深度对速度影响的测试, workers(或者fio里的numjobs)该设成几个呢? 我只在 @neeyuese 早年一篇测评里看到iometer的worker设为一个工作的,但这样fio或者iometer只能使用一个CPU。对于很多高端SSD(IOPS几十万的PCIE企业级SSD),当QD16的时候cpu单核就100%满了,这时候测到的QD32的性能受限于CPU的瓶颈不能真实反应SSD的实际性能,提高workers的数量可以压榨出SSD的全部性能,但当多个worker时,比如4worker 8QD,这时候实际的写入压力已经不是8QD了。
所以,如果用一个worker在高QD深度的时候CPU成为瓶颈无法测出SSD真实性能,多个Worker测试低QD深度数据又不准,所以想请教一下这个QD深度对速度影响的测试图形一般是怎么测出的。
3. 离散分布测试的图像很漂亮,不知道是怎么做出的。目前我的方法是通过fio或iometer持续压力测试,然后将 iostat -dx 10 的结果导入到一个文件里,在去处理这个文件里的数据导入excel画图,想问一下还有更好的办法吗?
4. 对于离散分布测试, 同样也有这样的问题,workers(或者fio里的numjobs)该设成几个呢? 一个压不满性能,多个的话真实QD已经不是32了。同时,我发现numjobs数对结果的影响也很大,将numjobs分别设为4和16,对于同一个SSD,开始的时候写入IOPS都能到250k, 但当进入稳态后4并发的只有40k左右IOPS,16并发的有60IOPS
5. IOmeter和fio近似参数结果差距比较大,对于DC S3700 200G,在i5-3470上, IOmeter 4k QD1 全盘LBA随机写接近60M/s, fio 4k QD1 direct=1 全盘LBA随机写只有37M/s,相同的参数差别为什么这么大呢?
6. 在Intel 730的测试里看到了SNIA标准的测试。关于snia测试确实没有查到太多资料,只在一篇SSD固态硬盘2012终极横评及选购指南的文章里看到具体预训练的步骤,请问iometer这边有现成的公开脚本吗?自己测试的话又如何判定其进入稳态?
问题一时有点多,多谢你能读到这里
|