Thursday, January 16, 2014

Using Oracle Orion for IO Calibration

ORION is a tool provided by Oracle to calibrate the IO of storage you are planning to use for database server. Some salient features of this tool are as follows

·         Oracle provided tool which can be downloaded separately but also comes with Oracle 11.2 and is available under ORACLE_HOME/bin directory.

·         Tests performance for small random I/Os (8K chunks, usually for OLTP) and large Sequential/Random I/Os (1 MB chunks, usually for DSS). I/O size can be changed during test.

·         Test can be performed for either small random I/O or large sequential/random I/O or a mixture of both.

·         Output generates 3 .csv files: %iops.csv (Throughput results),%lat.csv (Latency results) and %mbps.csv (Transfer Rate).

·         Output files contain tables/matrices. Each column of a matrix represents tests with the same small IO load, but varying large I/O loads. Likewise, each row represents data point tests with same large I/O load, but varying small I/O loads.

·         In a .csv output file, there will be only one row in the matrix if test was done for small random I/Os only.

·         In a .csv output file, there will be only one column in the matrix if test was done for large random/sequential I/Os only.

·         In a .csv file, there will be multiple rows and multiple columns in the matrix if test was done on a combination of small and large I/Os.

 

Before moving forward, I would recommend reading some basic concepts about Orion from the official documentation.  Please go through the following document. 

Calibration with the Oracle Orion Calibration Tool

How Orion works

To perform IO calibration test, first we need to identify the LUN/Disk we will be using to store datafiles (This LUN could be used as a file system or as an ASM disk). For example, we have a LUN /dev/sdc1 in our Linux server which we will be using in this example to store the datafiles. This LUN is from local disk array where we have total 8 physical disks and after configuring RAID 10, we have 4 physical disks behind this LUN. Second step is to create a .lun file under the same directory where Orion executable is available. In case of 11.2 (and probably in later releases also), it will be under ORACLE_HOME/bin directory. Go to ORACLE_HOME/bin directory and create a file <test_name>.lun (if you want to name your test as “simpletest”, your .lun file name would be simpletest.lun). During the test all files which will be created, will have a name starting with “simpletest_”. This file should contain a single row as follows /dev/sdc1. I would recommend testing one LUN at a time because different LUNs may have different physical characteristics and number of disks involved.

Performing Tests

I performed a variety of tests using Orion. Following are the details of each Test performed. Invoke orion from $ORACLE_HOME/bin and output files will also be created in the same directory.Note: Make sure that you are performing a test on a LUN not currently in use and with no access. Also note that if you are testing WRITE operation, it will corrupt all data on this LUN.


Simple: It tested small I/Os of 8K size, large I/Os of 1M size, checked for Random Access only, Write ratio 0%, Read ratio100%, tested small random and large random access separately from each other. This did not take care of RAID0 striping

./orion -run simple -testname simpletest -num_disks 4

See details and graphs bellow which are based on the output files generated by the test


























Detailed: It tested small I/Os of 8K size, large I/Os of 1M size, checked for Random Access only, Write ratio 20%, Read ratio 80%, tested small random and large random access independently from each other. This simulated RAID0 striping across 4 disks

./orion -run advanced -testname detailedtest -size_small 8 -size_large 1024 -type rand -simulate raid0 -write 20 -duration 60 -matrix basic cache_size=1024 -num_disks 4


           See details and graphs bellow which are based on the output files generated by the test




























Detailed Mixed I/Os: It tested small I/Os of 8K size, large I/Os of 1M size, tested for Random Access only, Write ratio 20%, Read ratio 80%, tested small random and large random access in combinations. This simulated RAID0 striping across 4 disks

./orioin -run advanced -testname detailedtest -size_small 8 -size_large 1024 -type rand -simulate raid0 -write 20 -duration 60 -matrix basic cache_size=1024 -num_disks 4

See details and graphs bellow which are based on the output files generated by the test.
























OLTP_ReadOnly: It tested small I/Os of 8K size, did not test large I/Os, tested for Random Access only, Write ratio 0%, Read ratio 100%, tested small random access only (Completely ignored large access). This did not take care of RAID01 striping


./orion -run oltp -testname detailedtest -num_disks 4

See details and graphs bellow which are based on the output files generated by the test.



























OLTP_ReadWrite: It tested small I/Os of 8K size, did not test large I/Os, tested for Random Access only, Write ratio 20%, Read ratio 80%, tested small random access only (Completely ignored large access). This simulated RAID0 striping across 4 disks.

-run advanced -testname detailedtest -num_large 0 -size_small 8 -type rand -simulate concat -write 20 -duration 60 -matrix row -num_disks 4 cache_size=1024

See details and graphs bellow which are based on the output files generated by the test.




No comments: