【文件系统】使用iozone测试你的文件系统是否可靠

性能是评估一个文件系统的最为关键的维度,根据文件系统在不同场景下的性能表现,可以判断文件系统是否适合特定的应用场景,并为系统性能调优提供依据。
当我们使用一个文件系统时(例如Ext4),我们怎么知道这个文件系统是否可靠?它的性能与稳定性如何?这个文件系统的性能瓶颈在哪里?以及如何才能发挥出文件系统的最佳性能?
下文即将介绍的iozone工具将帮助你测试这一切。

iozone

IOzone是一个文件系统基准测试工具。该基准测试生成并测量各种文件操作。
Iozone已经被移植到许多机器上,并在许多操作系统下运行。
基准测试针对以下操作测试文件I/O性能:

  • Read
  • write
  • re-read
  • re-write
  • read backwards
  • read strided
  • fread
  • fwrite
  • random read/write
  • pread/pwrite variants
  • aio_read
  • aio_write
  • mmap

iozone工具获取

IOzone Filesystem Benchmark 官网
在这里插入图片描述
不同平台iozone工具安装方法:

  • windows平台可以在iozone官网下载exe格式的安装包
  • linux X86_64平台可以在iozone官网通过RPM包手动安装iozone
  • ARM平台可以下载源码进行交叉编译
ARM平台交叉编译iozone方法
  • 首先去官网下载iozone源码(Latest或者stable版本都可以)
    笔者下载的是 iozone3_494.tgz

  • 解压源码文件
    在这里插入图片描述

    • docs 里面存放的是使用文档,有PDF和DOC版本
    • src 里面是源码
  • 修改makefile

    • iozone3_494/src/current/makefile
CC	= aarch64-linux-gnu-gcc  # 修改为交叉编译器
C89	= c89
GCC	= aarch64-linux-gnu-gcc # 修改为交叉编译器
......
  • 编译
$ cd iozone3_494/src/current
$ chmod 755 * #给文件增加读写权限
$ make clean # 清除之前编译结果
$ make linux-arm # 一定要指定平台类型,arm64也可以指定为 linux-arm

编译成功后将iozone3_494/src/current/iozone二进制文件拷贝到开发板即可。

iozone测试选项说明如下

仅涵盖大部分选项,更全面的选项说明请执行iozone -h

OPTIONS 说明 备注
-a 全自动测试模式。记录大小从4k到16M,文件大小从64k到512M 如果和-i 同时指定,以-i 指定的测试模式为准,比如仅指定 -i 0,那么就只测写和覆写
-A 这个版本的自动模式提供了更多的覆盖率,但消耗了大量的时间。当文件大小大于或等于32 MB时,-a选项会自动停止使用小于64k的传输大小。这节省了时间。-A选项告诉Iozone用户愿意等待,即使文件非常大,也希望对小传输进行密集覆盖。注意:这个选项在Iozone 3.61版本中已被弃用。请使用-az -i 0 -i 1代替。 flash编程的最小单位,一般=pagesize
-b filename Iozone 将创建一个二进制文件格式的文件filename,并以 Excel 兼容的方式输出结果
-B 使用mmap()文件。这使得所有要测量的临时文件都可以通过mmap()接口创建和访问。有些应用程序喜欢将文件视为内存数组。这些应用程序对文件进行mmap()操作,然后通过加载和存储访问数组来执行文件I/O操作。
-c 在计时计算中包含close()。只有当你怀疑close()在当前测试的操作系统中有问题时,这才有用。它对于NFS版本3的测试也很有用,可以帮助确定nfs3_commit是否正常工作。
-C 在吞吐量测试中显示每个子进程传输的字节数。如果你的操作系统在文件I/O或进程管理中有任何饥饿问题,这很有用。
-d # 在屏障外的微秒延迟。在吞吐量测试期间,在开始测试之前,所有线程或进程都被强制设置为屏障。通常,所有的线程或进程都会在同一时刻被释放。该选项允许在释放每个进程或线程之间延迟指定的时间(以微秒为单位)。
-D 在 mmap 文件上使用 msync(MS_ASYNC)。 这告诉操作系统需要将mmap空间中的所有数据异步写入磁盘
-e 在计时计算中包含flush (fsync,fflush)
-E 用于选择扩展测试。使用pread接口 仅在某些平台上可用。
-f filename 用于指定被测试临时文件的文件名。在使用unmount选项时,这很有用。当在测试之间使用unmount进行测试时,测试中的临时文件必须位于可以卸载的目录中。无法卸载当前工作目录,因为Iozone进程正在这个目录中运行 未指定默认当前目录
-F filename filename filename … 指定吞吐量测试中使用的每个临时文件名。名称的数量应该等于指定的进程或线程的数量。
-g # 设置自动模式下的最大文件大小(以KB为单位)。 仅自动模式(-a)下可用
-G 在mmap文件上使用msync(MS_SYNC)。这告诉操作系统,mmap空间中的所有数据都需要同步写入磁盘
-H 将 POSIX 异步 I/O 与 # 异步操作一起使用。 Iozone 将使用 POSIX 异步 I/O,将异步缓冲区中的 bcopy 返回到应用程序缓冲区中。 某些版本的 MSC NASTRAN 以这种方式执行 I/O。 应用程序使用此技术,以便异步 I/O 可以在库中执行,并且不需要更改应用程序内部模型。
-i # 用于指定要运行的测试。(0=write/rewrit
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知否,知否

来一杯冰美式把

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值