gem5  v20.1.0.0
Public Member Functions | Public Attributes | List of all members
PerfKvmCounterConfig Class Reference

PerfEvent counter configuration. More...

#include <perfevent.hh>

Public Member Functions

 PerfKvmCounterConfig (uint32_t type, uint64_t config)
 Initialize PerfEvent counter configuration structure. More...
 
 ~PerfKvmCounterConfig ()
 
PerfKvmCounterConfigsamplePeriod (uint64_t period)
 Set the initial sample period (overflow count) of an event. More...
 
PerfKvmCounterConfigwakeupEvents (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...
 
PerfKvmCounterConfigdisabled (bool val)
 Don't start the performance counter automatically when attaching it. More...
 
PerfKvmCounterConfigpinned (bool val)
 Force the group to be on the active all the time (i.e., disallow multiplexing). More...
 
PerfKvmCounterConfigexclude_host (bool val)
 Exclude the events from the host (i.e., only include events from the guest system). More...
 
PerfKvmCounterConfigexclude_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...
 

Detailed Description

PerfEvent counter configuration.

Definition at line 51 of file perfevent.hh.

Constructor & Destructor Documentation

◆ PerfKvmCounterConfig()

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).

Parameters
typeCounter type.
configCounter configuration

Definition at line 54 of file perfevent.cc.

References attr, and type.

◆ ~PerfKvmCounterConfig()

PerfKvmCounterConfig::~PerfKvmCounterConfig ( )

Definition at line 63 of file perfevent.cc.

Member Function Documentation

◆ disabled()

PerfKvmCounterConfig& PerfKvmCounterConfig::disabled ( bool  val)
inline

Don't start the performance counter automatically when attaching it.

Parameters
valtrue to disable, false to enable the counter

Definition at line 110 of file perfevent.hh.

References attr, and X86ISA::val.

Referenced by BaseKvmCPU::setupCounters().

◆ exclude_host()

PerfKvmCounterConfig& PerfKvmCounterConfig::exclude_host ( bool  val)
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).

@warn This attribute is ignored if it isn't present in the kernel headers or if the kernel doesn't support it.

Parameters
valtrue to exclude host events

Definition at line 141 of file perfevent.hh.

References attr, and X86ISA::val.

Referenced by BaseKvmCPU::setupCounters(), and BaseKvmCPU::setupInstCounter().

◆ exclude_hv()

PerfKvmCounterConfig& PerfKvmCounterConfig::exclude_hv ( bool  val)
inline

Exclude the hyper visor (i.e., only include events from the guest system).

@warn This is attribute only seems to be ignored on Intel.

Parameters
valtrue to exclude host events

Definition at line 156 of file perfevent.hh.

References attr, and X86ISA::val.

Referenced by BaseKvmCPU::setupCounters(), and BaseKvmCPU::setupInstCounter().

◆ pinned()

PerfKvmCounterConfig& PerfKvmCounterConfig::pinned ( bool  val)
inline

Force the group to be on the active all the time (i.e., disallow multiplexing).

Only applies to group leaders.

Parameters
valtrue to pin the counter

Definition at line 123 of file perfevent.hh.

References attr, and X86ISA::val.

Referenced by BaseKvmCPU::setupCounters().

◆ samplePeriod()

PerfKvmCounterConfig& PerfKvmCounterConfig::samplePeriod ( uint64_t  period)
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.

Parameters
periodNumber of counter events before the counter overflows

Definition at line 85 of file perfevent.hh.

References attr.

Referenced by BaseKvmCPU::setupCounters(), and BaseKvmCPU::setupInstCounter().

◆ wakeupEvents()

PerfKvmCounterConfig& PerfKvmCounterConfig::wakeupEvents ( uint32_t  events)
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.

Parameters
eventsNumber of overflows before signaling a wake up

Definition at line 98 of file perfevent.hh.

References attr.

Referenced by BaseKvmCPU::setupCounters(), and BaseKvmCPU::setupInstCounter().

Member Data Documentation

◆ attr

struct perf_event_attr PerfKvmCounterConfig::attr

Underlying perf_event_attr structure describing the counter.

Definition at line 162 of file perfevent.hh.

Referenced by PerfKvmCounter::attach(), disabled(), exclude_host(), exclude_hv(), PerfKvmCounterConfig(), pinned(), samplePeriod(), and wakeupEvents().


The documentation for this class was generated from the following files:

Generated on Wed Sep 30 2020 14:02:29 for gem5 by doxygen 1.8.17