我想对存储在SAN上的文件系统进行基准测试.
但SAN使用了大量缓存(仅10%到20%),
所以,如果我做一些测试,结果将是不现实的.
我该怎么办才能得到正确的结果?
对程序的任何建议?邦妮,IOZone还是……?
解决方法
作为iozone粉丝,我多年来一直在使用它进行
Linux和Windows系统的基准测试. Sean有一个关键点,用一个不能在RAM Cache中修复的数据集进行测试. IOZone让这很容易.
iozone -s 64G -r 16k
使用64G数据集和16K读取大小进行测试.您可以多次指定-r以为其提供一系列I / O操作大小.您甚至可以指定单独的测试:
iozone -s 32G -s 64G -r 8k -r 16k -r 32k -r 64k -i 1 -i 2
-i 1是必需的,因为它创建数据集,但-i 2告诉它也运行随机读取和随机写入测试.它还可以运行其他几项测试.一个有趣的测试是’stride read’测试,它在读取之间跳过许多切片;正确配置它可以测试预读和RAID条带对齐的限制.
它也可以使用Direct IO作为测试的一部分,如果这对您很重要的话.一些DBMS使用DirectIO,绕过Linux缓存系统:
iozone -s 8G -r 1k -I
它甚至有一个同时测试多个文件的模式.这对于测试某些文件可能适合缓存的情况很方便,但不是全部.
iozone -t 32 -s 2G -r 8k -r 16k
这告诉它使用32个线程,每个线程都有自己的2GB文件,并测试各种记录大小.
我见过几次的一件事是我测试的记录大小与我的RAID条带宽度相同.通常,它的访问速度比它两侧的记录大小要慢.这是分区错位的标志.