gem5
|
PerfEvent counter configuration. More...
#include <perfevent.hh>
Public Member Functions | |
PerfKvmCounterConfig (uint32_t type, uint64_t config) | |
Initialize PerfEvent counter configuration structure. More... | |
~PerfKvmCounterConfig () | |
PerfKvmCounterConfig & | samplePeriod (uint64_t period) |
Set the initial sample period (overflow count) of an event. More... | |
PerfKvmCounterConfig & | wakeupEvents (uint32_t events) |
Set the number of samples that need to be triggered before reporting data as being available on the perf event FD. More... | |
PerfKvmCounterConfig & | disabled (bool val) |
Don't start the performance counter automatically when attaching it. More... | |
PerfKvmCounterConfig & | pinned (bool val) |
Force the group to be on the active all the time (i.e., disallow multiplexing). More... | |
PerfKvmCounterConfig & | exclude_host (bool val) |
Exclude the events from the host (i.e., only include events from the guest system). More... | |
PerfKvmCounterConfig & | exclude_hv (bool val) |
Exclude the hyper visor (i.e., only include events from the guest system). More... | |
Public Attributes | |
struct perf_event_attr | attr |
Underlying perf_event_attr structure describing the counter. More... | |
PerfEvent counter configuration.
Definition at line 53 of file perfevent.hh.
PerfKvmCounterConfig::PerfKvmCounterConfig | ( | uint32_t | type, |
uint64_t | config | ||
) |
Initialize PerfEvent counter configuration structure.
PerfEvent has the concept of counter types, which is a way to abstract hardware performance counters or access software events. The type field in the configuration specifies what type of counter this is. For hardware performance counters, it's typically PERF_TYPE_HARDWARE, PERF_TYPE_HW_CACHE, or PERF_TYPE_RAW.
The 'config' field has different meanings depending on the type of counter. Possible values are listed in perf_event.h in the kernel headers. When using raw counters, the value is the raw value written to the performance counter configuration register (some bits dealing with sampling and similar features are usually masked).
type | Counter type. |
config | Counter configuration |
Definition at line 56 of file perfevent.cc.
References attr, and X86ISA::type.
PerfKvmCounterConfig::~PerfKvmCounterConfig | ( | ) |
Definition at line 65 of file perfevent.cc.
|
inline |
Don't start the performance counter automatically when attaching it.
val | true to disable, false to enable the counter |
Definition at line 112 of file perfevent.hh.
References attr, and X86ISA::val.
Referenced by BaseKvmCPU::setupCounters().
|
inline |
Exclude the events from the host (i.e., only include events from the guest system).
Intel CPUs seem to support this attribute from Linux 3.2 and onwards. Non-x86 architectures currently ignore this attribute (Linux 3.12-rc5).
This attribute is ignored if it isn't present in the kernel headers or if the kernel doesn't support it.
val | true to exclude host events |
Definition at line 143 of file perfevent.hh.
References attr, and X86ISA::val.
Referenced by BaseKvmCPU::setupCounters(), and BaseKvmCPU::setupInstCounter().
|
inline |
Exclude the hyper visor (i.e., only include events from the guest system).
This is attribute only seems to be ignored on Intel.
val | true to exclude host events |
Definition at line 158 of file perfevent.hh.
References attr, and X86ISA::val.
Referenced by BaseKvmCPU::setupCounters(), and BaseKvmCPU::setupInstCounter().
|
inline |
Force the group to be on the active all the time (i.e., disallow multiplexing).
Only applies to group leaders.
val | true to pin the counter |
Definition at line 125 of file perfevent.hh.
References attr, and X86ISA::val.
Referenced by BaseKvmCPU::setupCounters().
|
inline |
Set the initial sample period (overflow count) of an event.
If this is set to 0, the event acts as a normal counting event and does not trigger overflows.
period | Number of counter events before the counter overflows |
Definition at line 87 of file perfevent.hh.
References attr.
Referenced by BaseKvmCPU::setupCounters(), and BaseKvmCPU::setupInstCounter().
|
inline |
Set the number of samples that need to be triggered before reporting data as being available on the perf event FD.
Defaults to 0, which disables overflow reporting.
events | Number of overflows before signaling a wake up |
Definition at line 100 of file perfevent.hh.
References attr.
Referenced by BaseKvmCPU::setupCounters(), and BaseKvmCPU::setupInstCounter().
struct perf_event_attr PerfKvmCounterConfig::attr |
Underlying perf_event_attr structure describing the counter.
Definition at line 164 of file perfevent.hh.
Referenced by PerfKvmCounter::attach(), disabled(), exclude_host(), exclude_hv(), PerfKvmCounterConfig(), pinned(), samplePeriod(), and wakeupEvents().