Some times ago I provided a way to see the ASM Preferred Read feature in action thanks to Kevin Closson’s SLOB kit and my asmiostat utility into this blog post. Since that time Kevin released SLOB 2.

One of its new feature is that it now supports RAC so that we don’t need to launch SLOB on each node anymore as it has been done into my previous post.

Let’s see how we can show the ASM preferred read feature in action and collect performance metrics thanks to SLOB 2.

First, let’s create two services SLOB_BDT1 and SLOB_BDT2 respectively on BDT_1 and BDT_2 instances:

$ srvctl add service -s SLOB_BDT2 -d BDTO -r BDTO_2
$ srvctl start service -s SLOB_BDT2 -d BDTO
$ srvctl add service -s SLOB_BDT1 -d BDTO -r BDTO_1
$ srvctl start service -s SLOB_BDT1 -d BDTO
$ srvctl status service -s SLOB_BDT1 -d BDTO
Service SLOB_BDT1 is running on instance(s) BDTO_1
$ srvctl status service -s SLOB_BDT2  -d BDTO
Service SLOB_BDT2 is running on instance(s) BDTO_2

Now let’s configure the slob.conf so that the SLOB’s sessions will be distributed over those 2 services with a “round-robin” manner and no updates triggered:

$ grep -i sqlnet slob.conf
ADMIN_SQLNET_SERVICE=slob_bdt
SQLNET_SERVICE_BASE=slob_bdt
SQLNET_SERVICE_MAX=2
$ grep -i UPDATE_PCT slob.conf | head -1
UPDATE_PCT=0

Let’s configure the ASM preferred read parameters:

SQL>  alter system set asm_preferred_read_failure_groups='BDT_ONLY.WIN' sid='+ASM1';

System altered.

SQL> alter system set asm_preferred_read_failure_groups='BDT_ONLY.JMO' sid='+ASM2';

System altered.

As we want to see the ASM preferred read in action, we need to configure our BDT_1 and BDT_2 instances in such a way that the SLOB run will generate physical IOs.

For this purpose, I use those settings:

alter system set "_db_block_prefetch_limit"=0 scope=spfile sid='*';
alter system set "_db_block_prefetch_quota"=0  scope=spfile sid='*';
alter system set "_db_file_noncontig_mblock_read_count"=0 scope=spfile sid='*';
alter system set "cpu_count"=1 scope=spfile sid='*';
alter system set "db_cache_size"=4m scope=spfile sid='*';
alter system set "shared_pool_size"=500m scope=spfile sid='*';
alter system set "sga_target"=0 scope=spfile sid='*';

You can find a very good description, on how to use SLOB for PIO testing into this flashdba’s blog post.

Now we are ready to launch the SLOB 2 run:

$ ./runit.sh 16

and see the preferred read in action as well as its associated performance metrics thanks to my asmiostat utility that way:

$ ./real_time.pl -type=asmiostat -dg=BDT_ONLY -show=dg,inst,fg

with the following result:

asm_preferred_read_slob2

Great, data have been read from their preferred read failure groups ;-) We can also see their respectives performance metrics.

Conclusion:

Thanks to Kevin’s SLOB 2 kit and my asmiostat utility we are now able to check the ASM preferred read performance metrics with a single SLOB run.

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