联系: QQ(5163721)
标题: 使用Oracle 11.2的DBMS_RESOURCE_MANAGER.CALIBRATE_IO对Exadata X5(HC)进行测试
作者:Lunar©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]
之前测试的X3的flashcard的IOPS大概是满配200w左右(具体参见 《 Exadata上的IOPS和MBPS 》)
使用Exadata的calibrate命令测试X5-2的IOPS和MBPSOracle 11.2有一个DBMS_RESOURCE_MANAGER.CALIBRATE_IO,可以用来测试磁盘IO。
这里有几个需要注意的地方:
1,DBMS_RESOURCE_MANAGER.CALIBRATE_IO不能并行执行,否则会报错:
declare * ERROR at line 1: ORA-56705: I/O calibration already in progress ORA-06512: at "SYS.DBMS_RMIN", line 463 ORA-06512: at "SYS.DBMS_RESOURCE_MANAGER", line 1302 ORA-06512: at line 6
2,这个过程的测试,对于基准测试,我个人感觉非常不合适(数值严重偏低……不知道是不是需要调整什么参数,还是Exadata上就不应该用这个测试?)
3,测试中,指定延迟参数时,不能低于10秒(oracle的限制,估计是针对硬盘考虑的)
4,后面监控用的是Oracle已离职员工(凯耀,我的好兄弟)给的mon监控软件(底层基于开源的collect rpm包)
不过在新版本的exadata上貌似脚本还有些问题,因此,有些画图时丢失了(比如IOPS,比如flashcard的图)
5,测试脚本:
set timing on serveroutput on; declare v_max_iops BINARY_INTEGER; v_max_mbps BINARY_INTEGER; v_act_lat BINARY_INTEGER; begin DBMS_RESOURCE_MANAGER.CALIBRATE_IO(102,10 ,v_max_iops,v_max_mbps,v_act_lat); dbms_output.put_line('max iops : ' || v_max_iops ); dbms_output.put_line('max mbps : ' || v_max_mbps ); dbms_output.put_line('actual latency : ' || v_act_lat ); end; /
这里 102 是磁盘数量,10 是硬盘延迟
102的由来是因为,这个是一个Quarter Rack,使用onecommand安装后,缺省可用102个asmdisk,这个可以查询(V$ASM_DISK)。
下面是本次的测试结果:
15:15:05 sys@DBM>set timing on serveroutput on; 15:15:21 sys@DBM>declare 15:15:21 2 v_max_iops BINARY_INTEGER; 15:15:21 3 v_max_mbps BINARY_INTEGER; 15:15:21 4 v_act_lat BINARY_INTEGER; begin 15:15:21 5 15:15:21 6 DBMS_RESOURCE_MANAGER.CALIBRATE_IO(102,10 ,v_max_iops,v_max_mbps,v_act_lat); 15:15:21 7 dbms_output.put_line('max iops : ' || v_max_iops ); dbms_output.put_line('max mbps : ' || v_max_mbps ); 15:15:21 8 15:15:21 9 dbms_output.put_line('actual latency : ' || v_act_lat ); 15:15:21 10 end; 15:15:21 11 / max iops : 10592 max mbps : 3515 actual latency : 11 PL/SQL procedure successfully completed. Elapsed: 00:06:05.44 15:21:27 sys@DBM>
这里看到IOPS大概1w多,吞吐量大概每秒3.5GB,最大延迟11秒。这个数值跟使用mon(凯耀写的)监控的数量差不错:
这里看到磁盘的吞吐量大概每秒3.5GB/s,跟mon监控的差不多
IB的吞吐量大概是3.4GB/s
逻辑硬盘的IOPS是10000左右,跟使用cell上的calibrate的数值差不多
这是执行过程中的一个截图。
16:35:13 sys@DBM>select to_char(START_TIME,'yyyy-mm-dd hh24:mi:ss') START_TIME, to_char(END_TIME,'yyyy-mm-dd hh24:mi:ss') START_TIME, 16:35:13 2 16:35:13 3 MAX_IOPS, MAX_MBPS, MAX_PMBPS,LATENCY,NUM_PHYSICAL_DISKS 16:35:13 4 from dba_rsrc_io_calibrate; START_TIME START_TIME MAX_IOPS MAX_MBPS MAX_PMBPS LATENCY NUM_PHYSICAL_DISKS ------------------- ------------------- ---------------- ---------------- ---------------- ---------------- ------------------ 2015-04-06 15:15:22 2015-04-06 15:21:27 10592 3515 320 11 102 Elapsed: 00:00:00.00 16:35:14 sys@DBM>