File: perfmon.html

package info (click to toggle)
cricket 1.0.5-9
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 1,480 kB
  • ctags: 390
  • sloc: perl: 8,287; sh: 920; ansic: 318; makefile: 62; sql: 16
file content (156 lines) | stat: -rw-r--r-- 5,632 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
  <head>
    <title>Perfmon Reference Guide</title>
  </head>
  <body>
    <h1>The Perfmon Reference Guide</h1>
    <div>
      <h2>Introduction</h2>
      <p>
        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.
      </p>
      <p>
        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.
      </p>
    </div>

    <div>
      <h2>Assumptions</h2>
      <p>
        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".
      </p>
    </div>

    <div>
      <h2>ds-source Parameters</h2>
      <p>
        Here is a breakdown of what the perfmon ds-source requires
        to operate:
      </p>
      <p>
        <tt>perfmon:host-name:object name:counter name:instance
        name:special options</tt>
      </p>
      <ul>
        <li>
          <tt>perfmon</tt> tells Cricket that it's to call on the
          perfmon libraries to perform data collection. This is a
          required field.
        </li>
        <li>
          <tt>host-name</tt> tells Cricket what host name to
          connect to. In most cases you'll want to set this to
          <tt>%auto-target-name%</tt>. This is a required
          field.
        </li>
        <li>
          <tt>object name</tt> tells Cricket what object, or class
          to collect sub-classes from. This is something like
          System, PhysicalDisk, Memory, Network Interface, or
          Server. Using <tt>perfmon.exe</tt> can give you an idea
          of what is available on a particular system. While this
          field isn't required, you'll want to put something there
          99% of the time.
        </li>
        <li>
          <tt>counter name</tt> tells Cricket what counter, or
          sub-class to collect counter data from. This is
          something like % Processor Time, Total Bytes/sec, or
          Threads. This is required only if something is in
          <tt>object name</tt>.
        </li>
        <li>
          <tt>instance name</tt> tells Cricket what instance to
          fetch from a counter. Most counters don't have
          instances, a few do such as PhysicalDisk, and Swap. Most
          instance counters have a '_Total' counter which is a
          combined total of all the instances. This is not a
          required field unless a counter has instances.
        </li>
        <li>
          <tt>special options</tt> tells Cricket special
          processing options detailed later in this document. It
          takes the following arguments: perftime, perftime100ns,
          perffreq, and noscale. Most cases you won't need to use
          any of these but some counters require or necessitate
          them.
        </li>
      </ul>
    </div>

    <div>
      <h2>Collecting Data Part 1</h2>
      <p>
        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 <tt>perfInfo.pl</tt>. For the purpose of this
        demonstration, we'll collect on the % Processor Time counter.
      </p>
      <p>
        <tt>perfInfo.pl</tt> accepts arguments similar to what
        Cricket uses for data collection. You can run
        <tt>perfInfo.pl -h</tt> to get a list of all the switches it
        needs.
      </p>
      <p>
        Since we don't know what kind of counter % Processor Time
        is, we ask <tt>perfInfo.pl</tt> to tell us.
      </p>
      <pre>
"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
      </pre>
    </div>
  </body>
</html>