Monday, December 17, 2012

PIOB started

I was looking for a tool to measure I/O from Oracle to disks. The only tools were available ORION and SLOB. These are very good tools and they do the job, however these have some limitations.
First of all they are OS dependable. Even SLOB that is mostly implemented in PL/SQL. It also uses Bash and one binary component for inter-process communication. It also uses AWR that should be licensed additionally.
I've decided I'll create something similar but without these limitations.
Couple of days of work and it is done.
It is named PIOB - PL/SQL Input/Output Benchmark (tool).

It generates different kinds of I/O using Oracle database means and measures it.

As it said, the PIOBs idea is same as SLOB (Silly Little Oracle Benchmark) - PIOB benchmarks disk I/O using Oracle.
You can use PIOB for similar tasks - tuning of disk subsystem on a machine where you have your Oracle.

How it works

   When you call PIOB_TOOL.RUN* it will create several Oracle Scheduler jobs for
   workers that you specified with *_WORKERS parameter(s).
   These jobs will simultaneously execute workers.
   Oracle I/O metrics will be saved just before workers start generating
   actual I/O and right after that.
   When you run PIOB_TOOL.REPORT the saved metrics will be used to calculate
   more commonly used metrics: IO/s for short random I/O and MB/s for long sequential I/O.

It can create any combination of 5 types of workload:
- Short Read - random reads by one DB block - index access.

- Long Read - random reads by multiple DB blocks - full table scans.
- Light Write - modification of one column in random table row: index access, one block modification, little redo.
- Heavy Write - modification of all columns in random range of table 256 rows: index range scan, multiple block modification, large redo.
- Redo Write - modification of all column in one table row: index range scan, same one block modification, large redo.

Other features of PIOB are:
 - it is OS and platform independent because it is implemented purely in
   Oracle SQL*Plus, SQL and PL/SQL;
 - it does not use Oracle AWR (AWR requires additional licensing);
 - it takes snapshots of only relevant performance metrics;
 - it is instrumented for monitoring its progress;
 - SEED table is tuned to have 1 row per 8K block for more precise calculation
   of random I/O;
 - it uses RECYCLE buffer of minimal size to reduce caching (can be turned off);
 - it keeps some configuration parameters in its repository;
 - its work can be limited by amount of work cycles or by timer;
 - it can be stopped anytime.

Of course it is free, GPLv3.

You can download it from PIOB SF project page https://sourceforge.net/projects/piob/?source=directory

Enjoy!