Calibrate IO from Oracle is a simple, easy to use tool and is available as part of the database Resource Manager. You will want to initially test this database feature ‘unofficially’ so that you are comfortable setting the required parameters before you actually run your baseline.
One of the most important components of your performance toolkit is having solid methods to create a baseline. This baseline methodology and subsequent metrics can easily become overthought and too complex making it difficult to setup and repeat. Better to build a standard set of easily repeatable tools in a controlled environment so that your baseline does not become its own project.
Once these tools have been identified, remove variables that are not inherent to your install. For example, you can and want to remove user activity while preserving the differences between the environments you are comparing (other than the change you’re testing against). Compare production on a certain tier of disks to non-production on another tier, or, production before your new SAN vs production once you have migrated. Keeping as much unchanged as possible helps to understand more about your overall environment and how well your tools work.
A complex baseline configuration can increase performance differentials that are not well understood, leading to ‘theories’. This in turn risks the confidence level you need to have with your baselines. Choose a tool that is easy to use and understand.
One such tool is Calibrate IO from Oracle. It is simple, easy to use and available as part of the database Resource Manager. You will want to initially test this database feature ‘unofficially’ so that you are comfortable setting the required parameters before you actually run your baseline. There are some considerations but I found that as long as you are consistent, you can use this across all databases in your enterprise and compile an overall picture of your enterprise install. This ‘picture’ helps us to understand how one instance/server configuration relates to another.
Calibrate IO is not a load test. There are better tools suited for simulating loads on a given environment. True load testing will give you a sense of how your application relates to your environment and Calibrate IO helps you to understand how your database relates to your IO systems.
The input parameters for the procedure (DBMS_RESOURCE_MANAGER.calibrate_io) can be varied on your initial test and tweaked until you feel you are comfortable with the settings for your environment. The parameters are;
1) Number of physical disks. If this is not known due to the nature of virtualized environments, choose a number that at least keeps Oracle from restricting the test. I chose 100 in a virtualized environment.
2) Max latency. This tells the calibrate tool what your latency tolerance is. I found that using the default of 20ms is fine.
You set your filesystemio_options to ‘ASYNC’ (just ASYNC) or ‘SETALL’ (direct IO or ASYNC). Test the difference between ASYNC and SETALL on a few runs so that you are confident that this is consistent.
I documented my results in a simple format as below;
Disks=100, max_latency = 20
START_TIME: 10-MAY-15 05.55.26.512105 PM
END_TIME: 10-MAY-15 06.08.06.140321 PM
You will obviously want to start in your development and test environments and eventually move into production. The user community’s transaction bias is necessarily removed from the equation by setting the proper expectations up front and getting the required approval and maintenance window. You will want to be efficient in the production environment and so confidence in the tool will have been gained in your earlier experiences in non-prod.
Once you have one database documented, you can complete this process across multiple systems over time and gain useful information about your install. With Calibrate IO, you can see and document IO differences in operating systems, channels, disk subsystems, versions of Oracle and Oracle configurations. In addition to the information gathered on an individual instance, gather addition information for each instance/server combination.
ORACLE INSTANCE NAME : DATE OF TEST :
SERVER NAME/HARDWARE :
OS TYPE/RELEASE :
DISK SUBSYSTEM :
RAID CONFIGURATION :
DISK CHANNEL CONFIGURATION : (SAN/LOCAL/ISCSI/etc..)
DISK DRIVE TYPE :
RELATED OS CONFIGURATION PARAMETERS :
FILE SYSTEM TYPE :
Test parameters - Disks=100, max_latency = 20
Analyze the results of your test to better explain expectations for each type of system, capacity planning and support recommendations on hardware purchases. When proving out a new type of storage system, this information can help to settle ‘perceptions’ of differences and underlying performance concerns as well as setting new baselines. Store this information for keeps!
As a component of your took kit, Calibrate IO can give you some numbers to better understand your environment and help to reduce the uncertainties when looking at performance. Share this kind of information with your peers and project teams. You may be surprised at the level of interest the data from this and other simple tools can provide.
Check the following for more information: