Block storage IO performance testing with ORION (ORacle IO Numbers)

Background

When a DBA gets the request to perform a storage IO test most will probably look to use the extremely poplar, and excellent SLOB (Silly Little Oracle Benchmark) by Kevin Closson, or maybe HammerDB or Dominic Giles’sSwingBench for Transactional / TPC-DS type tests.

However, if you find yourself under time or other constraints ORION (ORacle IO Numbers) maybe a good option for a recently built system.

Since Oracle 11g, the Oracle ORION package has bee shipped within the Oracle Database and Grid Infrastructure binaries $ORACLE_HOME/bin/orionand requires no downloads and only minimal set-up, so is really easy to be get started quickly.

Getting Started – Storage Preparation

Volume Creation

For the purposes of this Blog I have created 5 Volumes (100GB) of equal size on a Pure Storage FlashArray and noted their Serial numbers e.g.

Volume details from Pure Storage FlashArray

NOTE: for a Pure Storage FlashArray the Linux multipath wwid will be set as the Vendor ID + lowercase volume serial number e.g 3624a9370 50C939582B0F46C0000A8F82.

Configure Multipath

To make use of our newly created volumes more user friendly I added new entries to my existing multipath.conf file using the Volume Serial numbers previously obtained e.g. vi /etc/multipath.conf

     multipath {
            wwid        3624a937050c939582b0f46c0000a8f82
            alias       orion-vol1
     }
     multipath {
            wwid        3624a937050c939582b0f46c0000a8f83
            alias       orion-vol2
     }
     multipath {
            wwid        3624a937050c939582b0f46c0000a8f84
            alias       orion-vol3
     }
     multipath {
            wwid        3624a937050c939582b0f46c0000a8f85
            alias       orion-vol4
     }
     multipath {
            wwid 3624a937050c939582b0f46c0000a8f87
            alias orion-vol5
     }

Update multipath Configuration

Flush unused multipath devices

[root@z-oracle ~]# multipath -F

Reload multipath configuration:

[root@z-oracle ~]# service multipathd reload

Load and display multipath configuration, device mapper and other components

[root@z-oracle ~]# multipath -v2
[root@z-oracle ~]# multipath -ll

Configure UDEV rules

Now we have new aliases defined we can use theses to create a udev rule to allow Oracle access to these volumes, this avoids the need to run OROIN as root. Add the new entries using the aliases defined above. e.g. vi /etc/udev/rules.d/99-oracle-orion.rules

ENV{DM_NAME}=="orion-vol1", OWNER:="oracle", GROUP:="oinstall", MODE:="660", SYMLINK+="orion/$env{DM_NAME}"
ENV{DM_NAME}=="orion-vol2", OWNER:="oracle", GROUP:="oinstall", MODE:="660", SYMLINK+="orion/$env{DM_NAME}"
ENV{DM_NAME}=="orion-vol3", OWNER:="oracle", GROUP:="oinstall", MODE:="660", SYMLINK+="orion/$env{DM_NAME}"
ENV{DM_NAME}=="orion-vol4", OWNER:="oracle", GROUP:="oinstall", MODE:="660", SYMLINK+="orion/$env{DM_NAME}"
ENV{DM_NAME}=="orion-vol5", OWNER:="oracle", GROUP:="oinstall", MODE:="660", SYMLINK+="orion/$env{DM_NAME}"

Reload UDEV rules as the root user using ‘udevadm trigger’ to set ownership and create links to the orion directory.

[root@z-oracle ~]# udevadm trigger

[root@z-oracle ~]# ls -l /dev/mapper/orion-vol*
lrwxrwxrwx 1 root root 8 Mar 4 14:22 /dev/mapper/orion-vol1 -> ../dm-20
lrwxrwxrwx 1 root root 8 Mar 4 14:22 /dev/mapper/orion-vol2 -> ../dm-24
lrwxrwxrwx 1 root root 8 Mar 4 14:22 /dev/mapper/orion-vol3 -> ../dm-23
lrwxrwxrwx 1 root root 8 Mar 4 14:22 /dev/mapper/orion-vol4 -> ../dm-21
lrwxrwxrwx 1 root root 8 Mar 4 14:22 /dev/mapper/orion-vol5 -> ../dm-25

Setting-Up Orion

Now we have prepared and presented our storage we can configure Orion, by default Orion looks for orion.lun, you can also use alternative configuration files by using the testname switch. (Example bellow)

[oracle@z-oracle orion_test]$ cat orion.lun 
/dev/mapper/orion-vol1
/dev/mapper/orion-vol2
/dev/mapper/orion-vol3
/dev/mapper/orion-vol4
/dev/mapper/orion-vol5

Running ORION

Orion support 5 types of workload tests Simple, Normal, Advanced, DSS and OLTP. (example output from orion -help

   simple   - Tests random small (8K) IOs at various loads,
            then random large (1M) IOs at various loads.
  normal   - Tests combinations of random small (8K) IOs and 
            random large (1M) IOs.
  advanced - Tests the workload specified by the user 
            using optional parameters.
  dss      - Tests with random large (1M) IOs at increasing 
            loads to determine the maximum throughput.
  oltp     - Tests with random small (8K) IOs at increasing 
            loads to determine the maximum IOPS.

NOTE: orion requires you to provide a full path e.g. $ORACLE_HOME/bin/orion , if you try to call without providing a full path orion will return an ORA-56727 error.

ORA-56727: orion must be invoked using its full, absolute path

The Orion help provides a number of examples to help you get started, in my next Blog post I will provide further examples and share the output created.

For a preliminary set of data
-run simple 
For a basic set of data
-run normal 
To evaluate storage for an OLTP database
-run oltp 
To evaluate storage for a data warehouse
-run dss 
To generate combinations of 32KB and 1MB reads to random locations
-run advanced 
-size_small 32 -size_large 1024 -type rand 
-matrix detailed
To generate multiple sequential 1MB write streams, simulating RAID0 striping
-run advanced 
-simulate RAID0 -write 100 -type seq
-matrix col -num_small 0

2 comments

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s