CPC Provider
The CPU performance counter (cpc
) provider makes available probes
that are associated with CPU performance counter events.
A probe fires when a specified number of events of a type in a chosen processor mode has occurred. When a probe fires, you can sample aspects of system state and make inferences about system behavior. A reasonable value for the event counter value depends on the event and also on the workload. To keep probe firings from being excessive, start with a high value. Lower the value to improve statistical accuracy.
CPU performance counters are a finite resource and the number of probes that can be enabled
depends upon hardware capabilities. An error is returned when the number of
cpc
probes enabled exceed the hardware capability. If hardware resources
are unavailable, probes fail until resources become available.
Start with higher event counter values for CPC probes and reduce them through trial-and-error as you work toward a more accurate representation of system activity.
cpc Probes
cpc
provider have the following probe
description
format:cpc:::<event name>-<mode>-<count>
The
definitions of the components of the probe name are listed in table.Table 8-6 Probe Name Components
Component | Meaning |
event name | The platform specific or generic event name. |
mode | The privilege mode in which to count events. Valid modes are user for user mode events, kernel for kernel mode events and all for both user mode and kernel mode events. |
count | The number of events that must occur on a CPU for a probe to be fired on that CPU. Note that the count is a configurable value. If the count value is too high, then the probe fires less often and the statistics are less reliable. If the count value is too low, the probe fires too often and the system is inundate with tracing activity. When selecting a count value, start with a higher value and then decrease it to get more accurate statistics. |
Note that when you list CPC probes, example count values are provided in the probe listings. The count values are artificially set high as a guideline.
cpc Probe Arguments
The following table lists the argument types for the cpc
probes.
Table 8-7 Probe Arguments
arg0
|
The program counter (PC) in the kernel at the time that the probe fired, or 0 if the current process wasn't running in the kernel at the time that the probe fired |
arg1
|
The PC in the user-level process at the time that the probe fired, or 0 if the current process was running at the kernel at the time that the probe fired |
As the descriptions imply, if arg0
is non-zero then
arg1
is zero; if arg0
is zero then
arg1
is non-zero.
cpc Examples
The following example illustrates the use of a probe published by the
cpc
provider.
cycles-all-50000000
The example performs a count for each process name that triggers the performance counter probe on a count value of 50000000.
cpc:::cycles-all-50000000
{
@[execname] = count();
}
cpc Stability
The cpc
provider uses DTrace's stability mechanism to describe its
stabilities. These values are listed in the following table.
Element | Name Stability | Data Stability | Dependency Class |
---|---|---|---|
Provider |
Evolving |
Evolving |
Common |
Module |
Private |
Private |
Unknown |
Function |
Private |
Private |
Unknown |
Name |
Evolving |
Evolving |
CPU |
Arguments |
Evolving |
Evolving |
Common |