Development Tools User’s Guide
173
Performance Monitoring Unit
3
3.1
Introduction
The performance monitoring unit (PMU) in the IXP2400 and IXP2800 network processors contain
a number of counters that can be configured to measure/count some number of events that are
generated by the various functional units on the processors. The software support for the PMU
provides a way to select the events of interest, configure the counters, and sample the results.
The interface to the PMU support uses the notion of "event" and "macro". An "event" is a signal
generated by the hardware denoting something of potential interest. For example, one such signal
is generated whenever a microengine is idle. A "macro" is an abstraction of one or more
performance monitoring counters. The macro and its associated parameters define how the PMU
counters are configurd.
Note:
The PMU interface is adapted from an existing Intel software tool, so some of the controls and
concepts do not apply to the IXP2400/IXP2800 network processors.
An "experiment" consists of a number of sampling macros along with other data to fully specify
how the sampling is to be done. When an experiment is run, the macros are first "compiled" into a
set of primitive reads and writes, and these are sent to a driver on the remote system (i.e. the
network processor). On the network processor, the PMU counters are configured and then started.
An interrupt-controlled driver samples and resets the counters and sends the resulting sampled data
back to the Workbench, where it is written to the disk. After the run is completed, the user can
examine the resulting file using a variety of tools (e.g. a spreadsheet) to view the results.
3.2
PMU Limitations
There are a fixed number of PMU counters available (currently six). Additionally, due to the
topology of the connections between the various functional units and the PMU, not all
combinations of events may be monitored at the same time. For example, one cannot monitor
events from two different Microengines within the same cluster at the same time. Also, one cannot
look at more than six events from the same functional block at the same time.
Some of the functional units (e.g. the Microengines) run at twice the clock speed as the PMU.
These events are denoted as "2X" events (since they operate at 2 times the PMU clock rate). These
events use twice as many hardware resources as non-2X events (e.g. one can only use three 2X
events from a given ME, rather than the normal six). Additionally, one cannot use 2X events in
certain contexts (e.g. as the trigger for a macro).
3.3
Sampling Modes
This section describes the sampling:
•
Time Based Sampling (see
•
Random Based Sampling (see
)