Database Journal
MS SQL Oracle DB2 Access MySQL PostgreSQL Sybase PHP SQL Etc SQL Scripts & Samples Links Database Forum

» Database Journal Home
» Database Articles
» Database Tutorials
MS SQL
Oracle
DB2
MS Access
MySQL
» RESOURCES
Database Tools
SQL Scripts & Samples
Links
» Database Forum
» Sitemap
Free Newsletters:
DatabaseDaily  
News Via RSS Feed


follow us on Twitter
Database Journal |DBA Support |SQLCourse |SQLCourse2
 

Featured Database Articles

Oracle

Posted Sep 6, 2007

Using Orion Calibration to check I/O numbers

By Tarry Singh

Brief intro

Oracle has been a longstanding supporter of the Linux operating system and as you know, they have been pushing Enterprise Linux for quite some time and even have a full-fledged team that only works on and develops Linux tools. One such tool is Orion, and although it is currently in beta, and remains unsupported software, we do hope that Oracle will eventually make its Enterprise Linux robust enough to be a self-testing, self-automating and self-adjusting operating system.

Orion: What is it?

Orion is an I/O metrics testing tool. This tool is ideal to do capacity planning and to check how your storage is doing on your DAS, SAN or NAS. Orion has been specifically designed to simulate the workload using the same Oracle software stack. The following types of workloads are supported currently:

  • Small Random I/O: Best if you are testing it for an OLTP database to be installed on your system. Orion generates random I/O workload with a known percentage of read versus writes, given I/O size, and a given number of outstanding I/Os.
  • Large Sequential Reads: Typical DSS (Decision Support systems) or Data Warehousing applications, bulk copy, data load, backup and restore are typical activities that will fall into this category.
  • Large Random I/O: Sequential streams access disks concurrently and with disk striping (RAID that is); a sequential stream is spread across multiple disks, thus at disk level you may see multiple streams as random I/Os.
  • Mixed workloads: A combination of small random I/O and large sequential I/Os or even large random I/Os that allow you to simulate OLTP workloads of fixed random reads/writes and 512KB for backup workload of sequential streams.

Where can ORION be tested

DAS: Orion has been duly tested on DAS (Direct Attached Storage); actually, that is what we are doing now. I have a Maxtor external drive and have both my nodes, without any Oracle RAC database.

SAN: AS long as the LUNs are mapped to the local devices, Orion will test it.

NAS: Make sure to initialize the datafiles before running ORION.



Lets get started

  • Get the software first from Oracle’s site
  • Unzip it to your favourite location; I did it on our Oracle Enterprise Linux’s 5 GA’s tmp folder. On Linux do gunzip orion10.2_linux.gz and under Windows you just need to run the MSI file.
  • Create a file: We created a file called 11gtest.lun and added our shared disks that we will be using for Oracle 11g ASM and OCR files.
  • Add the shared disks to the file: We added our disks as such;
  • /dev/sdc1
    /dev/sdd1
    /dev/sde1
    /dev/sdf1
    
  • Use the 'dd' command to verify that all of the selected volumes or disks can be copied. Do 'man dd' to see the syntax.
  • [root@vm11g01 dev]# dd if=/dev/sdc1 of=/dev/null bs=32k count=1024
    1024+0 records in
    1024+0 records out
    33554432 bytes (34 MB) copied, 0.92155 seconds, 36.4 MB/s
    
  • Check your platform to see if it has the necessary libraries installed for asynchronous I/O. This library should be installed in Oracle Linux Version: libaio, windows supports asynchronous I/Os automatically.
  • OK all set, then we will start the test with the following command line:
  • [root@vm11g01 tmp]# ./orion -run simple -testname 11gtest -num_disks 4
    ORION: ORacle IO Numbers -- Version 10.2.0.1.0
    Test will take approximately 30 minutes
    Larger caches may take longer
    

What happens now is that the I/O load levels are generated and recorded in the output files. Several output files are generated:

1.  11gtest_summary contains the following data input parameters, max throughput, max I/O rate and minimum latency observed.:

ORION VERSION 10.2.0.1.0

Commandline:
-run simple -testname 11gtest -num_disks 4 

This maps to this test:
Test: 11gtest
Small IO size: 8 KB
Large IO size: 1024 KB
IO Types: Small Random IOs, Large Random IOs
Simulated Array Type: CONCAT
Write: 0%
Cache Size: Not Entered
Duration for each Data Point: 60 seconds
Small Columns:,      0
Large Columns:,      0,      1,      2,      3,      4,      5,      6,      7,      8
Total Data Points: 29

Name: /dev/sdc1	Size: 536854528
Name: /dev/sdd1	Size: 213893120
Name: /dev/sde1	Size: 4293563904
Name: /dev/sdf1	Size: 4293563904
4 FILEs found.

Maximum Large MBPS=34.47 @ Small=0 and Large=2
Maximum Small IOPS=185 @ Small=17 and Large=0
Minimum Small Latency=7.45 @ Small=1 and Large=0

2.  11gtest_mbps.csv: This file contains the data transfer rate (MBPS) for large random/sequential workloads. They contain, all CSV files by the way, two-dimensional data, which you have to import manually to get a graph or save it as an Excel file and then see if you can plot a graphical representation of the collected data. What does it look like?

Large/Small,      0,      1,      2,      3,      4,      5,      6,      7,      8,      9,     10,     11,    
  12,     13,     14,     15,     16,     17,     18,     19,     20
          1,  28.91
          2,  34.47
          3,  34.22
          4,  33.23
          5,  31.90
          6,  34.01
          7,  32.96
          8,  33.46

3.  11gtest_iops.csv: This contains I/O throughput results for small random workloads. And now take a look at the content of the file:

Large/Small,      1,      2,      3,      4,      5,      6,      7,      8,      9,     10,     11,     
 12,     13,     14,     15,     16,     17,     18,     19,     20
          0,    134,    153,    160,    170,    170,    169,    176,    180,    161,    181,    179,    
		   178,    183,    178,    177,    182,    185,    179,    173,    172
          1
          2
          3
          4
          5
          6
          7
          8

4.  11gtest_lat.csv: Latency results for small random workloads. Sample data:

Large/Small,      1,      2,      3,      4,      5,      6,      7,      8,      9,     10,     11,     
 12,     13,     14,     15,     16,     17,     18,     19,     20
          0,   7.45,  13.01,  18.72,  23.52,  29.34,  35.34,  39.72,  44.23,  55.63,  55.08,  61.41,  
		   67.13,  70.80,  78.50,  84.43,  87.84,  91.72, 100.50, 109.49, 116.13
          1
          2
          3
          4
          5
          6
          7
          8

5.  11gtest_trace file: This is all unprocessed data. Sample of begin and end:

TEST START

Point 1 (small=0, large=0) of 29
Valid small 1 Valid large 1
Valid

ran (small): VLun = 0 Size = 9337875456
ran (small): Index = 0  Count = 8048  Avg Lat =   7.45
ran (small): nio=8048 nior=8048 niow=0 req w%=0 act w%=0
ran (small): my   1 oth   0 iops 134 size 8 K lat   7.45 ms bw =   1.05 MBps dur  59.97 s READ

Point 2 (small=1, large=0) of 29
Valid small 1 Valid large 1
Valid

ran (small): VLun = 0 Size = 9337875456
ran (small): Index = 0  Count = 4610  Avg Lat =  13.00
ran (small): Index = 1  Count = 4599  Avg Lat =  13.02
ran (small): nio=9209 nior=9209 niow=0 req w%=0 act w%=0
ran (small): my   2 oth   0 iops 153 size 8 K lat  13.01 ms bw =   1.20 MBps dur  59.94 s READ

Point 3 (small=2, large=0) of 29
Valid small 1 Valid large 1
Valid

ran (small): VLun = 0 Size = 9337875456
ran (small): Index = 0  Count = 3205  Avg Lat =  18.70
ran (small): Index = 1  Count = 3197  Avg Lat =  18.75
ran (small): Index = 2  Count = 3199  Avg Lat =  18.73
ran (small): nio=9601 nior=9601 niow=0 req w%=0 act w%=0
ran (small): my   3 oth   0 iops 160 size 8 K lat  18.72 ms bw =   1.25 MBps dur  59.94 s READ
-
-
-
-
Point 27 (small=0, large=6) of 29
Valid small 1 Valid large 1
Valid

ran (large): VLun = 0 Size = 9337875456
ran (large): Index = 0  Count = 279  Avg Lat = 213.26
ran (large): Index = 1  Count = 281  Avg Lat = 212.17
ran (large): Index = 2  Count = 282  Avg Lat = 211.49
ran (large): Index = 3  Count = 281  Avg Lat = 212.03
ran (large): Index = 4  Count = 279  Avg Lat = 213.37
ran (large): Index = 5  Count = 282  Avg Lat = 211.42
ran (large): Index = 6  Count = 281  Avg Lat = 212.17
ran (large): nio=1965 nior=1965 niow=0 req w%=0 act w%=0
ran (large): my   7 oth   0 iops  32 size 1024 K lat 212.27 ms bw =  32.96 MBps dur  59.61 s READ

Point 28 (small=0, large=7) of 29
Valid small 1 Valid large 1
Valid

ran (large): VLun = 0 Size = 9337875456
ran (large): Index = 0  Count = 247  Avg Lat = 240.04
ran (large): Index = 1  Count = 247  Avg Lat = 240.69
ran (large): Index = 2  Count = 245  Avg Lat = 240.33
ran (large): Index = 3  Count = 251  Avg Lat = 235.70
ran (large): Index = 4  Count = 254  Avg Lat = 232.80
ran (large): Index = 5  Count = 250  Avg Lat = 235.24
ran (large): Index = 6  Count = 247  Avg Lat = 240.24
ran (large): Index = 7  Count = 243  Avg Lat = 243.83
ran (large): nio=1984 nior=1984 niow=0 req w%=0 act w%=0
ran (large): my   8 oth   0 iops  33 size 1024 K lat 238.56 ms bw =  33.46 MBps dur  59.30 s READ

Point 29 (small=0, large=8) of 29
Valid small 1 Valid large 1
Valid



TEST END

External disk used:

Disk I would advise: FireWire 400/800, 500gb disk

Conclusion

Orion is a great tool to test the I/O readiness of your hardware. How often have you gone through frustrating moments, only to realize that your I/O was a disaster. I will be carrying this Maxtor drive with me soon. Remember, an improperly configured disk that performs poorly on I/O performance, is a not the disk you would want to run your Oracle RAC on.

» See All Articles by Columnist Tarry Singh



Oracle Archives

Comment and Contribute

 


(Maximum characters: 1200). You have characters left.

 

 




Latest Forum Threads
Oracle Forum
Topic By Replies Updated
Oracle Data Mining: Classification jan.hasller 0 July 5th, 07:19 AM
Find duplicates - Unique IDs Lava 5 July 2nd, 08:30 AM
no matching unique or primary key rcanter 1 April 25th, 12:32 PM
Update values of one table based on condition of values in other table using Trigger Gladiator 3 February 29th, 06:01 PM


















Thanks for your registration, follow us on our social networks to keep up-to-date