Orionoracle提供的测试io性能的工具详解.docx
- 文档编号:10317895
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:20
- 大小:25.81KB
Orionoracle提供的测试io性能的工具详解.docx
《Orionoracle提供的测试io性能的工具详解.docx》由会员分享,可在线阅读,更多相关《Orionoracle提供的测试io性能的工具详解.docx(20页珍藏版)》请在冰豆网上搜索。
Orionoracle提供的测试io性能的工具详解
Orion-oracle提供的测试io性能的工具
Orion是oracle提供的测试io性能的工具。
它可以用来模拟Oracle数据库IO,也可以用来仿
真ASM的条带化的功能。
Orion可以支持下列IO负载
1.小的随机的IO:
OLTP的应用主要是随机的读写,大小和数据的块大小一样(一般是8K)。
这样的应用主要是关注的吞吐量是IOPS和一个请求的平均延时时间。
Orion可以仿真一个
随机IO负载。
指定的读写百分比,指定的IO大小,指定的IOs,IOs是分布在不同的磁盘上。
2.大的连续的IO:
数据仓库的应用,数据装载,备份,和恢复会产生连续的读写流,这些
读写是由多个1M的IO组成的。
这些应用都是处理大数据量的数据,主要是关注总体的数据
吞吐量MBPS
3.大的随机的IO:
一个连续的读写和其他的数据库活动同时访问磁盘。
基于条带化,一个
连续的读写扩展到多个磁盘上。
因此,在磁盘的这个层次上,许多的连续的读写被看作随机
的1M的IO,又被称作多用户的连续IO。
4.混合的负载:
Orion可以同时仿真前俩种负载:
小的随机的IO,大的连续的IO。
这将使你
可以仿真,OLTP的8K的随机读写的负载和4个连续的1MIO读写的备份的负载。
针对不同的IO负载,Orion可以在不同的IO压力测试并得到性能参数:
MBPS,IOPS,和IO
延迟时间。
负载是术语,代表异步的IOs的数目。
内部本质来说,每一个负载层次,Orion
软件一直在尽快的发I/O请求来完成这个层次的I/O负载。
针对随机的负载(大的和小的),
负载的层次就是I/Os的数目。
针对大的连续的负载,负载的层次就是连续的读写流和每次
读写流的IO的数目。
在负载层次范围内测试指定的负载将帮助用户理解性能是怎么受影响的。
测试目标:
理论上,ORION可以用来测试任何支持异步的字符设备。
ORION已经在下列类型的设备上测试过。
1.DAS(directed_attatched)的存储:
2.SAN(storage-areanetwork)的存储:
3.ORION没有在NAS(network-attachedstorage).
ORION对存储设备的供应商:
供应商可以用ORION来理解Oracle是如何来在存储上执行的。
也可以用Orion来找出适合
Oracle最好的存储配置。
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
Name:
/dev/sdb1Size:
102404703744
Name:
/dev/sdc1Size:
102404703744
Name:
/dev/sdd1Size:
102404703744
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, 0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20
1, 35.27
2, 49.03
3, 55.23
4, 58.20
5, 60.33
6, 60.34
7, 62.80
8, 62.44
在这个例子中,当负载层次在5的时候,没有小的IO操作,我们得到的数据吞吐量是60.33MBPS
我们可以用excel图形来显示MBPS的速率。
test_20101218_2205_mbps.csv
Large/Small, 0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20
3.mytest_iops.csv:
这是个小的随机的IO工作量的IOPS吞吐量。
4.mytest_lat.csv:
这是个小的随机的IO工作量下的延迟时间。
#moremytest_20101218_2205_lat.csv
Large/Small, 1, 2, 3, 4, 5, 6, 7, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20
0, 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, 29
.57, 30.87
1
2
3
4
5
6
7
8
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的结合。
./orion-runadvanced-testnamemytest\
-num_disks4\
-size_small8-size_large1024-typerand\
-simulateconcat-write0-duragion60\
-matrixdetailed
advanced:
如果用这个选项,用户需要指定可选的参数。
testname:
输入文件必须是
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
常见问题:
在
用dd拷贝文件命令来验证
验证操作系统支持异步IO
在linux和solaris中,类库libaio必须在类库路径中
如果使用的是NAS
确保文件系统被加载
作。
文件要足够大,能代表你实际数据文件大小。
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"
读的总和:
"physicalreadtotalIOrequests"
单个数据块的写:
"physicalwritetotalIOrequests"-"physicalwrite
totalmultiblockrequests"
多个数据块的写:
"physicalwritetotalmultiblockrequests"
写的总和:
"physicalwritetotalIOrequests"
使用这些数据,你可以评估在一段时间范围内(包含正常时间和峰值时间)读写的
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
-----------------------------------------------------------------------------
...
physicalreadtotalIOrequests 27,791 15.7 38.7
physicalreadtotalbytes 319,881,216 180,368.5 444,897.4
physicalreadtotalmultiblock 115 0.1 0.2
...
physicalwritetotalIOrequests 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
数据装载:
终端用户可能访问数据库,写的工作量和一些可能并行读(也许是
装载程序或者终端用户)
重建索引和物化视图:
读写工作量
备份:
只读的工作量,可能高的并行度
使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Orionoracle 提供 测试 io 性能 工具 详解