oracle calibrate_io做IOPS和吞吐量测试

2020年6月9日 846点热度 0人点赞 0条评论

参考信息:
https://oracle-base.com/articles/misc/measuring-storage-performance-for-oracle-systems#calibrate_io

oracle 11g开始,推出了内置的IO测试包dbms_resource_manager.CALIBRATE_IO,原理和上文提到的Orion工具基本相同。

■先决条件
1、测试所用的数据库用户必须具有sysdba权限
2、Timed_statistics参数必须设为true,异步IO必须打开
3、只有一个I/O校准同时在一个数据库实例进行
【另外,经确认这个测试无法在pdb里面进行。】
【同时注意,不要在生产库随意进行IO性能测试。】

■可通过如下方式确定是否开启异步IO

SELECT d.name,
       i.asynch_io
FROM   v$datafile d,
       v$iostat_file i
WHERE  d.file# = i.file_no
AND    i.filetype_name  = 'Data File';

■如果异步IO是关闭的,可以通过以下方式开启
ALTER SYSTEM SET filesystemio_options=setall SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
STARTUP;

■DBMS_RESOURCE_MANAGER.CALIBRATE_IO存储过程
使用DBMS_RESOURCE_MANAGER.CALIBRATE_IO存储过程访问Oracle数据库的I/O校准功能,该存储过程可以模拟出一系列密集的只读工作量,针对数据文件产生1M的随机IO,从而能确定最大IOPS(每秒I / O请求)和MBPS(每秒M单位的IO)。该过程模拟产生数据块大小的随机读写(默认为8k),其会针对所有实例的所有数据文件都进行测试。
输入参数num_physical_disks用于指定数据库存储所用物理磁盘数。
输入参数max_latency指定目标延迟(以毫秒为单位的数据库块大小的IO请求的最大容忍延迟,一般IO平均等待在10ms左右是良好的表现)。
输出参数max_iops,最大的IOPS
输出参数actual_latency,这个库的平均延迟

■测试脚本

SET SERVEROUTPUT ON
DECLARE
  l_latency    PLS_INTEGER;
  l_iops    PLS_INTEGER;
  l_mbps    PLS_INTEGER;
BEGIN
        DBMS_RESOURCE_MANAGER.calibrate_io (num_physical_disks => 1,
            max_latency            => 20,
            max_iops            => l_iops,
            max_mbps            => l_mbps,
            actual_latency        => l_latency);
   DBMS_OUTPUT.put_line('Max IOPS = ' || l_iops);
   DBMS_OUTPUT.put_line('Max MBPS = ' || l_mbps);
   DBMS_OUTPUT.put_line('Latency  = ' || l_latency);
 END;
/

■结果输出样例

Note: The high I/O latencies from the calibration run indicate that the calibration I/Os are being serviced mostly from disk. If your storage has a cache, you may achieve better results by rerunning.  Rerunning will warm or populate the storage cache.
Max IOPS = 714
Max MBPS = 121
Latency  = 37

liking

我是雪人

文章评论