Oracle 11g内置的IO测试包

Oracle 11g内置的IO测试包

这两天部门有个同事上新系统, 感觉Orion进行压力测试比较麻烦, 我印象中, Oracle 11g引入了一个进行IO压力测试的包, 具体的过程名包含Calibrat,就到自己测试环境的@?/rdbms/admin目录下查找了一把,得到了下列这些内容..

01--catrm.sql 是Resource Manager的基础包, 包含resource manager相关的系统视图信息,
02--通过这些视图可以知道当前Calibration进行的状态,以及Calibration结束之后系统的相关的统计信息.
03catrm.sql:Rem    vkolla      01/23/07 - use DBA_RSRC_IO_CALIBRATE
04catrm.sql:Rem    vkolla      11/13/06 - remove DBA_RSRC_IO_CALIBRATE
05catrm.sql:Rem    suelee      06/11/06 - Add IO calibration tables
06catrm.sql:-- create the view DBA_RSRC_IO_CALIBRATE
07catrm.sql:create or replace view DBA_RSRC_IO_CALIBRATE
08catrm.sql:  from sys.resource_io_calibrate$
09catrm.sql:comment on table DBA_RSRC_IO_CALIBRATE is
10catrm.sql:'Results of the most recent I/O calibration'
11catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.START_TIME is
12catrm.sql:'start time of the most recent I/O calibration'
13catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.END_TIME is
14catrm.sql:'end time of the most recent I/O calibration'
15catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.MAX_IOPS is
16catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.MAX_MBPS is
17catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.MAX_PMBPS is
18catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.LATENCY is
19catrm.sql:comment on column DBA_RSRC_IO_CALIBRATE.NUM_PHYSICAL_DISKS is
20catrm.sql:create or replace public synonym DBA_RSRC_IO_CALIBRATE
21catrm.sql:   for DBA_RSRC_IO_CALIBRATE
22catrm.sql:grant select on DBA_RSRC_IO_CALIBRATE to SELECT_CATALOG_ROLE
23--cdfixed.sql 是系统v$fixed_table相关的动态性能视图的生成脚本. 其中包含部分关于Calibration运行中的状态信息.
24cdfixed.sql:Rem    vkolla      01/23/07 - calibration_results to status
25cdfixed.sql:Rem    vkolla      11/17/06 - v$io_calibration_results
26cdfixed.sql:create or replace view v_$io_calibration_status
27cdfixed.sql:as select * from v$io_calibration_status;
28cdfixed.sql:create or replace public synonym v$io_calibration_status
29cdfixed.sql:                             for v_$io_calibration_status;
30cdfixed.sql:grant select on v_$io_calibration_status to SELECT_CATALOG_ROLE;
31cdfixed.sql:create or replace view gv_$io_calibration_status
32cdfixed.sql:as select * from gv$io_calibration_status;
33cdfixed.sql:create or replace public synonym gv$io_calibration_status
34cdfixed.sql:                             for gv_$io_calibration_status;
35cdfixed.sql:grant select on gv_$io_calibration_status to SELECT_CATALOG_ROLE;
36--dbmsrmad.sql 包含dbms_resource_manager相关的系统包的定义信息, 查看此脚本即可知道如何使用此calibration方法.
37dbmsrmad.sql:Rem    vkolla      08/07/06 - remove calibrate_mode from calibrate_io
38dbmsrmad.sql:Rem    suelee      06/11/06 - Add IO calibration routines
39dbmsrmad.sql: -- Initiate an I/O calibration
40dbmsrmad.sql:  PROCEDURE calibrate_io (
01sys@DBMAIN>desc dbms_resource_manager
02PROCEDURE CALIBRATE_IO
03 Argument Name                  Type                    In/Out Default?
04 ------------------------------ ----------------------- ------ --------
05 NUM_PHYSICAL_DISKS             BINARY_INTEGER          IN     DEFAULT
06 MAX_LATENCY                    BINARY_INTEGER          IN     DEFAULT
07 MAX_IOPS                       BINARY_INTEGER          OUT
08 MAX_MBPS                       BINARY_INTEGER          OUT
09 ACTUAL_LATENCY                 BINARY_INTEGER          OUT
10 
11--过程calibration_io有5个参数, 第一个参数输入本地的物理磁盘个数(不是看到的分区个数,或者通过存储输出的Lun的个数),随着指定的磁盘数目的变化,Calibrate_io也会与Orion一样最终会增加测试的压力, 可能的结果就是最后得到的iops/mbps的结果会稍好, 但是actual_latency的值会稍大.
12第二个参数为可接受的最大延迟. 我最初对此的理解是, 这是压力测试程序能够接受的最大延迟, 超过此可能就不再进行测试. 不过,经过测试,我感觉这个并不是严格的限制.
13第三个参数为测试出来的系统能够支撑的最大IOPS
14第四个参数为测试出来的系统能够支撑的最大MBPS
15第五个参数我个人估计应该是系统在最大IOPS时对应的响应时间.

下面为我在自己系统上运行的脚本以及其运行结果.

01sys@DBMAIN>set timing on serveroutput on
02sys@DBMAIN>declare
03  2    v_max_iops BINARY_INTEGER;
04  3    v_max_mbps BINARY_INTEGER;
05  4    v_act_lat BINARY_INTEGER;
06  begin
07  6    dbms_resource_manager.CALIBRATE_IO(1,20,v_max_iops,v_max_mbps,v_act_lat);
08  7    dbms_output.put_line('max iops : ' || v_max_iops );
09  8    dbms_output.put_line('max mbps : ' || v_max_mbps );
10  9    dbms_output.put_line('actual latency : ' || v_act_lat );
11 10  end;
12 11  /
13max iops : 64
14max mbps : 26
15actual latency : 14
16 
17PL/SQL procedure successfully completed.
18 
19Elapsed: 00:11:32.29
20 
21--将num_disk设置成一个更大的数字后的测试效果.
22sys@DBMAIN>declare
23  2    v_max_iops BINARY_INTEGER;
24  3    v_max_mbps BINARY_INTEGER;
25  4    v_act_lat BINARY_INTEGER;
26  begin
27  6    dbms_resource_manager.CALIBRATE_IO(4,20,v_max_iops,v_max_mbps,v_act_lat);
28  7    dbms_output.put_line('max iops : ' || v_max_iops );
29  8    dbms_output.put_line('max mbps : ' || v_max_mbps );
30  9    dbms_output.put_line('actual latency : ' || v_act_lat );
31 10  end;
32 11  /
33max iops : 66 --注意此处以及下面的两个值都变大了, iops/mbps增长的量很小, 真实IO延迟则大大提高了.
34max mbps : 33
35actual latency : 29
36 
37PL/SQL procedure successfully completed.
38 
39Elapsed: 00:13:07.11
40 
41--calibrate_io执行后的相关测试结果也可以通过查询视图dba_rsrc_io_calibrate来获得.
42sys@DBMAIN>col start_time format a30
43sys@DBMAIN>col end_time format a30
44sys@DBMAIN>l
45  1* select * from dba_rsrc_io_calibrate
46sys@DBMAIN>/
47 
48START_TIME                     END_TIME                         MAX_IOPS   MAX_MBPS  MAX_PMBPS    LATENCY NUM_PHYSICAL_DISKS
49------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ------------------
5005-APR-10 09.59.51.135124 AM   05-APR-10 10.12.58.120160 AM           66         33         17         29                  4
51 
52Elapsed: 00:00:00.01
53--查询此视图得到的相关结果与上面根据procedure的output参数得到的结果基本一致,唯一的例外是此处还有一个MAX_PMBPS列,此列表示单个进程最大可以达到的吞吐量(此处为17MB/s).

使用dbms_resource_manager.calibrate_io进行io测试需要系统支持异步IO, 也就是系统安装时必须安装有libaio(我所使用的RHEL 5.3使用的是libaio-0.3.106-3.2), 另外数据库的参数必须设置为支持异步IO.

01--如果数据库使用的是ASM,只要disk_asynch_io为True(默认值)就可以使用了
02sys@DBMAIN>show parameter disk_asynch_io
03NAME                                 TYPE        VALUE
04------------------------------------ ----------- ------------------------------
05disk_asynch_io                       boolean     TRUE
06sys@DBMAIN>
07--如果数据库的数据文件是基于文件系统的,则还需要设置如下参数,它的默认值为none, 要支持异步IO,需要将此参数设置为asynch,并重启数据库才能生效.
08--alter system set filesystemio_options = asynch scope=spfile;
09--shutdown immediate;
10--startup
11sys@DBMAIN>show parameter filesystemio_options
12 
13NAME                                 TYPE        VALUE
14------------------------------------ ----------- ------------------------------
15filesystemio_options                 string      none
16 
17--系统中哪些数据文件支持Async可以通过如下查询获得.
18sys@DBMAIN>col name format a50
19sys@DBMAIN>l
20  select name,asynch_io from v$datafile f,v$iostat_file i
21  where f.file#=i.file_no
22  3* and (filetype_name='Data File' or filetype_name='Temp File')
23sys@DBMAIN>/
24 
25NAME                                               ASYNCH_IO
26-------------------------------------------------- ---------
27+DATA/dbmain/datafile/system.261.713375671         ASYNC_ON
28+DATA/dbmain/datafile/sysaux.262.713375711         ASYNC_ON
29+DATA/dbmain/datafile/sysaux.262.713375711         ASYNC_ON
30+DATA/dbmain/datafile/undotbs.263.713375731        ASYNC_ON
31+DATA/dbmain/datafile/test8k.265.713381589         ASYNC_ON
32+DATA/dbmain/datafile/indx.269.713798841           ASYNC_ON
33+DATA/dbmain/datafile/test.270.715172511           ASYNC_ON
34 
357 rows selected.

本文参考以下内容:
Oracle的官方文档 DBMS_RESOURCE_MANAGER
Arup Nanda的博客文章 Resource Manager I/O Calibration in 11g

No related posts.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值