联系: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和MBPS
本次测试的机器是Exadata X5-2:
CPU型号:
[root@dm01cel02 cellos]# grep -E '^model name|^cpu MHz' /proc/cpuinfo cpu MHz : 2401.000 model name : Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz [root@dm01cel02 cellos]# [root@dm01db01 ibdiagtools]# grep -E '^model name|^cpu MHz' /proc/cpuinfo cpu MHz : 2301.000 model name : Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz [root@dm01db01 ibdiagtools]#
主机型号:
[root@dm01db01 ibdiagtools]# /opt/oracle.SupportTools/CheckHWnFWProfile -c loose [SUCCESS] The hardware and firmware matches supported profile for server=ORACLE_SERVER_X5-2 [root@dm01db01 ibdiagtools]# [root@dm01cel01 ~]# /opt/oracle.SupportTools/CheckHWnFWProfile -c loose [SUCCESS] The hardware and firmware matches supported profile for server=ORACLE_SERVER_X5-2L [root@dm01cel01 ~]#
.
Oracle 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>