Regarding the performance issues, you can resolve nearly all of it by modifying the perl script.
In the "netapp-ontapsdk-perf.pl" script, after change lines 321-322 to read:
Code:
$in->child_add_string("objectname", $obj_name); # line 321
if ($obj_name ne "lun") {
$instances = NaElement->new('instances');
$instances->child_add_string('instance', $instance_selected);
$in->child_add($instances);
}
$counters = NaElement->new('counters');
$counters->child_add_string('counter', $counter_selected);
$in->child_add($counters);
$out = $s->invoke_elem($in); # original line 322
In the original script, it queries the netapp for all instances of an object (volume, lun, etc) and all counters for each of those instances. What the above does is limit it to just the requested counter, and if we aren't querying for a lun, only the specific instance of the object.
The reason this doesn't work with luns is because they have strange names...like "/vol/volA/lun_name.lun : AbCdXySomeThing". The script strips off everything after the ".lun", so you don't see it on the graphs, but since it's part of the lun name on the netapp, it's required if we want to query for just a single instance. Since we don't have that data, when a lun is queried, we retrieve all luns (with just the one counter we want) and search for the instance we want.
Prior to the above modification the script took about 2.1 seconds per query to run on my server (a single CPU virtual machine w/1 GB RAM running RHEL4). Afterward, it took < .2 seconds for non lun queries, and about .4 for luns.