本帖最后由 wujunjie 于 2015-6-23 13:45 编辑
看到几个帖子反映测试CT通过SATA挂载硬盘的速度非常慢。现在我做的东西对IO有一定要求,所以比较头疼这个问题,就自己动手做了一套测试。
测试环境
lubuntu14.04
某国产SSD,文件系统是ext4
ASUS RT-N16千兆路由
每次测试使用以下命令清空缓存,是否清空对成绩影响非常大。
sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
首先是网络测试,通过iperf进行测试确认了其他网友单线程500Mb左右,多线程7XXMb的速度。然后通过filezilla下载1G的文件观察实际速度,结果总共使用了25秒,也就是大致40M左右。但是因为测试机使用的老式HDD,这个速度基本也接近写入瓶颈了。(SSD的台式机换装MacOS的时候没留意有线网络部分异常,暂时无法进行测试,如果搞定的话再来补充数据)
之前这个SSD在windows下通过挂载USB3.0硬盘盒以NTFS文件系统测试的结果是2XXM(具体有点记不清了)
所以我又重新测试了SSD的IO性能。
然后我在SSD的目录下执行以下命令dd if=/sata/1000M.img of=/dev/null bs=64k
得到的都是130M左右的速度。如果不清除缓存那会得到3XXM的异常数据。
但这个数字与windows下的测试仍然有很大差距。
接着又参考这个连接中的命令http://cubie.cc/forum.php?mod=vi ... &highlight=CT%2BSSD
使用以下命令重做测试
dd if=/sata/1000M.img bs=64k |dd of=/dev/null
得到的结果是33.9M,不清除缓存是43.2M
那么问题就来了,这个速度于明显低于我的网络测试结论。FTP服务有额外开销的关系,传输速度只会比单纯的磁盘读写更慢,显然这个数字是不符可网络部分测试结论的,所以使用dd进行IO测试时如何才能得到符合实际情况的结论是个问题。
对比这两条命令
dd if=/sata/1000M.img of=/dev/null bs=64k
dd if=/sata/1000M.img bs=64k |dd of=/dev/null
似乎只是相同参数的不同写法,查看dd的help并没有很好的线索。但鉴于dd不同参数得到的结论会差距很大,其作为基准测试工具的时候需要留意这个问题。
以下为archlinux给出的参考测试方法https://wiki.archlinux.org/index.php/SSD_Benchmarking
# echo 3 > /proc/sys/vm/drop_caches
$ dd if=tempfile of=/dev/null bs=1M count=1024
顺便提一下,该页面得到的M4的测试数据与我在台式机上的测试数据基本相同(测试环境是SATA3、Windows、NTFS),所以这个方法得到的结论应该是正确的。
使用bs=1M count=1024参数再次测试CT挂载的SSD得到的结果是122M。
|