declare
v_max_iops BINARY_INTEGER;
v_max_mbps BINARY_INTEGER;
v_act_lat BINARY_INTEGER;
begin
dbms_resource_manager.CALIBRATE_IO(1,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;
通过此SQL也可以查询:
select * from DBA_RSRC_IO_CALIBRATE
可以查询到本次IO校准的各个性能指标值如下,本次测试的存储性能,每秒持续读取数据块请求的最大数量(max_iops)为241866,每秒最大可读取(max_mbps)为2630mbps,单个进程每秒最大可读取(max_pmbps)为2536mbps,读取数据块请求出现有0次延迟
性能判断
通过校准我们得到了一些指标,那么怎样的存储性能才是满足业务需求的呢?严格意义上说,当然是IOPS越大,吞吐量越大越好,但是成本也会增加,因此实际情况下还是要根据用户业务的实际情况判断,合适就可以了。用户的IO需求可以通过业务高峰期AWR报告进行查看,通过生成业务高峰期的AWR报告,查看报告中的other instance activity stats这部分内容获取,以某用户的AWR性能报告为例,重点关注这几个指标[physical read total IOrequests],[ physical read total bytes],[ physical write total IO requests],[ physicalwrite total IO requests]每秒的值,因为我们IO校准也是以每秒为单位的统计。
我们可以计算出物理读和写每秒总的请求为70.74+80.62≈151次,物理读和写的每秒的大小为1.32+1.09≈2.41mbs=19.28mbps,有了这个参照,那我们存储校准的最大IOPS就应该不能低于151,每秒的吞吐量也不能低于19.28mbps,如果IO校准接近或者小于这个值就证明存储性能出现了严重的瓶颈,例如我们测试用的机器就无法满足这个用户的IO性能需求,需要提升性能以满足业务的需要。