Wednesday, 9 August 2017

Oracle : Experiment on filesystemio_options

Careful: Results may vary based on configuration options and hardware.

My experiment on a very low power system(laptop):

SQL> alter system set filesystemio_options=asynch scope=spfile;

System altered.

SQL> startup force;
ORACLE instance started.

Total System Global Area 1570009088 bytes
Fixed Size                  2253584 bytes
Variable Size             889195760 bytes
Database Buffers          671088640 bytes
Redo Buffers                7471104 bytes
Database mounted.
Database opened.
SQL>  select status from V$IO_CALIBRATION_STATUS;

STATUS
-------------
IN PROGRESS

------From another session after above change
SET SERVEROUTPUT ON
11:30:51 SQL> DECLARE
lat INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
--DBMS_RESOURCE_MANAGER.CALIBRATE_IO(, ,iops, mbps, lat);
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (28, 10, iops, mbps, lat);
DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops);
DBMS_OUTPUT.PUT_LINE ('latency = ' || lat);
DBMS_OUTPUT.PUT_LINE ('max_mbps = ' || mbps);
end;
/11:30:59   2  11:30:59   3  11:30:59   4  11:30:59   5  11:30:59   6  11:30:59   7  11:30:
59   8  11:30:59   9  11:30:59  10  11:30:59  11  11:30:59  12
max_iops = 84
latency = 11
max_mbps = 31

PL/SQL procedure successfully completed.

Elapsed: 00:13:13.69
----------End---------------------------------

SQL> alter system set filesystemio_options=setall scope=spfile;

System altered.

SQL> startup force
ORACLE instance started.

Total System Global Area 1570009088 bytes
Fixed Size                  2253584 bytes
Variable Size             889195760 bytes
Database Buffers          671088640 bytes
Redo Buffers                7471104 bytes
Database mounted.
Database opened.

------From another session after above change
11:46:01 SQL> SET SERVEROUTPUT ON
11:46:11 SQL> DECLARE
lat INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
--DBMS_RESOURCE_MANAGER.CALIBRATE_IO(, ,iops, mbps, lat);
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (28, 10, iops, mbps, lat);
DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops);
DBMS_OUTPUT.PUT_LINE ('latency = ' || lat);
DBMS_OUTPUT.PUT_LINE ('max_mbps = ' || mbps);
end;
/11:46:21   2  11:46:21   3  11:46:21   4  11:46:21   5  11:46:21   6  11:46:21   7  11:46:
21   8  11:46:21   9  11:46:21  10  11:46:21  11  11:46:21  12
max_iops = 47
latency = 20
max_mbps = 37

PL/SQL procedure successfully completed.

Elapsed: 00:10:39.87
----------End---------------------------------
SQL> alter system set filesystemio_options=directIO scope=spfile;

System altered.

SQL> startup force
ORACLE instance started.

Total System Global Area 1570009088 bytes
Fixed Size                  2253584 bytes
Variable Size             889195760 bytes
Database Buffers          671088640 bytes
Redo Buffers                7471104 bytes
Database mounted.
Database opened.
SQL>
------From another session after above change
12:02:18 SQL> SET SERVEROUTPUT ON
12:02:22 SQL> DECLARE
lat INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
--DBMS_RESOURCE_MANAGER.CALIBRATE_IO(, ,iops, mbps, lat);
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (28, 10, iops, mbps, lat);
DBMS_OUTPUT.PUT_LINE ('max_iops = ' || iops);
DBMS_OUTPUT.PUT_LINE ('latency = ' || lat);
DBMS_OUTPUT.PUT_LINE ('max_mbps = ' || mbps);
end;
/12:02:35   2  12:02:35   3  12:02:35   4  12:02:35   5  12:02:35   6  12:02:35   7  12:02:35   8  12:02:35   9  12:02:35  10  12:02:35  11  12:02:35  12
max_iops = 57
latency = 16
max_mbps = 12

PL/SQL procedure successfully completed.

Elapsed: 00:12:10.24
----------End---------------------------------

Let me know if u don't agree with method or anything else.
Still wip.

No comments:

Post a Comment