|
vt
1.6.0
(Virtual Transport)
|
Go to the documentation of this file.
44 #if !defined INCLUDED_VT_METRICS_PERF_DATA_H
45 #define INCLUDED_VT_METRICS_PERF_DATA_H
53 #include <linux/perf_event.h>
54 #include <sys/ioctl.h>
55 #include <sys/syscall.h>
59 #include <unordered_map>
166 std::unordered_map<std::string, PerfEventDescriptor>
getEventMap()
const;
186 std::string
name()
override;
191 template <
typename SerializerT>
260 static long perfEventOpen(
struct perf_event_attr *hw_event, pid_t pid,
int cpu,
int group_fd,
unsigned long flags);
std::unordered_map< std::string, PerfEventDescriptor > getEventMap() const
Retrieve the current event map.
Definition: perf_data.cc:321
std::unordered_map< std::string, uint64_t > getTaskMeasurements()
Get the measurements collected during the task execution.
Definition: perf_data.cc:300
std::unordered_map< uint64_t, std::string > event_ids_
Definition: perf_data.h:202
uint64_t time_enabled_
Definition: perf_data.h:80
static long perfEventOpen(struct perf_event_attr *hw_event, pid_t pid, int cpu, int group_fd, unsigned long flags)
Open a performance counter event.
Definition: perf_data.cc:346
std::vector< std::string > event_names_
List of event names being tracked.
Definition: perf_data.h:213
PerfData()
Constructor for PerfData.
Definition: perf_data.cc:142
std::vector< GroupState > group_states_
Runtime state for each opened event group.
Definition: perf_data.h:223
void stopTaskMeasurement()
Stop performance measurement for a task.
Definition: perf_data.cc:224
Definition: perf_event_groups.h:59
std::string name() override
Get the component name.
Definition: perf_data.cc:334
metrics::PerfData * thePerfData()
double getScalingRatio() const
Definition: perf_data.h:84
PerfEventDescriptorMap event_map_
Map of event names to event type and configuration.
Definition: perf_data.h:208
Component class for a generic VT runtime module, CRTP'ed over the component's actual type
Definition: component.h:95
std::unordered_map< std::string, PerfEventDescriptor > PerfEventDescriptorMap
Definition: perf_event_groups.h:57
std::unordered_map< std::string, uint64_t > measurements_
Definition: perf_data.h:82
std::vector< TaskGroupMeasurements > getTaskGroupMeasurements()
Get grouped task measurements and raw perf multiplexing metadata.
Definition: perf_data.cc:317
Definition: perf_data.h:78
std::vector< TaskGroupMeasurements > readTaskGroupMeasurements() const
Common implementation for grouped perf reads.
Definition: perf_data.cc:232
void serialize(SerializerT &s)
Serialize the PerfData object.
Definition: perf_data.h:192
uint64_t time_running_
Definition: perf_data.h:81
Definition: perf_data.h:199
void startup() override
Component startup method.
Definition: perf_data.cc:329
Definition: activefn.h:51
std::vector< int > open_fds_
Flat list of open file descriptors to simplify cleanup.
Definition: perf_data.h:228
virtual ~PerfData()
Destructor for PerfData.
Definition: perf_data.cc:207
std::vector< PerfEventGroupInfo > event_groups_
Resolved event groups after explicit and automatic grouping.
Definition: perf_data.h:218
double getRunningFraction() const
Definition: perf_data.h:93
void cleanupBeforeAbort()
Cleanup resources before aborting.
Definition: perf_data.cc:336
PerfEventGroupInfo info_
Definition: perf_data.h:200
int leader_fd_
Definition: perf_data.h:201
PerfEventGroupInfo group_
Definition: perf_data.h:79
Tracks performance metrics per task.
Definition: perf_data.h:75
std::vector< PerfEventGroupInfo > getEventGroups() const
Retrieve resolved event grouping metadata.
Definition: perf_data.cc:325
void maybePrintEventGroups() const
Print resolved perf event groups when requested by the environment.
Definition: perf_data.cc:121
Definition: example_events.h:52
void startTaskMeasurement()
Start performance measurement for a task.
Definition: perf_data.cc:215