安装:
进入 http://www.iozone.org/ 下载 iozone3_483.tar
然后 执行
tar xvf iozone3_483.tar
cd iozone3_483/src/current/
make linux-AMD64
常用参数
-a 全面测试
-i N 用来选择测试项
i 的 值 :
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=random mix
9=pwrite/Re-pwrite
10=pread/Re-pread
11=pwritev/Re-pwritev
12=preadv/Re-preadv
-r block size 制定一次写入/读出的块大小
-s 制定测试文件的大小
-f filename 制定测试文件的名字,完成后会自动删除
-F file1 file2 .... 多线程下测试的文件名
-g -n 指定测试文件大小范围。-n 后接最小值,-g后 接最大值,如 测试 512M-4G 就是-n 512m -g 4G
-y -q 指定测试块的大小范围
-R 产生execl格式的输出日志
-b 将产生二进制 的execl 的日志文件名
用法
./iozone -a
即可进行全面的自动测试,不过通常需要很长的时间
./iozone -a -i 1
只对 write,rewrite 进行性能测试
./iozone -a -g 1G -i 0 -i 1
对读写进行性能测试,并且最大测试文件为1G
./iozone -a -n 512m -g 4g -i 0 -i 1 -i 5 -f /mnt/iozone -Rb ./iozone.xls
进行全面测试,最小测试文件为512M 直到测试 到 4G,测试 read,write 和 strided read,测试的地方在mnt下。生成excel 的文件
"Writer report"
"4" "8" "16" "32" "64" "128" "256" "512" "1024" "2048" "4096" "8192" "16384"
"524288" 0 0 0 0 261715 372855 377745 378721 382592 377422 385153 370395 379418
"1048576" 0 0 0 0 395612 2923323 2857186 2865643 3141697 3133715 2959244 3162572 3146845
"2097152" 0 0 0 0 392064 2496036 1513667 781707 1155582 853658 1158917 855388 1458378
"4194304" 0 0 0 0 215358 238425 237691 242052 243268 208181 234495 270262 276728
"Re-writer report"
"4" "8" "16" "32" "64" "128" "256" "512" "1024" "2048" "4096" "8192" "16384"
"524288" 0 0 0 0 5249495 5060067 4433543 4794453 4696993 3841244 4577047 4646712 4460848
"1048576" 0 0 0 0 4691786 4854855 4451775 4381463 4204445 4381223 4352020 4197010 4413423
"2097152" 0 0 0 0 2674399 2280092 709104 2051969 784384 2133825 949102 2687305 942398
"4194304" 0 0 0 0 222040 223782 225596 223019 222934 220070 231451 240545 237105
"Reader report"
"4" "8" "16" "32" "64" "128" "256" "512" "1024" "2048" "4096" "8192" "16384"
"524288" 0 0 0 0 12249474 12312711 12799395 12643237 9463504 12817524 12765662 7480744 6761693
"1048576" 0 0 0 0 10154904 10182930 12472205 11955443 12143167 12474257 12342559 8873687 6574062
"2097152" 0 0 0 0 10866124 11026558 9820062 11295842 9784506 10789590 10213421 7730866 6189080
"4194304" 0 0 0 0 11587247 11820935 12423116 11831167 11606581 11375117 11424107 7840113 6465079
"Re-Reader report"
"4" "8" "16" "32" "64" "128" "256" "512" "1024" "2048" "4096" "8192" "16384"
"524288" 0 0 0 0 8894832 12461398 13161750 8967267 12669753 12540421 12590394 6977840 5761162
"1048576" 0 0 0 0 12016559 10547460 9883277 12121413 12203514 10032410 9664638 7869114 6322513
"2097152" 0 0 0 0 10808058 11067514 12072648 11234842 12151770 11379268 10931660 7212828 6462441
"4194304" 0 0 0 0 11336414 11822333 11612135 11817799 11727460 12388184 11370125 7927436 6538866
"Stride read report"
"4" "8" "16" "32" "64" "128" "256" "512" "1024" "2048" "4096" "8192" "16384"
"524288" 0 0 0 0 11209909 11852348 12291582 12374585 12457304 8908742 12379322 8545544 6655018
"1048576" 0 0 0 0 10988501 11640099 12001967 11838400 11924583 9563719 12135461 7589685 6646407
"2097152" 0 0 0 0 10624304 10437173 11204360 11988860 12055225 11112270 11667688 7661529 6580125
"4194304" 0 0 0 0 10518869 11337247 11937339 10757800 11579727 12280596 11979862 8218950 6299843
测试 定义
Writer : 测试 向一个新文件写入的性能。当一个新文件被写入时,不仅仅是那些文件中的数据需要被存储,还包括那些用于定位数据存储在存储介质的具体位置的额外信息。这些额外信息被称作“元数据”。它包括目录信息,所分配的空间和一些与该文件有关但是并非该文件所含数据的其他数据。 拜这些额外信息所赐,write的性能通常会比Re_write的性能低
Re-writer : 测试向一个已存在的文件写入的性能。当一个已存在的文件被写入时,所需工作量较少,因为此时元数据已经存在。Re_write 的性能通常比write 的性能高
Reader: 测试 读一个 已存在的文件的性能
Re-Reader: 测试读一个 最近 读过的文件的性能。Re-Read 性能会高些,因为操作系统通常会缓存 最近 读过的文件数据
Random Read: 测试读一个文件中的随机偏移量的性能。许多因素可能影响这种情况下的系统性能,例如:操作系统缓存的大小,磁盘数量,寻道延迟和其他。
Random Write: 测试写一个文件中的随机偏移量的性能。同样,许多因素可能影响这种情况下的系统性能,例如:操作系统缓存的大小,磁盘数量,寻道延迟和其他。
Random Mix: 测试读写一个文件中的随机偏移量的性能。同样,许多因素可能影响这种情况下的系统性能,例如:操作系统缓存的大小,磁盘数量,寻道延迟和其他。这个测试只有在吞吐量测试模式下才能进行。每个线程/进程运行读或写测试。这种分布式读/写测试是基于round robin 模式的。最好使用多于一个线程/进程执行此测试。
Backwards Read: 测试使用倒序读一个文件的性能。这种读文件方法可能看起来很可笑,事实上,有些应用确实这么干。MSC Nastran是一个使用倒序读文件的应用程序的一个例子。它所读的文件都十分大(大小从G级别到T级别)。尽管许多操作系统使用一些特殊实现来优化顺序读文件的速度,很少有操作系统注意到并增强倒序读文件的性能。
Record Rewrite: 测试写与覆盖写一个文件中的特定块的性能。这个块可能会发生一些很有趣的事。如果这个块足够小(比CPU数据缓存小),测出来的性能将会非常高。如果比CPU数据缓存大而比TLB小,测出来的是另一个阶段的性能。如果比此二者都大,但比操作系统缓存小,得到的性能又是一个阶段。若大到超过操作系统缓存,又是另一番结果。
Strided read: 测试跳跃读一个文件的性能。举例如下:在0偏移量处读4KB,然后间隔200Kb,读4KB,再间隔200KB,如此反复。此时的模式是读4KB,间隔200KB并重复这个模式。这又是一个典型的应用行为,文件使用了数据结构并且访问 这个数据结构 的特定区域 的应用程序常常这样做
以上 是 测试的 结果 , 最左侧一列是测试文件的大小(kb); 最上的横行,是记录大小; 中间 的 是 传输 速率
如 "Writer report"
382592 表示 测试文件 为 500M, 以记录大小为 1M 来进行传输,它的传输速度为 382592 KB/S
参考资源
https://www.cnblogs.com/ykhyq/p/9627843.html
https://baike.baidu.com/item/iozone