The Perfmon Reference Guide

Introduction

Perfmon in Cricket is a bit tricky to master but ultimately worth it if you wish to do long-term performance trending on the many useful perfmon counters in NT.

One thing which makes it so tricky to use perfmon counters is that many of them are "raw" counters which require the use of derived, and computed historical data to extract any meaning from them. RRDtool makes it easy to perform the computations. With a bit of research you can easily discover what you need to feed into the Cricket configuration to get useful data.

Assumptions

This document assumes the following. You have a working Cricket installation, you have some knowledge of Perfmon and how it works (run perfmon.exe for a crash course), you're attempting to extract data from a box running the Windows(tm) operating system, you have some knowledge of RPN (Reverse Polish Notation), and finally you feel comfortable to make very light modifications to the Cricket code during the "discovery process".

ds-source Parameters

Here is a breakdown of what the perfmon ds-source requires to operate:

perfmon:host-name:object name:counter name:instance name:special options

Collecting Data Part 1

There are many types of perfmon counters. They for the most part all require different calculations to give cooked data from the raw numbers. To help aid in figuring out what kind of counter is what, there is a program with cricket in utils called perfInfo.pl. For the purpose of this demonstration, we'll collect on the % Processor Time counter.

perfInfo.pl accepts arguments similar to what Cricket uses for data collection. You can run perfInfo.pl -h to get a list of all the switches it needs.

Since we don't know what kind of counter % Processor Time is, we ask perfInfo.pl to tell us.

"C:/Cygwin/bin/bash.exe"-2.03$ perl perfInfo.pl -o processor -c '% processor ti
m-i '_total'
* Setting server to .
* Getting counter type(s) for % processor time
        * Traversing multiple counters for % processor time
                * Found!
                * % processor time->_total is counter: PERF_100NSEC_TIMER_INV

Formulas are from MSDN - subject to change. Author of this program takes no
responsibilities for inaccurate information!

Symbols:
TB   Time base. If TB is not used in the calculation, then it indicates the
     units of the raw data.
B    The base value used for calculating performance data types that require
     base.


Platform SDK

PERF_100NSEC_TIMER_INV

Timer for when the object is not in use.

Element        Value
X              CounterData
Y              100NsTime
Time base      100Ns
Data size      8   bytes
Display suffix %
Calculation    100*(1-(X1-X0)/(Y1-Y0))

=end
        * Traversing multiple counters for % processor time