版权声明:本文参考了《官方文档V3.487》。未经作者允许,严禁用于商业出版,否则追究法律责任。网络转载请注明出处,这是对原创者的起码的尊重!!!
1 简介
IOzone是一个文件系统benchmark工具。它可以生成并测量各种文件操作。 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,
虽然计算机通常在考虑应用程序的情况下购买,但随着时间的推移,应用程序组合也可能会发生变化。许多供应商已经增强了他们的操作系统,以便在一些常用的应用程上性能更好。虽然这会加速少数应用程序的I/O,但系统可能无法很好地用于其他未被操作系统作为优化目标的应用程序。此类增强的一个示例是:数据库。许多操作系统已经测试和调整了文件系统,因此它可以很好地与数据库配合使用。虽然数据库用户很满意,但其他用户可能并不高兴,因为整个系统可能以牺牲所有其他用户为代价向数据库用户提供所有系统资源。随着时间的推移,系统管理员可能会决定将更多办公自动化任务转移到此计算机上。负载现在可以从随机读取器应用程序(数据库)转移到顺序读取器。用户可能会发现在运行此新应用程序时机器速度非常慢,并且对购买此平台的决定感到不满意。通过使用Iozone获得广泛的文件系统性能覆盖,买家更有可能看到任何优点或缺点,并选择更平衡的平台和操作系统。
2 特征
- ANSII ‘C’ 源码.
- POSIX 异步 I/O
- mmap() 文件I/O
- 普通文件I/O
- 单个流测试
- 多个流测试
- POSIX线程
- 多进程测量
- 输出可以在Excel中产生图像的输出
- 绘图的I/O延迟数据
- 64位兼容源码
- 大文件兼容
- 在吞吐量测试中设置障碍以消除掉队的影响。
- 处理器缓存大小可配置。
- 可选择使用fsync,O_SYNC测量。
- 针对NFS测试的选项。
3 构建
IOzone的源代码,应该有12个文件
- iozone.c (源码)
- libasync.c (源码)
- makefile (makefile)
- libbif.c (源码)
- Iozone_msword_98.doc (Word 格式文档)
- iozone.1 (nroff 格式文档)
- gnuplot.dem (gnuplot 样本)
- gnuplotps.dem (生成postscript输出的gnuplot示例文件)
- read_telemetry (读测试文件的样本)
- write_telemetry (写测试文件的样本)
- Run_rules.doc (获得合理的结果的运行规则)
- Changes.txt (更新日志)
键入:make
makefile将显示支持的平台列表。 选择与您的配置匹配的那个,然后键入:make target。就这样。 你完成了编译。 由于IOzone在当前工作目录中创建了所有文件,因此无需任何安装过程。 只需将Iozone复制到您希望测试文件系统性能的任何位置,然后运行它。 或者,您可以使用-f命令行选项指定目标路径,例如,新文件系统中的path/filename文件名。
4 运行示例
最简单的方法是尝试自动模式:
iozone -a
如果您希望生成图形,那么您可能希望打开Excel模式
iozone -Ra
(输出可以使用空格和tab分隔符导入)
或
iozone -Rab output.wks
(输出文件”output.wks"是一个二进制格式的电子表格)
如果内存超过512M,则需要将最大文件大小增加到更大的值。例如,如果您的系统有1G的内存,那么您可能想尝试以下操作:
iozone -Ra -g 2G
如果您只关心read/write并且不希望花时间执行所有测试,那么您可能希望将测试限制为:
iozone -Ra -g 2G -i 0 -i 1
如果您在NFS客户端上通过NFS运行Iozone,那么您可能希望使用:
iozone -Rac
这告诉Iozone在测量中引入close()。 如果客户端运行NFS3上,则可能需要这样做。引入close()有助于减少NFS3的客户端缓存效果。如果使用的文件大小大于客户端中的内存量,则不需要’c’标志。
5 测试定义
Write:此测试测量写入新文件的性能。当写入新文件时,不仅需要存储数据,而且还需要用于跟踪数据在存储介质上的位置的开销信息。此开销称为“元数据”它由目录信息,空间分配和与文件关联的任何其他数据组成,该文件不是文件中包含的数据的一部分。由于此开销信息,首次写入性能低于重写文件的性能是正常的。
Re-Write:此测试测量写入已存在的文件的性能。当写入已存在的文件时,由于元数据已存在,所需的工作量较少。重写性能高于写入新文件的性能是正常的。
Read:此测试测量读取现有文件的性能。
Re-Read:此测试测量读取最近读取过的文件的性能。由于操作系统通常维护最近读取的文件的数据缓存,因此性能更高是正常的。此缓存可用于满足读取,并提高性能。
Random Read:此测试测量访问文件中的随机位置时读取文件的性能。此类活动下的系统性能可能会受到以下几个因素的影响:操作系统缓存的大小,磁盘数,搜索延迟等。
Random Write:此测试测量访问文件中的随机位置时写入文件的性能。同样,此类活动下的系统性能可能会受到以下几个因素的影响,例如:操作系统缓存的大小,磁盘数量,搜索延迟等。
Random Mix:此测试测量访问文件中的随机位置时写入和读取文件的性能。同样,此类活动下的系统性能可能会受到以下几个因素的影响,例如:操作系统缓存的大小,磁盘数量,搜索延迟等。此测试仅在吞吐量模式下可用。每个线程/进程运行读取或写入测试。读/写的分配是在循环的基础上完成的。正确操作需要多个线程/进程。
Backwards Read:此测试测量向后读取文件的性能。这似乎是一种读取文件的奇怪方式,但事实上有些应用程序可以执行此操作。 MSC Nastran是一个向后读取文件的应用程序示例。在MSC Nastran中,这些文件非常大(大小为GB到TB)。尽管许多操作系统具有使其能够更快地向前读取文件的特殊功能,但是很少有操作系统能够检测并增强向后读取文件的性能。
Record Rewrite:此测试测量在文件中写入和重写特定位置(热点)的性能。这个热点可以有非常有趣的行为。如果这个热点的大小足够小以适应CPU数据缓存,那么性能非常高。如果热点的大小大于CPU数据高速缓存但仍然适合TLB,则可以获得不同的性能级别。如果点的大小大于CPU数据高速缓存并且大于TLB但仍然适合操作系统高速缓存,则可以获得另一级别的性能,如果该点的大小大于操作系统高速缓存,则获得了另一个级别的表现。
Strided Read:此测试测量具有跨步访问行为的读取文件性能。例如:在偏移零处读取4 KB的长度,然后seek到200 KB处,然后读取4 KB的长度,然后seek到200 KB,依此类推。这里的模式是读取4 KB然后seek 200 KB并重复该模式。这又是一种典型的应用程序行为,这些程序具有包含在文件中的数据结构,并且正在访问数据结构的特定区域。大多数操作系统都不会检测此行为或实现任何技术来增强此类访问行为下的性能。此访问行为有时也会产生有趣的性能异常。一个例子是应用程序的步幅导致条带文件系统中的特定磁盘成为瓶颈。
Fwrite:此测试使用库函数fwrite()测量写入文件的性能。 这是一个执行缓冲写操作的库例程。 缓冲区位于用户的地址空间内。 如果应用程序要以非常小的大小传输进行写入,那么fwrite()的缓冲和阻塞I / O功能可以通过减少实际操作系统调用的数量和在操作系统调用时增加传输的大小来增强应用程序的性能。 此测试写入新文件,因此元数据的开销再次包含在测量中。
Frewrite:此测试使用库函数fwrite()测量写入文件的性能。这是一个执行缓冲和阻塞写操作的库例程。缓冲区位于用户的地址空间内。如果应用程序要以非常小的大小传输进行写入,那么fwrite()的缓冲和阻塞I/O功能可以通过减少实际操作系统调用的数量和在操作系统调用时增加传输的大小来增强应用程序的性能。此测试写入已经存在的文件,因此性能应该