PERFMON(4) | Device Drivers Manual (i386) | PERFMON(4) |
perfmon
— CPU
performance-monitoring interface
cpu I586_CPU
cpu I686_CPU
options PERFMON
The perfmon
driver provides access to the
internal performance-monitoring capabilities of the Intel Pentium and
Pentium Pro CPUs. These processors implement two internal counters which can
be configured to measure a variety of events for either count or duration
(in CPU cycles), as well as a cycle counter which counts clock cycles. The
perfmon
driver provides a device-style interface to
these capabilities.
All access to the performance-monitoring counters is performed
through the special device file
“/dev/perfmon”. This device supports a
number of ioctl(2) requests, defined in
<machine/perfmon.h>
along
with the definitions of the various counters for both Pentium and Pentium
Pro processors.
NOTA BENE: The set of available events differs from processor to processor. It is the responsibility of the programmer to ensure that the event numbers used are the correct ones for the CPU type being measured.
The following ioctl(2) requests are defined:
PMIOSETUP
struct pmc
) Set up a counter with parameters and
flags defined in the structure. The following fields are defined in
struct pmc
:
int
pmc_num
NPMC
(currently 2).u_char
pmc_event
<machine/perfmon.h>
.u_char
pmc_unit
u_char
pmc_flags
u_char
pmc_mask
The following pmc_flags
values are
defined:
PMIOGET
struct pmc
) returns the current configuration of
the specified counter.PMIOSTART
PMIOSTOP
int
) starts (stops) the specified counter. Due to
hardware deficiencies, counters must be started and stopped in numerical
order. (That is to say, counter 0 can never be stopped without first
stopping counter 1.) The driver will
not
enforce this restriction (since it may not be present in future
CPUs).PMIORESET
int
) reset the specified counter to zero. The
counter should be stopped with PMIOSTOP
before it
is reset. All counters are automatically reset by
PMIOSETUP
.PMIOREAD
struct pmc_data
) get the current value of the
counter. The pmc_data
structure defines two
fields:
int
pmcd_num
quad_t
pmcd_value
In the future, it may be possible to use the
RDPMC
instruction on Pentium Pro processors to
read the counters directly.
PMIOTSTAMP
struct pmc_tstamp
) read the time stamp counter.
The pmc_tstamp
structure defines two fields:
int
pmct_rate
quad_t
pmct_value
It is important to note that the counter rate, as provided in
the pmct_rate
field, is often incorrect because
of calibration difficulties and non-integral clock rates. This field
should be considered more of a hint or sanity-check than an actual
representation of the rate of clock ticks.
ioctl
() commandsIntel Corporation, Pentium Pro Family Developer's Manual, vol. 3, January 1996, Operating System Writer's Manual.
The perfmon
device first appeared in
FreeBSD 2.2.
The perfmon
driver was written by
Garrett A. Wollman, MIT Laboratory for Computer
Science.
March 26, 1996 | Debian |