For a general overview of how the performance counter system works, read through the description found in the SDK here:
<sdk dir>/doc/ontapi/ontapi_1.11/perf/index.html
Of specific interest is the explanation of how to interpret the various counter types:
- raw: single counter value is used
- delta: change in counter value between two samples is used
- rate: delta divided by the time in seconds between samples is used
- average: delta divided by the delta of a base counter is used
- percent: 100*average is used
To understand more about a specific counter you can get details from the perf-object-counter-list-info API call:
<counter-info>
<name>avg_latency</name>
<desc>Average latency in microseconds for all operations on the volume</desc>
<privilege-level>basic</privilege-level>
<properties>average</properties>
<unit>microsec</unit>
<base-counter>total_ops</base-counter>
</counter-info>
Armed with this info, you should be able to interpret and present the latency values you are interested in. Make two calls to perf-object-get-instances, with a delay between them. Include both avg_latency and total_ops ( the base counter ).
From above we know 'average: delta divided by the delta of a base counter is used'. So perform the following calculation:
(avg_latency2-avg_latency1) / (total_ops2-total_ops1) => average latency in microseconds
To sanity test your application, compare your output with the output from ONTAP via the CLI:
Actual numbers: (598624907-596952932) / (149998706-149866390) => 12.636
filer1> stats show volume:vol0:avg_latency
volume:vol0:avg_latency:12.57us
Additionally, I'm not sure what language you are working with, but within the samples directory of the SDK there are a couple of perf related applications.
-ryan