iozone

一个文件系统性能评测工具,可以测试Read, write, re-read,re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read, aio_write 等不同模式下不同文件系统的读写性能

官网: http://www.iozone.org

参数

参数 说明
-a 全自动模式测试。测试记录块大小从4k到16M,测试文件从64k到512M
-A 使用自动模式虽然测试比较全面,但是比较花时间。-a选项将在文件大于32MB时停止使用低于64k一下记录块,来节省时间。-A通知iozone不要节省时间,进行所有测试。注:在3.61版本以后不建议使用,用-az代替-aA
-B 使用mmap()。这将使用mmap()接口来创建并访问所有测试用的临时文件。一些应用程序倾向于将文件当作内存的一块来看待。这些应用程序对文件执行mmap()调用,然后就可以以读写内存的方式访问那个块来完成文件I/O。
-c 计算时间将close()包括进来
-C 显示吞吐量测试中每个客户端的字节数。
-D 对mmap文件使用MSYNC(MS_ASYNC)。告诉操作系统在mmap空间的所有数据需要被异步的写到磁盘上。
-e 测试时间是包含flush(fsync, fflush)
-f filename 指定用来测试临时文件,在测试完成后将被自动删除
-F filename filename … 指定测试中每个临时文件名,文件名的数量应该和指定的进程或线程数相同
-g # 在自动模式下设置文件最大值,可以使用#k #m #g分别表示kb,mb,gb
-G 对mmap文件使用msync(MS_SYNC)。告诉操作系统在mmap空间的所有数据需要被同步的写到磁盘上
-h 显示帮助
-i # 指定运行于哪种模式测试。可以使用-i # -i # -i #进行多个测试
  0=write/rewrite
  1=read/re-read
  2=random read/random write
  3=backwards read
  4=re-write-record
  5=stride-read
  6=fwirte/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
-I 对所有文件操作使用DIRECT I/O。通知文件系统所有操作跳过缓存直接在磁盘上操作
-j # 设置访问文件的跨度为(# * 块)。stride read测试将使用这个跨度来读块
-J #(毫秒) 在每个I/O操作之前产生指定毫秒的计算延迟。看-X和-Y获取控制计算延迟的其他参数
-l # 设置程序最小进程数。在测试过程允许用户设置的最小进程或线程数。需要配合-u选项使用。
-L # 设置处理器交换信息的单位量为#(bytes)。可以加速测试。
-m iozone将在内部使用多个缓存。一些程序反复复写一块缓存,还有就是设置多个缓存块。此参数将允许使用这两种模式。iozone默认行为是重复使用内部一个缓存。此选项将允许在内部使用多个缓存块。
-M 调用uname(),将返回字符串放在输出文件中
-n # 设置自动模式下测试文件的最小值
-N 报告结果以毫秒每操作的方式显示
-o 写方式是同步写到磁盘上
-O 报告结果以操作每秒方式显示
-q # 在自动模式下设置记录块的最大值,可以使用#k(kb),#m(mb),#g(gb)。使用-y可以设置最小值
-r # 设置记录块大小为#
-R 使用Excel显示结果
-s # 设置测试文件大小
-S # 设置处理器的缓存大小
-t # 设置测试程序的线程或进程数
-T 使用POSIX的pthreads进行测试
-u # 设置最大进程或线程数,需要配合-l参数使用
-U mountpoint 在测试开始之前,iozone将unmount和remount挂载点。这将保证测试中缓存不包含任何文件
-w 在测试结束后不要删除临时文件。临时文件将在测试过后保存下来
-W 在测试过程中,当读或写文件时锁住文件
-y # 设置记录块最小值
-z 同-a一起使用,进行全部测试
-Z 允许mmap I/O和file I/O混合使用

实例

1
sudo iozone -ac -s 8m   -f /home/testfile -y 2k -q 8m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 Kbytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
random random bkwd record stride
KB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
8192 2 189862 415349 1181932 1608842 1018766 374677 1329412 398615 665257 405521 367288 1569381 1528607
8192 4 237746 686099 1981095 2178140 1788563 536369 1336133 765253 1662395 391698 586565 1920739 2217786
8192 8 312623 871304 1620222 1851298 2215927 607182 2392438 979445 1817225 853513 873808 2615731 2264859
8192 16 280834 625953 2536184 2567262 2224823 1134478 2546334 1416090 2339815 938923 890545 2510611 2251797
8192 32 395003 1122984 1941688 1715601 1975400 721755 2480882 1573550 1757908 940543 1122654 2917577 2592443
8192 64 270175 1053372 2642689 2850293 2632364 1407332 2715153 1819245 2919312 1094161 1165811 1840095 1886259
8192 128 275769 1149623 2585809 2727871 2409382 1451995 2636606 1789028 2325877 1041968 1090826 2615731 1923858
8192 256 291167 1144454 2486987 2536184 2369668 1446067 2202151 1263978 2343965 1137144 1136994 2354728 2517417
8192 512 349935 1193800 2327295 2420755 2422804 1362140 1923427 1698135 2658845 1083329 1143007 1855096 1833907
8192 1024 333752 1308403 2522962 2538433 2496020 1461568 2443132 1573550 2954201 901409 1139520 1943115 2304969
8192 2048 276766 1110176 2367709 2430860 2420755 1338162 1757548 1406583 1580571 805492 1024660 2241221 2357313
8192 4096 592891 1179538 2268747 2339337 2063424 1196419 1890618 1383531 1853795 204928 1006737 1808425 1798486
8192 8192 328823 1199761 2394606 2408707 2175244 1265747 2327926 1293333 2159657 1222513 1181607 2380009 2428798

结果: 左边第一列是测试文件大小,第二列是记录块大小(单位是kb),以后每列就是测试模式(单位是kb/s)

测试项

测试项 说明
Write 测试向一个新文件写入的性能。当一个新文件被写入时,不仅仅是那些文件中的数据需要被存储,还包括那些用于定位数据存储在存储介质的具体位置的额外信息。这些额外信息被称作“元数据”。它包括目录信息,所分配的空间和一些与该文件有关但又并非该文件所含数据的其他数据。拜这些额外信息所赐,Write的性能通常会比Re-write的性能低。
Re-write 测试向一个已存在的文件写入的性能。当一个已存在的文件被写入时,所需工作量较少,因为此时元数据已经存在。Re-write的性能通常比Write的性能高。
Read 测试读一个已存在的文件的性能。
Re-Read 测试读一个最近读过的文件的性能。Re-Read性能会高些,因为操作系统通常会缓存最近读过的文件数据。这个缓存可以被用于读以提高性能。
Random Read 测试读一个文件中的随机偏移量的性能。许多因素可能影响这种情况下的系统性能,例如:操作系统缓存的大小,磁盘数量,寻道延迟和其他。
Random Write 测试写一个文件中的随机偏移量的性能。同样,许多因素可能影响这种情况下的系统性能,例如:操作系统缓存的大小,磁盘数量,寻道延迟和其他。
Random Mix 测试读写一个文件中的随机偏移量的性能。同样,许多因素可能影响这种情况下的系统性能,例如:操作系统缓存的大小,磁盘数量,寻道延迟和其他。这个测试只有在吞吐量测试模式下才能进行。每个线程/进程运行读或写测试。这种分布式读/写测试是基于round robin 模式的。最好使用多于一个线程/进程执行此测试。
Backwards Read 测试使用倒序读一个文件的性能。这种读文件方法可能看起来很可笑,事实上,有些应用确实这么干。MSC Nastran是一个使用倒序读文件的应用程序的一个例子。它所读的文件都十分大(大小从G级别到T级别)。尽管许多操作系统使用一些特殊实现来优化顺序读文件的速度,很少有操作系统注意到并增强倒序读文件的性能。
Record Rewrite 测试写与覆盖写一个文件中的特定块的性能。这个块可能会发生一些很有趣的事。如果这个块足够小(比CPU数据缓存小),测出来的性能将会非常高。如果比CPU数据缓存大而比TLB小,测出来的是另一个阶段的性能。如果比此二者都大,但比操作系统缓存小,得到的性能又是一个阶段。若大到超过操作系统缓存,又是另一番结果。
Strided Read 测试跳跃读一个文件的性能。举例如下:在0偏移量处读4Kbytes,然后间隔200Kbytes,读4Kbytes,再间隔200Kbytes,如此反复。此时的模式是读4Kbytes,间隔200Kbytes并重复这个模式。这又是一个典型的应用行为,文件中使用了数据结构并且访问这个数据结构的特定区域的应用程序常常这样做。许多操作系统并没注意到这种行为或者针对这种类型的访问做一些优化。同样,这种访问行为也可能导致一些有趣的性能异常。一个例子是在一个数据片化的文件系统里,应用程序的跳跃导致某一个特定的磁盘成为性能瓶颈。
Fwrite 测试调用库函数fwrite()来写文件的性能。这是一个执行缓存与阻塞写操作的库例程。缓存在用户空间之内。如果一个应用程序想要写很小的传输块,fwrite()函数中的缓存与阻塞I/O功能能通过减少实际操作系统调用并在操作系统调用时增加传输块的大小来增强应用程序的性能。这个测试是写一个新文件,所以元数据的写入也是要的。
Frewrite 测试调用库函数fwrite()来写文件的性能。这是一个执行缓存与阻塞写操作的库例程。缓存在用户空间之内。如果一个应用程序想要写很小的传输块,fwrite()函数中的缓存与阻塞I/O功能能通过减少实际操作系统调用并在操作系统调用时增加传输块的大小来增强应用程序的性能。

导出Excel表格

1
iozone -i 0 -i 1 -s 8m   -f /testfile -y 2k -q 8m -Rab /iozone_test.xls

在嵌入式开发板上导出表格数据全为0,无法使用

测试

1
./iozone -s 100M -ac -S 512k 2>&1 | tee test.log
 

文件系统性能测试--iozone的更多相关文章

  1. Linux服务器iops性能测试-iozone

    1. 选用工具: iozone           下载地址:http://www.iozone.org/ (直接下载rpm包) 2. 工具安装: 执行命令: rpm -ivh iozone-3-40 ...

  2. benchmarks (主要用于分布式文件系统性能测试)

    最近进行学习过程中,遇到一些可以用得上的benchmark,在这里进行简要记录:之后估计会用到 TensorFlow benchmarks https://github.com/tensorflow/ ...

  3. iozone - a filesystem benchmark tool 主要是用来测试文件系统 性能

    简介:    磁盘设备之上是文件系统,测试磁盘的工具往往就是调用块设备驱动的接口进行读写测试.而文件系统的测试软件就是针对文件系统层提供的功能进行测试,包括文件的打开关闭速度以及顺序读写随机位置读写的 ...

  4. Linux日志文件系统(EXT4、XFS、JFS)及性能分析

    Ext4 ReiserFS Btrfs 等七种文件系统性能比拼 自上一篇<Ext2 v.s. Ext3 v.s. Ext4 性能比拼> 发布以来,社会各界纷纷来电来函,给出了“Ext4 我 ...

  5. 13款Linux运维比较实用的工具

    本文介绍几款Linux运维比较实用的工具,希望对Linux管理员有所帮助. 1.查看进程占用带宽情况-Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽. ...

  6. 13 款高逼格且实用的 Linux 运维必备工具

    转载于民工哥技术之路 1. 查看进程占用带宽情况 - Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽. 下载:http://sourceforge.ne ...

  7. Ext4 ReiserFS Btrfs 等7种文件系统性能比拼

    2009年02月04日     为了满足广大群众的热切需求,今天做了 Ext2.Ext3.Ext4.XFS.JFS.ReiserFS 和 Btrfs 的全面性能测试,对比结果如下:     本次测试所 ...

  8. Linux文件系统测试工具

    一.文件系统测试工具简介 1.LTP 参考网站:http://oss.sgi.com/projects/ltp/ LTP(Linux Test Project)是由SGI和IBM联合发起的项目,提供一 ...

  9. IO测试工具 - 用于IO测试 ; linux benchmarks

    IO测试工具,用于磁盘IO测试,下面进行使用列表进行记录: iozone fio dd ioping iotop iostat bonnie++ crystalDisk Atto as-ssd-ben ...

随机推荐

  1. PAT 天梯赛 是否同一棵二叉搜索树   (25分)(二叉搜索树 指针)

    给定一个插入序列就可以唯一确定一棵二叉搜索树.然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到.例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果 ...

  2. windows 下python导入excel

    1.安装相应包 2.导入代码

  3. Objective-C和Swift混合编程开发

    创建混编的Framework工程 第一步:创建target为Framework的工程 打开Xcode6-Beta,菜单栏File—>New—>Project; 创建一个新的工程,工程模板选 ...

  4. HDU 2546:饭卡(01背包)

    饭卡 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...

  5. http状态码301和302详解及区别——辛酸的探索之路(文章源自:http://blog.csdn.net/grandPang/article/details/47448395)

    一直对http状态码301和302的理解比较模糊,在遇到实际的问题和翻阅各种资料了解后,算是有了一定的理解.这里记录下,希望能有新的认识.大家也共勉. 官方的比较简洁的说明: 301 redirect ...

  6. 【mysql】mac上基于tar.gz包安装mysql服务

    一.准备工作 (1)下载mysql-5.7.21-macos10.13-x86_64.tar.gz,并将该压缩包移动至/usr/local目录下 (2)解压压缩包 二.安装 (1)将解压的包重命名为m ...

  7. pandas 基础用法

    pandas 是一个基于 Numpy 构建, 强大的数据分析工具包 主要功能 独特的数据结构 DataFrame, Series 集成时间序列功能 提供丰富的数学运算操作 灵活处理缺失数据 Serie ...

  8. 如何快速配好java环境变量和查看电脑上安装JDK的版本位数

    今天一个新手在群里问自己的Eclipse打不开,然后我是属于那种热心肠的人,一般自己知道的就会告诉他们,看了下,是环境变量没有配好,反正我觉得配环境比较简单,现在就教大家简单的环境变量配法 path ...

  9. 【转】每天一个linux命令(26):用SecureCRT来上传和下载文件

    原文网址:http://www.cnblogs.com/peida/archive/2012/11/28/2793181.html 用SSH管理linux服务器时经常需要远程与本地之间交互文件.而直接 ...

  10. php curl文件上传兼容php5.0~5.6各版本

    PHP 5.0~5.6 各版本兼容的cURL文件上传 最近做的一个需求,使用PHP cURL上传文件.踩坑若干,整理如下. 不同版本PHP之间cURL的区别 PHP的cURL支持通过给CURL_POS ...