orion是一个 oracle提供的IO性能测试工具,其可以模拟数据库的各种IO压力特点,对磁盘进行压力测试
如:
1.随机small IO:索引扫描时的IO
2.随机large IO:由于条带化,一个连续的读写扩展到多个磁盘上。因此,在磁盘的这个层次上,许多的连续的读写被看作随机的1M的IO,又被称作多用户的连续IO。
3.连续large IO:数据装载,备份,恢复时,并行查询时产生的IO,各个子进程可以协调,从而是连续IO
4.混合负载
orion支持各种方式连接到主机的存储,到注意,NAS上的IO性能依赖于文件指定的IO模式,所以在运行orion前,必须初始化文件属性
先来看一下orion生成的结果
分为3个文件,分别为收集的3种磁盘IO指标 mbps / latency / iops
每个文件的内容为一个n*m的矩阵,其中,横坐标代表有多少个进程在进行small IO,竖坐标代表有多少个进程在进行large IO
如果横坐标为4,输坐标为10,这表示在10个进程进行large IO的同时,在有4个进程进行small IO的条件下,磁盘读取数据可以达到475MB/s
ORION 执行结束会输出5个文件:
● _summary.txt - Summary of the input parameters along with min. small latency, max large MBPS and/or max.small IOPS.
● _mbps.csv - Performanceresults of large IOs in MBPS(吞吐量)
● _iops.csv - Performanceresults of small IOs in IOPS(每秒IO次数)
● _lat.csv - Latency of smallIOs(响应时间)
● _tradeoff.csv - Shows largeMBPS / small IOPS combinations that can be achieved at certain small latencies
● _trace.txt - Extended,unprocessed output(跟踪信息,最详细的数据)
orion命令的参数:
-run
指定orion运行的模式
5种模式:
simple:只测试所有进程都运行small IO时的latency&iops指标,以及所有进程都运行large IO时的mbps
normal:对于3个指标,n*m的矩阵内的组合都进行测试,进行该测试花费时间很长
advanced:自己定制测试方案
dss:只测试large IO的mbps性能
oltp:只测试small IO的latency和iops性能
simple/normal模式下,只能使用cache_size和verbose参数
dss/oltp模式下,不允许使用-type,-matrix,-num_small,-num_large
-testname
测试名,对应的使用那些设备来测试IO的清单文件为.lun
-size_small
测试small IO时,使用多大的块大小测试,可以设置为打算创建数据库的db_block_size
-size_large
测试large IO时,一个连续的IO大小,默认1MB,一般的OS最大IO大小也就是1MB
-type
large IO的类型,随机还是顺序
默认为随机
单一的全表扫描是随机large IO
并行操作可以被看做顺序large IO
-num_streamIO
如果是顺序large IO,那么设置每个进程有多少并发的进程来协调,默认为4,相当于查询加了/*+parallel(a,4)*/
-simulate
如果磁盘底层已经做了条带,指定为concat即可
如果想测试磁盘在OS在做一层条带,如ASM管理这样的,那么可以指定为raid0
-write
写操作占测试IO量的百分比
如果测试读性能指定为0,写性能指定为100,混合性能指定为1-99
-cache_size
由于阵列带有缓存,测试前,可以指定这部分缓存的大小,先填满缓存后在测试
默认为2分钟后在进行测试,先进行2分钟IO以填满缓存
-duration
data point间的间隔时间
默认为1分钟
-num_small
指定测试small IO时,进程个数
-num_large
指定测试large IO时,进程个数
-matrix
使用非simple/normal模式时,希望得到的测试结果形式
basic:等同于run -simple的输出,只是可以更多定制
detailed:等同于run -normal的输出,只是可以更多定制
point:只测给定num_small,num_large这个点的性能
col:只测给定num_small值的那一列的large IO
row:只测给定num_large值的那一行的small IO
max:以num_small,num_large做为横竖坐标的最大值,测试n*m矩阵内所有组合的值
测试需要的时间:
需要测试的组合数量(不包含Point 1) * duration + 写满cache_size需要的时间
测试对于DSS应用,8K的块大小和32块大小IO的差别
可以看到8K的块大小和32K块大小时,大IO的区别
同进程数下,8K时的IO能力要小于32K时的
一般需要的测试:
./orion -run simple -testname io_test -verbose & 测试8k块大小下随机读iops和lat,1m块大小下mbps
./orion -run dss -testname io_test -verbose & 随机1M的读
./orion -run dss -testname io_test -write 100 -verbose & 随机1M的写
./orion -run oltp -testname io_test -size_small 8 -verbose & 测试块大小为8k时随机读iops和lat
./orion -run oltp -testname io_test -size_small 8 -write 100 -verbose & 测试块大小为8k时随机写iops和lat
./orion -run oltp -testname io_test -size_small 32 -verbose & 测试块大小为32k时随机读iops和lat
./orion -run oltp -testname io_test -size_small 32 -write 100 -verbose & 测试块大小为32k时随机写iops和lat
./orion_linux_x86-64 -run advanced -testname io_test -simulate raid0 -size_large 1024 -write 0 -duration 60 -matrix max -num_large 20 -num_small 0 -type seq -num_streamIO 32 -verbose & radi0模式 1M 顺序读 20个流 每个流32个进程
./orion_linux_x86-64 -run advanced -testname io_test -simulate raid0 -size_large 1024 -write 100 -duration 60 -matrix max -num_large 20 -num_small 0 -type seq -num_streamIO 32 -verbose & raid0模式 1M顺序写 20个流 每个流32个进程
./orion_linux_x86-64 -run advanced -testname io_test -simulate raid0 -size_small 8 -write 0 -duration 60 -matrix max -num_small 20 -num_large 0 -type seq -num_streamIO 32 -verbose & radi0模式 8k 顺序读 20个流 每个流32个进程
./orion_linux_x86-64 -run advanced -testname io_test -simulate raid0 -size_small 32 -write 0 -duration 60 -matrix max -num_small 20 -num_large 0 -type seq -num_streamIO 32 -verbose & radi0模式 32k 顺序读 20个流 每个流32个进程
./orion_linux_x86-64 -run advanced -testname io_test -simulate raid0 -size_small 8 -write 100 -duration 60 -matrix max -num_small 20 -num_large 0 -type seq -num_streamIO 32 -verbose & radi0模式 8k 顺序写 20个流 每个流32个进程
./orion_linux_x86-64 -run advanced -testname io_test -simulate raid0 -size_small 32 -write 100 -duration 60 -matrix max -num_small 20 -num_large 0 -type seq -num_streamIO 32 -verbose & radi0模式 32k 顺序写 20个流 每个流32个进程
./orion_linux_x86-64 -run advanced -testname io_test -simulate raid0 -size_small 8 -write 100 -duration 60 -matrix max -num_large 0 -num_small 20 -type seq -verbose & 模拟dbwr的写
./orion_linux_x86-64 -run advanced -testname io_test -simulate concat -size_large 1024 -write 0 -duration 60 -matrix max -num_large 20 -num_small 0 -type seq -num_streamIO 32 -verbose & concat模式 1M 顺序读 20个流 每个流32个进程
./orion_linux_x86-64 -run advanced -testname io_test -simulate concat -size_large 1024 -write 100 -duration 60 -matrix max -num_large 20 -num_small 0 -type seq -num_streamIO 32 -verbose & concat模式 1M 顺序写 20个流 每个流32个进程
./orion_linux_x86-64 -run advanced -testname io_test -simulate concat -size_small 8 -write 0 -duration 60 -matrix max -num_small 20 -num_large 0 -type seq -num_streamIO 32 -verbose & concat 模式 8k 顺序读 20个流 每个流32个进程
./orion_linux_x86-64 -run advanced -testname io_test -simulate concat -size_small 32 -write 0 -duration 60 -matrix max -num_small 20 -num_large 0 -type seq -num_streamIO 32 -verbose & concat 模式 32k 顺序读 20个流 每个流32个进程
./orion_linux_x86-64 -run advanced -testname io_test -simulate concat -size_small 8 -write 100 -duration 60 -matrix max -num_small 20 -num_large 0 -type seq -num_streamIO 32 -verbose & concat 模式 8k 顺序写 20个流 每个流32个进程
./orion_linux_x86-64 -run advanced -testname io_test -simulate concat -size_small 32 -write 100 -duration 60 -matrix max -num_small 20 -num_large 0 -type seq -num_streamIO 32 -verbose & concat 模式 32k 顺序写 20个流 每个流32个进程
参考链接:
http://blog.sina.com.cn/s/blog_c2b683a30101ex55.html
http://blog.csdn.net/tianlesoftware/article/details/5965331
http://hsbxxl.blog.51cto.com/181620/759238
http://johnwang.blog.51cto.com/474770/326060
http://blog.itpub.net/4227/viewspace-612051/
http://blog.itpub.net/8242091/viewspace-774773/
阅读(7096) | 评论(0) | 转发(0) |