Orionoracle提供的测试io性能的工具详解Word文档格式.docx
《Orionoracle提供的测试io性能的工具详解Word文档格式.docx》由会员分享,可在线阅读,更多相关《Orionoracle提供的测试io性能的工具详解Word文档格式.docx(20页珍藏版)》请在冰点文库上搜索。
ORION对Oracle管理员
Oracle管理员可以根据期望的工作量使用Orion来评估和比较不同的存储阵列。
他们也可以
用Orion来决定峰值时优化的网络连接数,存储阵列数,存储阵列控制器数,和磁盘数。
附
录A描述了根据数据库现在的工作量来推测IOPS和MBPS需求。
开始使用Orion
1.下载orion:
有Linux/x86,Solaris/SPARC和Windows/x86版本
2.安装Orion
Linux/Solaris:
解压Orion执行文件。
gunziporion_linux_x86-64.giz
Windows:
运行安装程序
C:
\temp>
orion_windows_x86-64.msi
3.选择测试名,我们使用的名是mytest
4.创建文件名mytest.lun,例如:
/dev/raw/raw1
/dev/raw/raw2
...
/dev/raw/raw8
5.验证设备是不是可以访问。
Linux可以用下面的命令:
$ddif=/dev/raw/raw1f=/dev/nullbs=32kcount=1024
1024+0recordsin
1024+0recordsout
6.验证在你的平台上已经有异步IO的类库。
Orion测试完全是依赖异步的IO。
在linux和
solaris,类库libaio需要安装并被访问。
环境变量名是LD_LIBRARY_PATH或者是LIBPATH,
window已经安装异步IO。
7.第一次测试,建议使用simple,simple测试衡量在不同的负载下的小随机读和大的随
机读。
这些结果给我一些想法,不同类型的IO和负载下的IO性能。
simple测试的命令:
./orion_linux_x86-64-runsimple-testnamemytest-num_disks4
ORION:
ORacleIONumbers--Version11.1.0.7.0
mytest_20101218_2205
Testwilltakeapproximately30minutes
Largercachesmaytakelonger
Orion生成的IO负载层次考虑了在mytest.lun文件中磁盘的数目。
8.结果将被记录在输出文件中。
输出文件:
Orion将产生几个输出文件,
1.mytest_summary.txt:
这个文件包含:
a.输入参数
b.针对大的随机和连续的工作量下观察到的最大的吞吐量
c.针对小的随机的工作量的IO速率
d.针对小的随机的工作量的最小的延迟时间。
[root@dbs101software]#moremytest_20101218_2205_summary.txt
ORIONVERSION11.1.0.7.0
Commandline:
-runsimple-testnamemytest-num_disks4
Thismapstothistest:
Test:
mytest
SmallIOsize:
8KB
LargeIOsize:
1024KB
IOTypes:
SmallRandomIOs,LargeRandomIOs
SimulatedArrayType:
CONCAT
Write:
0%
CacheSize:
NotEntered
DurationforeachDataPoint:
60seconds
SmallColumns:
0
LargeColumns:
0,
1,
2,
3,
4,
5,
6,
7,
8
TotalDataPoints:
29
Name:
/dev/sda5Size:
102404703744
/dev/sdb1Size:
/dev/sdc1Size:
/dev/sdd1Size:
4FILEsfound.
MaximumLargeMBPS=62.80@Small=0andLarge=7
MaximumSmallIOPS=647@Small=20andLarge=0
MinimumSmallLatency=7.32@Small=1andLarge=0
2.mytest_mbps.csv文件:
这是个csv文件。
包含大的随机或者连续的IO工作量。
所有的csv
输出文件有个2维表。
行代表大的IO负载层次。
列代表小的IO负载层次。
simple测试不包含
大的和小的IO结合。
所以MBPS文件只有一个列,0代表没有小的IO。
#moremytest_20101218_2205_mbps.csv
Large/Small,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20
35.27
49.03
55.23
58.20
60.33
60.34
62.80
62.44
在这个例子中,当负载层次在5的时候,没有小的IO操作,我们得到的数据吞吐量是60.33MBPS
我们可以用excel图形来显示MBPS的速率。
test_20101218_2205_mbps.csv
3.mytest_iops.csv:
这是个小的随机的IO工作量的IOPS吞吐量。
4.mytest_lat.csv:
这是个小的随机的IO工作量下的延迟时间。
#moremytest_20101218_2205_lat.csv
18,
19,
7.32,
8.63,
9.93,
11.15,
12.31,
13.38,
14.59,
15.71,
16
.83,
18.23,
19.36,
20.45,
21.77,
23.02,
24.43,
25.73,
27.16,
28.23,
.57,
30.87
1
2
3
4
5
6
7
5.mytest_trace.txt:
包含扩展的,未处理的测试输出。
输入参数:
Orion可以使用命令的参数来测试任意一种工作量。
强制输入的参数:
run:
测试运行的层次,这个选项提供simple,normal,advanced的层次。
如果没有指定
advanced,那么设置有些非强制的参数(-cache_size和-verbose)将会出错。
simple:
产生小的随机的IO和大的连续的IO工作量。
在这个选项中,小的随机的IO和
大的连续的IO是分开测试的。
这个参数对应下列的Orion调用:
./orion-runadvanced-testnamemytest\
-num_disks4\
-size_small8-size_large1024-typerand\
-simulateconcat-write0-duragion60\
-matrixbasic
normal:
除了simple的功能外,还会产生小的随机的IO和大的连续的IO的结合。
-matrixdetailed
advanced:
如果用这个选项,用户需要指定可选的参数。
testname:
输入文件必须是<
testname>
.lun
num_disks:
实际测试的物理磁盘的数目。
可选的输入参数:
help:
帮助信息
size_small:
小的随机工作量的IO的大小(KB)
size_large:
大的随机的或者连续工作量的大小(KB)。
type:
大的IO的工作量(默认是rand):
rand:
大的随机的IO
seq:
大的连续的IO
num_streamIO:
每个大的连续读写流的IO数目。
只是在-typeseq下使用。
simulate:
大的连续的IO工作量小的数据分布。
contact:
串联指定的luns成一个虚拟的卷。
在虚拟的卷上的连续的测试从某个点到一个
lun的结束点。
然后再到下一个lun。
raid0:
在指定的luns上条带化成一个虚拟的卷。
条带的大小是1M(和asm的条带大小一
致),可以通过参数-stripe来更改。
write:
和读相比的写的百分比,这个参数在小的随机的和大的连续的IO工作量下适用。
在大
的连续的IO,每个读写流要么是读要么是写。
这个参数是指只是写百分比。
写的数据都是垃
圾数据。
写的测试将破坏的指定的lun。
cache_size:
存储阵列的读写缓存大小(MB)。
针对大的连续的IO工作量,Orion将在每个测
试点之前warm的cache。
使用缓存大小来决定缓存操作。
如果没有指定,将有个默认值。
如果
是0的话,将没有warm缓存。
duration:
每个测试点的时间。
(默认是60)
matrix:
混合工作量测试的类型
basic:
没有混合的工作量,小的随机的IO和大的连续的IO分开测试。
detailed:
小的随机的IO和大的连续的IO结合起来测试。
point:
单个测试点,S代表小的随机的IO,L代表大的随机/连续的IO。
S-num_small
L-num_large
col:
大的随机/连续的IO
row:
小的随机的IO
max:
和detailed一样,只是在最大的负载下测试工作量。
可以用-num_small和
-num_large参数指定。
num_small:
小的随机的IO的最大数目。
num_large:
大的随机的IO或者一个读写流的并发数目。
verbose:
打印进度和状态到控制台。
命令行例子:
为了理解你的存储性能,小的随机读和大的随机IO读工作量,先开始运行:
./orion-runsimple-num_disks4-testnamemytest
测试小的随机读和大的随机读的IO工作量,运行:
./orion-runnormal-testnamemytest-num_disks4
测试32K和1MB随机读的组合
./orion-runadvanced-testnamemytest-num_disks4-size_small32\
-size_large1024-typerand-matrixdetailed
测试1MB连续写流,仿真1MB的raid-0条带化
./orion-runadvanced-testnamemytest-num_disk4-simulateraid0\
-stripe1024-write100-typeseq-matrixcol-num_small0
常见问题:
在<
.lun中的卷发生IO错误:
用dd拷贝文件命令来验证
验证操作系统支持异步IO
在linux和solaris中,类库libaio必须在类库路径中
如果使用的是NAS
确保文件系统被加载
<
.lun的文件要包含一个或多个已有文件,Orion不和目录或加载点工
作。
文件要足够大,能代表你实际数据文件大小。
NFS在linux下异步IO性能很差
如果测试的时候遇到没有初始化的或者未写过的块的时候,有些智能的NAS系统
将产生伪造的数据,解决方法是写所有的块。
如果在windows下测试
在裸设备上测试的时候,要映射一个盘符
如果是运行32位Orion在64位Linux上
拷贝一份32位的libaio到64位机器上
如果测试的磁盘数超过30
你应该使用duration参数,并为每个测试点制定一个更长的时间(120秒)。
因
为Orion让所有的轴都运行在一个负载下。
每个测试点需要加大时间。
你可能遇到下列的错误
specifyalonger-durationvalue.
类库的错误
参考第一个常见错误
NT-ONLY:
确保oracle的类库和orion在同一个目录
遇到”unbelievablygood"
可能有个很大读写缓存,一般存储阵列控制器有很大的影响。
找出缓存的大小,
并在参数-cache_size中为orion指定。
卷的大小不够,尝试关闭缓存。
如果其他卷共享存储,将会看到突出的IO操作。
Orion报告长时间运行
如果num_disks高的话,运行时间也很长。
参数cache_size影响运行时间,Orion为每个测试点准备缓存需要2分钟。
如
果你关闭了你的缓存,你可以指定参数cache_size=0
如果指定的参数duration很长,运行时间是很长。
附录A:
分类数据库的IO负载
为了正确的配置数据库的存储设备,必须了解数据库的性能需求。
1IO请求主要是单个块还是多个块
数据库将发出多个IO请求:
并行查询,查询大数据量的表扫描,直接数据装
载,备份恢复。
一般来说,OLTP主要是单个IO请求,DSS数据仓库是多个IO请
求。
2平均和峰值的IOPS是多少?
写占多少百分比。
3平均和峰值的MBPS是多少?
写占多少百分比。
如果你的数据库IO请求主要是单个块,那就关注IOPS,如果数据库IO请求主要是多个
块,那就关注MBPS。
10gR2数据库:
可以从视图v$sysstat得到IO的类型。
单个数据块的读:
"
physicalreadtotalIOrequests"
-"
physicalread
totalmultiblockrequests"
多个数据块的读:
physicalreadtotalmultiblockrequests"
读的总和:
单个数据块的写:
physicalwritetotalIOrequests"
physicalwrite
多个数据块的写:
physicalwritetotalmultiblockrequests"
写的总和:
使用这些数据,你可以评估在一段时间范围内(包含正常时间和峰值时间)读写的
IOPS和MBPS,
selectname,value
fromv$sysstat
wherenamein('
physicalreadtotalIOrequests'
'
physicalreadtotalmultiblockrequests'
physicalwritetotalIOrequests'
physicalwritetotalmultiblockrequests'
);
NAME
VALUE
physicalreadtotalIOrequests
2068290092
physicalreadtotalmultiblockrequests
2255995
physicalwritetotalIOrequests
9968770
physicalwritetotalmultiblockrequests
251551
单个数据块读是98%
单个数据块写实97%
也可以从awr报表中得到这些数据。
InstanceActivityStats
DB/Inst:
DBS108A/dbs108a
Snaps:
8881-8882
->
Orderedbystatisticname
Statistic
Total
perSecond
perTrans
-----------------------------------------------------------------------------
...
27,791
15.7
38.7
physicalreadtotalbytes
319,881,216
180,368.5
444,897.4
physicalreadtotalmultiblock
115
0.1
0.2
4,278
2.4
6.0
physicalwritetotalbytes
49,528,320
27,927.1
68,885.0
physicalwritetotalmultiblock
22
0.0
0.0
附录B:
数据仓库
在数据仓库设计和管理的时候,IO性能是一个关键的部分,典型的数据仓库系统是
IO集中,操作在大数据量上,数据加载,重建索引和创建物化视图。
数据仓库支持
的IO必须设计符合过度的需求。
数据仓库的存储配置是根据IO带宽,而不是总的容量。
磁盘的容量比磁盘吞吐量速
率发展快,结果少数几个磁盘可以存储大量的数据。
但是大量的磁盘不能提供同样
IO吞吐量。
你可以用多个磁盘和管道来得到最大的带宽。
条带化是一种方法来实现。
实现一个大的条带大小(1M)来确保时间来定位磁盘和传输数据。
orion可以仿真连续的IO吞吐量,例如:
白天的工作量:
当终端客户,其他应用查询系统:
许多单独的并发只读IO
数据装载:
终端用户可能访问数据库,写的工作量和一些可能并行读(也许是
装载程序或者终端用户)
重建索引和物化视图:
读写工作量
备份:
只读的工作量,可能高的并行度
使