一、基本测试(dd):
dd只能提供一个大概的测试结果,而且是连续IO 而不是随机IO
(1)读测试
# time dd if=/dev/sda2 of=/dev/null bs=8k count=8388608
8388608+0 records in
8388608+0 records out
68719476736 bytes (69 GB) copied, 516.547 seconds, 133 MB/s
real 8m36.926s
user 0m0.117s
sys 0m55.216s
(2)写测试
# time dd if=/dev/zero f=/opt/iotest bs=8k count=8388608
8388608+0 records in
8388608+0 records out
68719476736 bytes (69 GB) copied, 888.398 seconds, 77.4 MB/s
real 14m48.743s
user 0m3.678s
sys 2m47.158s
二、带宽测试(iozone):
复杂测试案例:
iozone -a -g 16G -i 0 -i 1 -i 2 -f /opt/iozone -Rb iotestresult.xls
含义:进行全面测试.最大测试文件为 16G,从 64K 开始。测试 write/rewrite, read/re-read,random-read/write。测试地方在/opt/iozone。输出文件到 iotestresult.xls 中,iozone将测试结果放在Excel中。
参数介绍
- -a 全自动模式测试。测试记录块大小从4k到16M,测试文件从64k到512M
- -f filename 指定用来测试临时文件,在测试完成后将被自动删除
- -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)
- -R 使用Excel显示结果
三、IOPS测试(Fio):
FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持19种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。
随机读:(randread )
fio -filename=/tmp/test_randread -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest
顺序读:(read )
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest
随机写:(randwrite)
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest
顺序写:(write)
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest
混合随机读写:(randrw)
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=2G -numjobs=10 -runtime=60 -group_reporting -name=mytest -ioscheduler=noop
说明:
filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。
direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机写和读的I/O
bs=16k 单次io的块文件大小为16k
bsrange=512-2048 同上,提定数据块的大小范围
size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。
numjobs=30 本次的测试线程为30.
runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
ioengine=psync io引擎使用pync方式
rwmixwrite=30 在混合读写的模式下,写占30%
group_reporting 关于显示结果的,汇总每个进程的信息。
lockmem=1g 只使用1g内存进行测试。
zero_buffers 用0初始化系统buffer。
nrfiles=8 每个进程生成文件的数量。
四、OPS测试(postmark):
1、Postmark原理
Postmark是由著名的NAS提供商NetApp开发,用来测试其产品的后端存储性能。
Postmark主要用于测试文件系统在邮件系统或电子商务系统中性能,这类应用的特点是:需要频繁、大量地存取小文件。
Postmark的测试原理是创建一个测试文件池。文件的数量和最大、最小长度可以设定,数据总量是一定的。创建完成后,Postmark对文件池进行一系列的事务(transaction)操作,根据从实际应用中统计的结果,设定每一个事务包括一次创建或删除操作和一次读或添加操作,在有些情况下,文件系统的缓存策略可能对性能造成影响,Postmark可以通过对创建/删除以及读/添加操作的比例进行修改来抵消这种影响。事务操作进行完毕后,Post对文件池进行删除操作,并结束测试,输出结果。
Postmark是用随机数来产生所操作文件的序号,从而使测试更加贴近于现实应用。
输出结果中比较重要的输出数据包括测试总时间、每秒钟平均完成的事务数、在事务处理中平均每秒创建和删除的文件数,以及读和写的平均传输速度。
2、Postmark使用方法(两种):
(1)使用配置文件
./postmark XXX.cfg
配置文件方式,是将所有配置命令及run放入文件中,由postmark自动读取
配置文件示例:
set size 10000 50000
set transactions 5000
set number 5000
run
quit
(2)命令行模式
./postmark
进入命令行模式,然后打入相应命令,进行配置,run命令按当前配置运行postmark
将上面配置文件中的命令在命令行中依次执行,结果是相同的,没有任何区别
例如:
[root@msns719 pm-test]# ./postmark-1.51
PostMark v1.51 : 8/14/01
pm>set size 10000 20000
pm>set number 1000
pm>set transactions 50000
pm>run
3、命令解析
set size min_size max_size 设置文件大小的上下限
set number XXX 设置并发文件数
set seed XXX 设置随机数种子
set transactions XXX 设置事务数
set location 设置工作目录,应该是已有目录,默认为当前目录
+ name weight
- name
name weight 将原有目录全部删除,然后添加参数中的目录
set subdirectory n n 为每个工作目录下的子目录个数
set read n
set write n 设置读写块大小
set buffering true/false
true buffered(defoult)
false nobuffered
set bias read n n为read/append中read所占比例 n/10
set bias create n create/delete中create所占比例 n/10
set report verbose(default)/terse 设置报告模式,terse模式的输出没有文字说明,便于通过批处理运行多个测试之后,使用excel对结果进行分析
run [filename] 运行postmark,结果输出到stdout或者文件filename
show [filename] 输出当前设置
help
quit
4、实例测试:
配置文件pm.config如下:
set location /mnt/testaudit/pm-test
set subdirectories 1
set size 10000 50000
set transactions 5000
set number 5000
run
quit
[root@msns719 pm-test]# ./postmark-1.51 pm.config
PostMark v1.51 : 8/14/01
Reading configuration from file 'pm.config'
Creating files...Done
Performing transactions..........Done
Deleting files...Done
Time:
20 seconds total
12 seconds of transactions (416 per second)
Files:
7455 created (372 per second)
Creation alone: 5000 files (1666 per second)
Mixed with transactions: 2455 files (204 per second)
2553 read (212 per second)
2447 appended (203 per second)
7455 deleted (372 per second)
Deletion alone: 4910 files (982 per second)
Mixed with transactions: 2545 files (212 per second)
Data:
77.04 megabytes read (3.85 megabytes per second)
234.28 megabytes written (11.71 megabytes per second)