首页 » 网站建设 »

测试云服务器的硬盘IO速度

2019年8月28日 / 2次阅读
云服务器

使用云服务器有几年的时间了,期间购买过很多不同种类的服务器,一直在关注服务器的一个参数,就是硬盘读写速度。我在阿里云最早使用的是非IO优化的硬盘,后面这种类型的服务器没有了,全是高速硬盘,想再高就是SSD硬盘。Godaddy的VPS,貌似全是SSD硬盘。最近学习到一种方法,可以不精确的测试硬盘的IO读写速度,有点意思,特此分享。

可以使用dd命令来测试硬盘的IO读写速度。这种测试方法不准确,但是得到的大概的数据依然有参考价值,dd命令几乎存在于所有的Linux发行版本,因此用它来测试也很方便快捷。

dd命令的作用,就是指定输入和输出,指定读写区块大小,指定区块的个数,然后进行读写操作。这个命令在执行结束后,会给出一个每秒copy了多少数据的参数,这个参数就是我们的测试结果。

测试硬盘写的速度

$ dd if=/dev/zero of=testfile bs=4K count=10000 oflag=direct
10000+0 records in
10000+0 records out
40960000 bytes (41 MB, 39 MiB) copied, 1.36134 s, 30.1 MB/s

伪设备/dev/zero拷贝数据并写入testfile,每次copy 4K,一共连续执行10000次(连续IO),oflag=direct指定了直接IO的方式(默认是写入系统缓存),最后的结果是平均每秒可写30MB数据。

注意if=/dev/zero,这是个伪设备,读取这个设备不会产生读真实硬盘的操作,因此以上命令基本上就全部是在写硬盘。

测试硬盘读的速度

$ dd if=testfile of=/dev/null bs=4K count=10000 iflag=direct
10000+0 records in
10000+0 records out
40960000 bytes (41 MB, 39 MiB) copied, 1.01615 s, 40.3 MB/s

基本上就是将测试写的命令反过来,从testfile(测试硬盘写速度时生成的文件)读取,每次4K,然后连续写入伪设备/dev/null(黑洞设备),10000次,iflag=direct指定直接IO,最后得到结果是平均每秒40MB的读取速度。

同样的道理,写入/dev/null,不会产生真正的硬盘写动作。

如何使用dd的测试结果?

我自己在测试的时候发现,如果将bs参数调大,得到的结果也会增大,而且增大的比例几乎一样。

因此,用dd命令的测试结果,不是准确的硬盘IO速度,但是作为横向比较是OK的。比如保持bs=4K,count=10000这两个参数不变,分别在不同的服务器上测试,大概就能发现那些服务器的硬盘要快,那些要慢,而且快慢的差距心里也会有点数。

云上小悟的硬盘IO速度(阿里云非IO优化硬盘):

xinlin@iZ239r252v4Z:~$ dd if=/dev/zero of=testfile bs=4K count=10000 oflag=direct
10000+0 records in
10000+0 records out
40960000 bytes (41 MB, 39 MiB) copied, 10.003 s, 4.1 MB/s
xinlin@iZ239r252v4Z:~$ dd if=testfile of=/dev/null bs=4K count=10000 iflag=direct
10000+0 records in
10000+0 records out
40960000 bytes (41 MB, 39 MiB) copied, 14.6019 s, 2.8 MB/s (读取尽然比写入还慢...)

Python笔记的硬盘IO速度(Godaddy的SSD硬盘):

[xinlin@s148-72-212-244 ~]$ dd if=/dev/zero of=testfile bs=4K count=10000 oflag=direct
10000+0 records in
10000+0 records out
40960000 bytes (41 MB) copied, 1.20173 s, 34.1 MB/s
[xinlin@s148-72-212-244 ~]$ dd if=testfile of=/dev/null bs=4K count=10000 iflag=direct
10000+0 records in
10000+0 records out
40960000 bytes (41 MB) copied, 1.03429 s, 39.6 MB/s

一台硅云香港服务器:

-bash-4.2$ dd if=/dev/zero of=testfile bs=4K count=10000 oflag=direct
10000+0 records in
10000+0 records out
40960000 bytes (41 MB) copied, 6.64809 s, 6.2 MB/s
-bash-4.2$ dd if=testfile of=/dev/null bs=4K count=10000 iflag=direct
10000+0 records in
10000+0 records out
40960000 bytes (41 MB) copied, 6.59073 s, 6.2 MB/s

看起来Godaddy的服务器硬盘IO速度完胜!

本文链接:https://www.maixj.net/wz/yingpan-io-22754

相关文章

留言区


前一篇:

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top