最近可能要测试一下ext3和ext4文件系统,以前记得有这么一个工具,没怎么深入用过,现在打算瞧瞧,也算前期的准备工作吧。
iozone是一个文件系统的benchmark工具,可以测试不同的操作系统中文件系统的读写性能。 可以测试 Read, write, re-read,re-write, read backwards, read strided, fread, fwrite, random read, pread, mmap, aio_read, aio_write 等等不同的模式下的硬盘的性能。
运行规则:
如果你希望得到对平台进行的一系列测试的精确结果,你应该确定测试的最大文件的大小应该大于 buffer cache,如果你不知道Buffer cache有多大,或者buffer cache是动态变化的,那么最大文件的大小要大于平台总共的物理内存。
一般情况下你应该看到三或四种状态:
文件大小刚好适合进程缓存(processor cache)
文件大小刚好适合buffer cache
文件大小大于buffer cache
你可能看到另外的状态,如果平台有primary and secondary processor caches,如果你看到的状态少于三个,那么可能你的最大文件太小了,iozone默认的最大文件大小是512M,这对于一般系统是足够大的,但是对于一些大的系统就需要用-g选项增加最大文件的大小。
测试类型解释:
write
测试写一个新文件的性能,当写一个新文件时不仅需要存储数据本身,还需要存储定位这些数据的信息(类似inode节点表吧-个人理解),这样的性能比写入一个已有的文件性能要低。
re-write 数据写入一个已经存在的文件,他比写入新文件的性能要高。
read 测试读取一个已经存在的文件。
re-read 测试读取一个最近才读取过的文件,他的性能比较高,就像读取系统缓存的最近读取过的文件。
random read 从一个随机位置读取一个文件内容,他的性能受cache大小,磁盘大小,延迟等影响。
random write
随机写测试
random mix 随机的读写一个文件,这个测试只有在吞吐量测试模式下才可以进行
record rewrite
测试write和re-write一个文件的特殊区域,就像热点行为,如果热点足够小,并且适合cpu cache 那么他的性能非常高,如果热点区域大小大于cpu缓存但是适合TLB,性能会下降一点,如果热点区域大于cpu缓存和TLB缓存,但是小于系统缓存,则性能会再降一点,如果热点区域大于系统缓存则性能更差一点
strided read
测试读取一个文件的数据,采取以下方式:在某个点读取一个固定大小的数据A,然后跳过一段固定大小的数据B,再接着读取固定大小的数据A,再跳过一段大小的数据B,如此循环下去,大多数系统察觉不到这样的行为,没有好的技术手段提高性能。
参数解释:
-a
全自动模式,产生的输出包括所有的文件测试,record size是4k到16M,file size是64k到512M
-A
提供更加全面的全自动测试但是消耗更多时间。参数–a在文件不小于32MB时将自动停止使用低于64K的块大小测试。这节省了许多时间,而参数–A则告诉Iozone你不介意等待,即使在文件非常大时也希望进行小块 的测试。
-b
产生一个二进制文件,兼容execl
-R
产生execl报告,iozone会在标准输出产生一个execl兼容的报告,这个报告可以导入execl用来建立图片
-r
可以指定读写的块大小,单位可以是k m g
-s
可以指定测试文件的大小 单位可以是k m g
-f
指定测试时使用的临时文件名,在使用umount参数时这个很有用,
-g
设置自动模式可用的最大文件的大小
-n
设置自动模式可用的最小文件的大小
-i
用来指定测试那个项目,可以使用多个-i指定多个项目
-q
设置自动测试的最大块大小 单位可以是k(Kbytes) m(Mbytes) g(Gbytes)
-y
设置自动测试的最小块大小,单位同上
-t
以吞吐量模式运行,允许指定多个进程
测试前要先清空缓存
sync; echo 3 > /proc/sys/vm/drop_caches sync; echo 0 > /proc/sys/vm/drop_caches
直接google 搜索iozone,打开官网,看了一下官方文档,可怜我那蹩脚的英文啊,好不容易看完了,写了这篇学习文档,然后想baidu一下,靠,第一条百科就有差不多完整的中文解释,所以不要迷恋google,有时度娘也是很给力的啊,对于网上流传的测试文件大小最佳为内存的2倍,我在官方文档中没有找到,或许没看见吧。
参考链接:
http://www.iozone.org/
http://baike.baidu.com/view/3502720.html