如何使用iozone来统计和对比操作系统底层IO性能差异

2019-02-20  本文已影响3人  缘觉如来

iozone是什么

官网链接:http://iozone.org/ 。官网说明了IOzone是一个文件系统基准测试工具。该测试套可以测量各种不同的文件操作,测试出不同读写操作模式下的吞吐量。

可以测试哪些读写模式?

执行测试

下载源码

地址:http://www.iozone.org/src/current/iozone3_487.tar

解压编译

tar -xvf iozone3_487.tar
cd iozone3_487/src/current
make linux

运行测试

#!/bin/bash

memtotal=`grep MemTotal /proc/meminfo |awk '{print $2}'`
maxsize=$[$memtotal+$memtotal]
for i in $(seq 1 5 )
do
./iozone -a -g $maxsize -Rb iozone$i.xls > iozone$i.output
sleep 120
done

上面的脚本会执行五次iozone的自动模式测试,测试的最大文件为系统内存的两倍大小。测试结果分别保存在文件iozone.xls 和 iozone.output中。

测试结果分析

上面提到过,运行的脚本会收集测试数据到两个文件:一个是表格文件,一个是文本文件。

表格文件示例

在Deepin 桌面操作系统上,可以直接使用wps-office打开,可以看到生成的表格数据很详细,见下图:


a.png

列是文件大小,横是record的大小,中间的值是速度。表格文件可以直接使用各种office软件打开,各位看管做图能力非常强的,直接拿着这个原始数据就可以用了,也省的来回转换数据格式了。

文本文件用法一

文本文件可以使用流行的画图工具gnuplot进行作图,使用方法很简单,iozone测试套中src目录已经自带了画图的脚本,唯一要求的是系统安装gunplot软件。

sudo apt-get install gnuplot 

在iozone的源码目,运行下面的脚本,文本文件作为参数输入:

./Generate_Graphs iozone1.output  

画图效果如下:


b.png

从这个速度的走势图暂时可以看出write的性能表现有两个波峰,分别是cache和buffer的数据。随着测试文件size变大,文件操作就变成了磁盘的操作,吞吐量就会下降的非常快。

上面的只是画出了write的数据走势图,在运行该脚本的窗口直接enter会继续画剩余的各项操作的走势图,录制出动画,让大家感受下。


c.gif

文本文件用法二

使用生成的文本文件和自带的画图脚本,除了可以画出眼花缭绕的走势图之外,好像还没有完全发挥它的最大功效。比如,我想对比两个版本之间数据的差异,去准确地检查相关的性能数据是提升还是下降了,那这个自带的脚本是做不到这一点的。

github.com上查到有现成的工具可以使用,见github:https://github.com/Rovanion/iozone-results-comparator。 使用方法直接参考readme文件即可。

它需要两组或更多组Iozone结果作为输入,脚本工具会使用各种统计方法对它们进行比较。主输出是一个包含表格和图表的HTML页面。还可以生成用于进一步处理的csv数据文件。

我们使用iozone处理性能测试。需求是比较不同版本上的iozone结果。但是事实证明这是一项复杂的任务。要正确地比较数据

该工具使用步骤:

使用该工具之前,我们已经收集了两个系统的iozone的性能数据,每一系统上分别跑了5轮iozone的数据,分别为iozone1.output iozone2.output iozone3.output iozone4.output iozone5.output 文件。

下载

git clone https://github.com/Rovanion/iozone-results-comparator.git 

安装依赖

sudo apt-get install python-scipy python-matplotlib python-pip 
pip install https://github.com/pallets/jinja/zipball/master

复制两个版本的性能数据到目录examples/。两个目录分别命名为basline和target
修改脚本run.sh如下:

BASELINE=$(find ./baseline -name "*.output" | sort)
SET1=$(find ./target -name "*.output" | sort)

运行脚本run.sh

deepin@deepin-PC:~/Documents/iozone-results-comparator/examples$ ./run.sh 
Processing...
Finished
To view results open in your web browser:
file:///home/deepin/Documents/iozone-results-comparator/examples/html_out/index.html

直接打开生成的index.html页面文件,可以很直观的查看到baseline和target的性能差异。工具iozone-results-comparator会对测试数据集进行各种不同的数学运算,如四分位数运算、平均数、几何平均数、区间估计运算等多维度运算,得出多种对比结果,再针对数学运算的出来的结果进行比较。

下面是使用该工具对Deepin15.5 和Deepin15.5 SP2的结果对比图。把Deepin15.5 的数据当做是基线版本,查看Deepin15.5 SP2上的性能数据是否优于基线版本。为了让人一睹该工具统计出的结果真容,我录了一个屏展示一下。

d.gif

从上面结果可以看出,target的IO性能数据要整体好于baseline的数据。target系统的内核版本是Linux deepin-PC 4.15.0-30deepin-generic 。而baseline的内核版本是Linux deepin-PC 4.9.0-deepin9-amd64 。

总结

Iozone是测试文件系统各项指标很好的工具,适合IO性能调优的时候使用,把iozone,Generate_Graphs和iozone-results-comparator结合起来使用,才应该是一个完整的操作。

上一篇下一篇

猜你喜欢

热点阅读