云服务器作为新生事物进入家庭使用时间很短,但发展迅速,带来了激烈的价格竞争。这使得用户很难避免陷入套路。有没有办法让你识破这些欺诈呢?下面介绍一个测试方法,让你明白你是否真的捡到了便宜,还是只是被忽悠了。
这个工具就是FIO。FIO是一种用于测试系统IO性能的工具,它提供了一个测试框架,可以支持多线程和多进程的IO性能测试。用户只需进行参数配置,就可以方便地定制不同的IO行为(如顺序读写和随机读写等),并监测其性能。该软件的作者Jens Axboe是Linux内核IO部分的维护者。而GFIO是FIO的图形监测工具,提供了图形界面的参数配置和性能监测图表。下面开始进行测试。
以破蜗壳云服务自带的操作系统CentOS为例:
在命令行界面输入以下命令进行FIO的安装:
```
yum install fio
```
也可以进行编译安装:
```
wget http://brick.kernel.dk/snaps/fio-2.0.7.tar.gz
yum install libaio-devel
make
make install
```
测试项目1:随机读
在CentOS命令行界面输入以下指令:
```
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=32G -numjobs=32 -runtime=10 -group_reporting -name=mytest
```
下面列举了ioengine类型,根据您的需求进行选择:
- 列举的ioengine类型
参数说明:
- filename=/dev/sdb1:测试文件名称,通常选择要测试的盘的数据目录。只能是分区,不能是目录,否则会破坏数据。
- direct=1:测试过程绕过机器自带的缓存,使测试结果更真实。
- iodepth 1:队列深度,只有使用libaio时才有意义。这是一个可以影响IOPS的参数,通常情况下为1。
- rw=randwrite:测试随机写的I/O。
- rw=randrw:测试随机读写的I/O。
- ioengine=psync:使用pync方式作为IO引擎。
- bs=512:每次IO的块文件大小为512字节。
- size=32G:本次测试文件大小为32GB,以每次512字节的IO进行测试。该大小不能超过filename的大小,否则会报错。
- numjobs=128:本次测试使用的线程数为128。
- runtime=1000:测试时间为1000秒,如果不指定,则会一直进行写入4KB的IO,直到测试文件大小达到结束。
- rwmixwrite=30:在混合读写模式下,写操作占30%。
- group_reporting:显示每个进程的信息的汇总结果。
测试项目2:顺序读
```
fio -filename=/dev/sdb -direct=1 -iodepth 32 -thread -rw=read -ioengine=psync -bs=512 -size=32G -numjobs=128 -runtime=10 -group_reporting -name=mytest
```
测试项目3:随机写
```
fio -filename=/dev/sdb -direct=1 -iodepth 32 -thread -rw=randwrite -ioengine=psync -bs=512 -size=32G -numjobs=128 -runtime=10 -group_reporting -name=mytest
```
测试项目4:顺序写
```
fio -filename=/dev/sdb -direct=1 -iodepth 32 -thread -rw=write -ioengine=psync -bs=512 -size=32G -numjobs=128 -runtime=10 -group_reporting -name=mytest
```
测试项目5:混合随机读写
```
fio -filename=/dev/sdb -direct=1 -iodepth 32 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=512 -size=32G -numjobs=128 -runtime=10 -group_reporting -name=mytest -ioscheduler=noop
```
以下是新睿云主机的测试结果:
破蜗壳主机测试结果:
测试的IOPS竟然达到了210,122的数量级,性能非常高,比一些知名云服务器厂商的性能要高得多。