In this previous post (You should read it to understand what will follow) I explained how my asmiostat utility could be useful for the Exadata community. For this, I made one assumption:

  • Each storage cell constitutes a separate failure group (in most common Exadata configuration) (see Expert Oracle Exadata Book for more details)

And I concluded with:

  • In case your Exadata configuration does not follow this rule:  One  failure group per storage cell, just be aware that I will update my asmiostat utility so that it will be able to group by storage cells in any case (thanks to the IP located into the disks path). I’ll keep you posted once ready.

Here we are: I updated my asmiostat utility so that you can choose to focus on IP (Exadata Cells) instead of Failgroup.

So that now, you can measure the performance and the IO load across the DB servers and the Cells that way:

./ -type=asmiostat -show=ip,inst

with the following ouput:

Collecting 1 sec....
03:32:18                                                               Kby      Avg       AvgBy/    Read                Kby       Avg        AvgBy/    Write
03:32:18   INST     DG          IP (Cells)        DSK        Reads/s   Read/s   ms/Read   Read      Errors   Writes/s   Write/s   ms/Write   Write     Errors
03:32:18   ------   ---------   ---------------   --------   -------   ------   -------   ------    ------   --------   -------   --------   ------    ------
03:32:18   +ASM                                              48        1600     10.6      34133     0        7          144       18.0       21065     0
03:32:18   +ASM                      12        424      13.4      36181     0        3          48        32.4       16384     0
03:32:18   +ASM                      36        1176     9.7       33451     0        4          96        7.2        24576     0

You can also choose to filter on some IP adresses (see the help):

./ -type=asmiostat -help

Usage: ./ -type=asmiostat [-interval] [-count] [-inst] [-dg] [-fg] [-ip] [-show] [-help]
 Default Interval : 1 second.
 Default Count    : Unlimited

  Parameter    Comment                                                      Default
  ---------    -------                                                      -------
  -INST=       ALL - Show all Instance(s)                                   ALL
               CURRENT - Show Current Instance
               INSTANCE_NAME,... - choose Instance(s) to display

  -DG=         Diskgroup to collect (comma separated list)                  ALL
  -FG=         Failgroup to collect (comma separated list)                  ALL
  -IP=         IP (Exadata Cells) to collect (Wildcard allowed)             ALL
  -SHOW=       What to show: inst,fg|ip,dg,dsk (comma separated list)       DG

Example: ./ -type=asmiostat
Example: ./ -type=asmiostat -inst=+ASM1
Example: ./ -type=asmiostat -dg=DATA -show=dg
Example: ./ -type=asmiostat -dg=data -show=inst,dg,fg
Example: ./ -type=asmiostat -show=dg,dsk
Example: ./ -type=asmiostat -show=inst,dg,fg,dsk
Example: ./ -type=asmiostat -show=ip -ip='%10%'


  • To get the asmiostat utility included into the script:  Click on the link, and then on the view source button and then copy/paste the source code. You can also download the script from this repository to avoid copy/paste (click on the link)
  • For a full description of my asmiostat utility see this post.

UPDATE: The asmiostat utility is not part of the script anymore. A new utility called has been created. See “ASM metrics are a gold mine. Welcome to, a new utility to extract and to manipulate them in real time” for more information.