当我们做磁盘读写性能测试的时候,性能测试工具必不可少。
目前市场上有很多可以做性能测试的工具,本文介绍一款可以在优麒麟系统上使用的性能测试工具:iozone。
性能测试主要是通过自动化测试工具模拟多种使用场景(正常情况、高负载,高容量等),从而实现对系统的各项性能指标进行测试。系统性能测试主要包括网络性能测试(iperf、TamoSoft Throughput Test 等)、内存性能基准测试(memtaster、unixbench 等)、硬盘读写功能性能测试(iozone、fio 等)以及系统反应时间性能测试(lmbench)等。
iozone 是一款用于测试文件系统的读写性能的开源工具,可以测试读取(read)、写入(write)、重读(re-read)、重写(re-write)、倒序读(read backwards)、调用库函数 fwrite 写(fwrite) ,调用库函数 fread 读(fread)、跳跃读(read strided)、随机读(random read) 、 随机写(random write)等等不同的模式下的硬盘的性能。下面介绍 iozone 的下载、安装及使用情况。
1、下载安装包
首先下载 iozone 的安装包,可以直接使用浏览器下载或者在终端使用 wget 命令下载 iozone 的 tar 包。其下载网址为:http://www.iozone.org/src/current/
终端下载命令:
wget http://www.iozone.org/src/current/iozone3_491.tar
图1:下载 iozone 的 tar 包
2、解压
其次使用 tar 命令将下载的 iozone 的 tar 包解压至相应的路径下,例如将其 iozone 的 tar 包解压至“/opt”下。解压命令及解压情况如图2所示。
解压 iozone 的 tar 包至“/opt”目录下的命令:
sudo tar -xvf iozone3_491.tar -C /opt/
图2:解压iozone的tar包
3、编译
然后将其目录切换至 iozone 解压后的“/src/current”下使用 make 命令进行编译,与手工编译、连接相比,make 编译在一定程度上实现了自动化编译,它只会更新修改过的文件,对于没有修改过的文件不会重新生成,并且不会漏掉任何一个需要更新的文件,从而提高编译效率。iozone 的 make 编译命令如图3所示。
切换至“/src/current”目录下命令:
cd /opt/iozone3_491/src/current/
iozone 的 make 编译命令:
make linux
图3:iozone 的 make 编译
4、测试
根据测试文件大小的不同,iozone 磁盘读写性能的测试方法主要包括1倍内存测试和2倍内存测试。其中,1倍内存测试和2倍内存测试分别如图4和图5所示。
iozone 的1倍内存测试命令:
sudo ./iozone -s 8G -r 16M -i 0 -i 1 -i 2 -f /mnt/iozone -Rb /home/result/result.xls
图4:iozone 的1倍内存测试
iozone 的2倍内存测试命令:
sudo ./iozone -s 16G -r 16M -i 0 -i 1 -i 2 -f /mnt/iozone -Rb /home/result/result1.xls
图5:iozone 的2倍内存测试
关于 iozone 测试命令中的各参数的具体含义如下所示:
①-s:表示指定测试文件的大小(file size)
②-r:表示一次写入/读出的块大小即记录块的大小(block size)
③-i:表示指定运行的测试模式,共包括12种测试模式(0:write/rewrite,1:read/re-read,2:random-read/write,3:read-backwards,4:re-write-record,5:stride-read,6:fwrite/re-fwrite,7:fread/Re-fread,8:randommix,9:pwrite/Re-pwrite,10:pread/Re-pread,11:pwritev/Re-pwritev,12=preadv/Re-preadv),其中比较常用的为0,1,2,分别表示 write,read,random
④-f:表示指定测试文件的名称,当测试结束后,会将其进行删除
⑤-R:表示产生 Excel 的输出日志
⑥-b:表示将输出结果输入到指定的相应的文件上,例如上面结果输入到/home/result 路径下的 result1.xls 文件下
5、统计
为了更加直观的统计出系统磁盘读写的性能情况,通常情况下,我们将其测试结果保存为 Excel 表格形式,如下图6所示。
6:iozone 的2倍内存测试结果
还有一个我们需要注意的点,在使用 iozone 对系统磁盘读写性能进行测试时,测试文件的大小一般设置为大于或者等于内存的两倍,最佳设置为内存的两倍大小。
如果将测试文件的大小设置为小于内存的大小,Linux 系统可能将读写的内容进行缓存,从而使 iozone 磁盘读写测试结果非常不准确。