Error in DBMS_RESOURCE_MANAGER calibrate_io in Databases >= 12.2

Update: Still present in 18.4

During the upgrade of some databases on the ODA X6 I recogniced a strange behavior in DBMS_RESOURCE_MANAGER.calibrate_io.

I use DBMS_RESOURCE_MANAGER.calibrate_io some times as a baseline test of my system to check what is possible. For workload tests there are many better tests than calibrate_io but as a baseline to check what a system can deliver it is very quick.

I’ve done some Tests with databases 12.1 to check what the ODA delivers before the upgrade to the newest patch level and some tests after the GI patch and last some patch after the database upgrade to 12.2.

First of all I got a difference between ACFS and ASM but this already known.

But I hoped that with the GI 12.2 the difference is decreasing or eliminated unfortunately this difference is still there and the numbers are similar to the numbers in 12.1.

Then I upgraded the databases to 12.2 and from my perspective there shouldn’t be a change in the numbers or not a large one because the I/O System is the same.

What I recognized first was a huge surprise:

Output of CALIBRATE_IO with a 12.1 database:

l_max_iops = v
l_max_mbps = 6146
l_actual_latency = 0


START_TIME END_TIME MAX_IOPS MAX_MBPS MAX_PMBPS LATENCY NUM_PHYSICAL_DISKS
------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ------------------
01-FEB-18 09.00.05.088782 PM 01-FEB-18 09.12.35.909195 PM 848985 6146 5130 0 2


Output of CALIBRATE_IO with a 12.2 database:

l_max_iops = 230505
l_max_mbps = 6342
l_actual_latency = 0

START_TIME END_TIME MAX_IOPS MAX_MBPS MAX_PMBPS LATENCY NUM_PHYSICAL_DISKS
------------------------------ ------------------------------ ---------- ---------- ---------- ---------- ------------------
02-MAR-18 03.41.15.055195 PM 02-MAR-18 03.51.15.099550 PM 230505 6342 5324 0 12

With a database 12.1 I got IOPS of 848985 and with a database 12.2 I got IOPS of 230505.

But then I recognized that the parameter NUM_PHYSICAL_DISKS changed somehow. What I now recognized is that if the number of physical disks you set as parameter for CALIBRATE_IO is 12 or above this parameter is taken but if the parameter is below 12 then 12 is taken as number of physical disks.

As I mentioned at the beginning there are better tools for performance measurement than DBMS_RESOURCE_MANAGER.calibrate_io!

In German: Wer misst misst Mist

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.