Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
No results found
Show changes
Commits on Source (8)
# Require c++17 for c++ files.
build --cxxopt='-xc++'
build --cxxopt='-std=c++17'
build --copt='-Wno-sign-compare'
......@@ -7,5 +8,10 @@ build --copt='-Wno-sign-compare'
# using previous versions of Bazel.
common --enable_bzlmod
# For 3rd party code: Disable warnings entirely.
# They are not actionable and just create noise.
build --per_file_copt=external/.*@-w
build --host_per_file_copt=external/.*@-w
# Load user-specific configuration, if any.
try-import %workspace%/user.bazelrc
package(default_visibility = ["//visibility:public"])
licenses(["notice"]) # BSD/MIT-like license (for zlib)
# From zlib/README
_ZLIB_PUBLIC_HEADERS = [
"zconf.h",
"zlib.h",
]
_ZLIB_PREFIXED_HEADERS = ["zlib/include/" + hdr for hdr in _ZLIB_PUBLIC_HEADERS]
# In order to limit the damage from the `includes` propagation
# via `:zlib`, copy the public headers to a subdirectory and
# expose those.
genrule(
name = "copy_public_headers",
srcs = _ZLIB_PUBLIC_HEADERS,
outs = _ZLIB_PREFIXED_HEADERS,
cmd = "cp $(SRCS) $(@D)/zlib/include/",
visibility = ["//visibility:private"],
)
cc_library(
name = "zlib",
srcs = [
"adler32.c",
"compress.c",
"crc32.c",
"deflate.c",
"gzclose.c",
"gzlib.c",
"gzread.c",
"gzwrite.c",
"infback.c",
"inffast.c",
"inflate.c",
"inftrees.c",
"trees.c",
"uncompr.c",
"zutil.c",
"crc32.h",
"deflate.h",
"gzguts.h",
"inffast.h",
"inffixed.h",
"inflate.h",
"inftrees.h",
"trees.h",
"zutil.h",
# Include the un-prefixed headers in srcs to work
# around the fact that zlib uses "" when including itself,
# but clients generally use <>.
] + _ZLIB_PUBLIC_HEADERS,
hdrs = _ZLIB_PREFIXED_HEADERS,
copts = [
"-Wno-unused-variable",
"-Wno-implicit-function-declaration",
],
includes = ["zlib/include/"],
)
......@@ -364,14 +364,15 @@ std::string DataSrcString(uint64_t mem_lvl) {
if (mem_lvl & quipper::PERF_MEM_LVL_L1) return "L1";
if (mem_lvl & quipper::PERF_MEM_LVL_LFB) return "LFB";
if (mem_lvl & quipper::PERF_MEM_LVL_L2) return "L2";
if (mem_lvl & quipper::PERF_MEM_LVL_L3) return "L3";
if (mem_lvl & quipper::PERF_MEM_LVL_L3) return "Local L3";
if (mem_lvl & quipper::PERF_MEM_LVL_LOC_RAM) return "Local DRAM";
if (mem_lvl &
(quipper::PERF_MEM_LVL_REM_RAM1 | quipper::PERF_MEM_LVL_REM_RAM2))
return "Remote DRAM";
if (mem_lvl &
(quipper::PERF_MEM_LVL_REM_CCE1 | quipper::PERF_MEM_LVL_REM_CCE2))
return "Remote Cache";
// AMD ZEN4+ (Genoa+) supports Near and Far L3 levels. For other AMD platforms
// Local and Near L3 both refer to Local L3.
if (mem_lvl & quipper::PERF_MEM_LVL_REM_CCE1) return "Near L3";
if (mem_lvl & quipper::PERF_MEM_LVL_REM_CCE2) return "Far L3";
if (mem_lvl & quipper::PERF_MEM_LVL_IO) return "IO Memory";
if (mem_lvl & quipper::PERF_MEM_LVL_UNC) return "Uncached Memory";
return "Unknown Level";
......@@ -836,7 +837,7 @@ bool PerfDataConverter::Sample(const PerfDataHandler::SampleContext& sample) {
// LBR callstacks include only user call chains. If this is an LBR sample,
// we get the kernel callstack from the sample's callchain, and the user
// callstack from the sample's branch_stack.
const bool lbr_sample = !sample.branch_stack.empty();
const bool lbr_sample = !sample.branch_stack.empty() && !sample.spe.is_spe;
bool skipped_dup = false;
for (const auto& frame : sample.callchain) {
if (lbr_sample && frame.ip == quipper::PERF_CONTEXT_USER) {
......@@ -875,23 +876,28 @@ bool PerfDataConverter::Sample(const PerfDataHandler::SampleContext& sample) {
AddOrGetLocation(event_pid, frame.ip - 1, frame.mapping, builder));
IncBuildIdStats(event_pid, frame.mapping);
}
for (const auto& frame : sample.branch_stack) {
// branch_stack entries are pairs of <from, to> locations corresponding to
// addresses of call instructions and target addresses of those calls.
// We need only the addresses of the function call instructions, stored in
// the 'from' field, to recover the call chains.
if (frame.from.mapping == nullptr) {
continue;
}
// An LBR entry includes the address of the call instruction, so we don't
// have to do any adjustments.
if (frame.from.ip < frame.from.mapping->start) {
continue;
// Only add the frame from branch_stack if it is an LBR sample.
if (lbr_sample) {
for (const auto& frame : sample.branch_stack) {
// branch_stack entries are pairs of <from, to> locations corresponding to
// addresses of call instructions and target addresses of those calls. We
// need only the addresses of the function call instructions, stored in
// the 'from' field, to recover the call chains.
if (frame.from.mapping == nullptr) {
continue;
}
// An LBR entry includes the address of the call instruction, so we don't
// have to do any adjustments.
if (frame.from.ip < frame.from.mapping->start) {
continue;
}
sample_key.stack.push_back(AddOrGetLocation(event_pid, frame.from.ip,
frame.from.mapping, builder));
IncBuildIdStats(event_pid, frame.from.mapping);
}
sample_key.stack.push_back(AddOrGetLocation(event_pid, frame.from.ip,
frame.from.mapping, builder));
IncBuildIdStats(event_pid, frame.from.mapping);
}
AddOrUpdateSample(sample, event_pid, sample_key, builder);
return true;
}
......
......@@ -1073,7 +1073,7 @@ TEST_F(PerfDataConverterTest, ConvertsDataSrc) {
const std::unordered_map<std::string, uint64_t> expected_counts{
{"L1", 2},
{"L2", 1},
{"L3", 1},
{"Local L3", 1},
};
EXPECT_THAT(counts_by_datasrc, UnorderedPointwise(Eq(), expected_counts));
}
......
......@@ -1171,7 +1171,7 @@ bool PerfReader::ReadNonHeaderEventDataWithoutHeader(
if (event->header.type == PERF_RECORD_MMAP ||
event->header.type == PERF_RECORD_MMAP2) {
if (proto_->file_attrs(0).has_attr() &&
if (proto_->file_attrs_size() > 0 && proto_->file_attrs(0).has_attr() &&
proto_->file_attrs(0).attr().exclude_kernel() &&
event->header.misc & PERF_RECORD_MISC_KERNEL && event->mmap.len == 0) {
// A buggy version of perf emits zero-length MMAP records for the kernel
......@@ -1330,7 +1330,7 @@ bool PerfReader::ReadMetadataWithoutHeader(DataReader* data, u32 type,
case HEADER_BRANCH_STACK:
return true;
case HEADER_PMU_MAPPINGS:
return ReadPMUMappingsMetadata(data, size);
return ReadPMUMappingsMetadata(data);
case HEADER_GROUP_DESC:
return ReadGroupDescMetadata(data);
case HEADER_HYBRID_TOPOLOGY:
......@@ -1683,26 +1683,20 @@ bool PerfReader::ReadNUMATopologyMetadata(DataReader* data) {
return true;
}
bool PerfReader::ReadPMUMappingsMetadata(DataReader* data, size_t size) {
bool PerfReader::ReadPMUMappingsMetadata(DataReader* data) {
pmu_mappings_num_mappings_type num_mappings;
auto begin_offset = data->Tell();
if (!data->ReadUint32(&num_mappings)) {
LOG(ERROR) << "Error reading the number of PMU mappings.";
return false;
}
// Check size of the data read in addition to the iteration based on the
// number of PMU mappings because the number of pmu mappings is always zero
// in piped perf.data file.
//
// The number of PMU mappings is initialized to zero and after all the
// mappings are wirtten to the perf.data files, this value is set to the
// number of PMU mappings written. This logic doesn't work in pipe mode. So,
// the number of PMU mappings is always zero.
// Fix to write the number of PMU mappings before writing the actual PMU
// mappings landed upstream in 4.14. But the check for size is required as
// long as there are machines with older version of perf.
for (u32 i = 0; i < num_mappings || data->Tell() - begin_offset < size; ++i) {
if (num_mappings == 0) {
LOG(ERROR) << "Found 0 PMU mappings. Expecting more. If this is a pre-4.14 "
"perf.data file in pipe mode, it's unsupported now.";
return false;
}
for (u32 i = 0; i < num_mappings; ++i) {
PerfPMUMappingsMetadata mapping;
if (!data->ReadUint32(&mapping.type) ||
!data->ReadStringWithSizeFromData(&mapping.name)) {
......@@ -1712,10 +1706,6 @@ bool PerfReader::ReadPMUMappingsMetadata(DataReader* data, size_t size) {
serializer_.SerializePMUMappingsMetadata(mapping,
proto_->add_pmu_mappings());
}
if (data->Tell() - begin_offset != size) {
LOG(ERROR) << "Size from the header doesn't match the read size";
return false;
}
return true;
}
......@@ -2360,6 +2350,12 @@ bool PerfReader::ReadAttrEventBlock(DataReader* data, size_t size) {
// attr.attr.size has been upgraded to the current size of perf_event_attr.
const size_t actual_attr_size = data->Tell() - initial_offset;
if (size < actual_attr_size) {
LOG(ERROR) << "Declared payload size " << size << " of "
<< "PERF_RECORD_HEADER_ATTR event is less than the number of "
<< "bytes read for the attr_event struct " << actual_attr_size;
return false;
}
const size_t num_ids =
(size - actual_attr_size) / sizeof(decltype(attr.ids)::value_type);
......
......@@ -228,7 +228,7 @@ class PerfReader {
bool ReadUint64Metadata(DataReader* data, u32 type, size_t size);
bool ReadCPUTopologyMetadata(DataReader* data, size_t size);
bool ReadNUMATopologyMetadata(DataReader* data);
bool ReadPMUMappingsMetadata(DataReader* data, size_t size);
bool ReadPMUMappingsMetadata(DataReader* data);
bool ReadGroupDescMetadata(DataReader* data);
bool ReadEventDescMetadata(DataReader* data);
bool ReadHybridTopologyMetadata(DataReader* data, size_t size);
......
......@@ -245,6 +245,14 @@ const std::vector<const char*>& GetPerfPipedDataFiles() {
* cat &> /tmp/perf.data.piped.header_feautres_group_desc-6.8
*/
"perf.data.piped.header_feautres_group_desc-6.8",
/* Perf data that contains an aligned HEADER_PMU_MAPPINGS
* PERF_RECORD_FEATURE, generated in piped mode from perf 6.12.
* Command:
* $ /tmp/perf record -e cycles -o - -- echo "Hello, World!" | \
* cat &> /tmp/perf.data.piped.header_features_aligned-6.12
*/
"perf.data.piped.header_features_aligned-6.12",
};
return *files;
}
......
File added
/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
/usr/lib/x86_64-linux-gnu/libc.so.6
file_attrs {
attr {
type: 0
size: 96
config: 0
sample_period: 4000
sample_type: 327
read_format: 20
disabled: true
inherit: true
pinned: false
exclusive: false
exclude_user: false
exclude_kernel: true
exclude_hv: true
exclude_idle: false
mmap: true
comm: true
freq: true
inherit_stat: false
enable_on_exec: true
task: true
watermark: false
precise_ip: 0
mmap_data: false
sample_id_all: true
exclude_host: false
exclude_guest: true
wakeup_events: 0
bp_type: 0
bp_addr: 0
bp_len: 0
branch_sample_type: 0
exclude_callchain_kernel: false
exclude_callchain_user: false
mmap2: true
comm_exec: true
sample_regs_user: 0
sample_stack_user: 0
use_clockid: false
context_switch: false
write_backward: false
namespaces: false
cgroup: false
ksymbol: true
}
ids: 58
ids: 59
ids: 60
ids: 61
ids: 62
ids: 63
ids: 64
ids: 65
ids: 66
ids: 67
ids: 68
ids: 69
}
events {
header {
type: 79
misc: 0
size: 56
}
timestamp: 0
time_conv_event {
time_shift: 31
time_mult: 581029282
time_zero: 18446744038720937551
time_cycles: 0
time_mask: 0
cap_user_time_zero: true
cap_user_time_short: false
}
}
events {
header {
type: 69
misc: 0
size: 400
}
timestamp: 0
id_index_event {
entries {
id: 58
idx: 0
cpu: 0
tid: 3572830
}
entries {
id: 59
idx: 1
cpu: 1
tid: 3572830
}
entries {
id: 60
idx: 2
cpu: 2
tid: 3572830
}
entries {
id: 61
idx: 3
cpu: 3
tid: 3572830
}
entries {
id: 62
idx: 4
cpu: 4
tid: 3572830
}
entries {
id: 63
idx: 5
cpu: 5
tid: 3572830
}
entries {
id: 64
idx: 6
cpu: 6
tid: 3572830
}
entries {
id: 65
idx: 7
cpu: 7
tid: 3572830
}
entries {
id: 66
idx: 8
cpu: 8
tid: 3572830
}
entries {
id: 67
idx: 9
cpu: 9
tid: 3572830
}
entries {
id: 68
idx: 10
cpu: 10
tid: 3572830
}
entries {
id: 69
idx: 11
cpu: 11
tid: 3572830
}
}
}
events {
header {
type: 73
misc: 0
size: 40
}
timestamp: 0
thread_map_event {
entries {
pid: 3572830
comm: ""
comm_md5_prefix: 15284527576400310788
}
}
}
events {
header {
type: 3
misc: 0
size: 56
}
comm_event {
pid: 3572830
tid: 3572830
comm: "perf-exec"
comm_md5_prefix: 6375561754421997525
sample_info {
pid: 0
tid: 0
sample_time_ns: 0
id: 0
}
}
timestamp: 0
}
events {
header {
type: 3
misc: 8192
size: 48
}
comm_event {
pid: 3572830
tid: 3572830
comm: "echo"
comm_md5_prefix: 14677546575749228893
sample_info {
pid: 3572830
tid: 3572830
sample_time_ns: 1695606189827350
id: 63
}
}
timestamp: 1695606189827350
}
events {
header {
type: 10
misc: 2
size: 112
}
mmap_event {
pid: 3572830
tid: 3572830
start: 94394337513472
len: 20480
pgoff: 8192
filename: "/usr/bin/echo"
filename_md5_prefix: 15522276376509795859
sample_info {
pid: 3572830
tid: 3572830
sample_time_ns: 1695606189873433
id: 63
}
maj: 253
min: 1
ino: 23347190
ino_generation: 2456581984
prot: 5
flags: 2
root_path: "/usr/bin"
root_path_md5_prefix: 8435948316302646952
}
timestamp: 1695606189873433
}
events {
header {
type: 10
misc: 2
size: 144
}
mmap_event {
pid: 3572830
tid: 3572830
start: 139907179765760
len: 155648
pgoff: 4096
filename: "/usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2"
filename_md5_prefix: 9475957089037900710
sample_info {
pid: 3572830
tid: 3572830
sample_time_ns: 1695606189899484
id: 63
}
maj: 253
min: 1
ino: 23748966
ino_generation: 2785888648
prot: 5
flags: 2
root_path: "/usr/lib"
root_path_md5_prefix: 7459869125215751206
}
timestamp: 1695606189899484
}
events {
header {
type: 10
misc: 2
size: 104
}
mmap_event {
pid: 3572830
tid: 3572830
start: 139907179753472
len: 8192
pgoff: 0
filename: "[vdso]"
filename_md5_prefix: 2667416218816914640
sample_info {
pid: 3572830
tid: 3572830
sample_time_ns: 1695606189913049
id: 63
}
maj: 0
min: 0
ino: 0
ino_generation: 0
prot: 5
flags: 2
root_path_md5_prefix: 15284527576400310788
}
timestamp: 1695606189913049
}
events {
header {
type: 9
misc: 2
size: 48
}
sample_event {
ip: 139907179873056
pid: 3572830
tid: 3572830
sample_time_ns: 1695606189938280
id: 63
period: 1
}
timestamp: 1695606189938280
}
events {
header {
type: 9
misc: 2
size: 48
}
sample_event {
ip: 139907179873056
pid: 3572830
tid: 3572830
sample_time_ns: 1695606189951838
id: 63
period: 1
}
timestamp: 1695606189951838
}
events {
header {
type: 9
misc: 2
size: 48
}
sample_event {
ip: 139907179873056
pid: 3572830
tid: 3572830
sample_time_ns: 1695606189954294
id: 63
period: 3
}
timestamp: 1695606189954294
}
events {
header {
type: 9
misc: 2
size: 48
}
sample_event {
ip: 139907179873056
pid: 3572830
tid: 3572830
sample_time_ns: 1695606189956630
id: 63
period: 40
}
timestamp: 1695606189956630
}
events {
header {
type: 9
misc: 2
size: 48
}
sample_event {
ip: 139907179873056
pid: 3572830
tid: 3572830
sample_time_ns: 1695606189958955
id: 63
period: 569
}
timestamp: 1695606189958955
}
events {
header {
type: 9
misc: 2
size: 48
}
sample_event {
ip: 139907179873056
pid: 3572830
tid: 3572830
sample_time_ns: 1695606189961320
id: 63
period: 8146
}
timestamp: 1695606189961320
}
events {
header {
type: 9
misc: 1
size: 48
}
sample_event {
ip: 18446744071746622080
pid: 3572830
tid: 3572830
sample_time_ns: 1695606189977484
id: 63
period: 114766
}
timestamp: 1695606189977484
}
events {
header {
type: 9
misc: 1
size: 48
}
sample_event {
ip: 18446744071746622080
pid: 3572830
tid: 3572830
sample_time_ns: 1695606190081593
id: 63
period: 322450
}
timestamp: 1695606190081593
}
events {
header {
type: 10
misc: 2
size: 136
}
mmap_event {
pid: 3572830
tid: 3572830
start: 139907177795584
len: 1409024
pgoff: 163840
filename: "/usr/lib/x86_64-linux-gnu/libc.so.6"
filename_md5_prefix: 8571006941893869828
sample_info {
pid: 3572830
tid: 3572830
sample_time_ns: 1695606190133633
id: 63
}
maj: 253
min: 1
ino: 23748972
ino_generation: 1688195103
prot: 5
flags: 2
root_path: "/usr/lib"
root_path_md5_prefix: 7459869125215751206
}
timestamp: 1695606190133633
}
events {
header {
type: 9
misc: 2
size: 48
}
sample_event {
ip: 139907178287280
pid: 3572830
tid: 3572830
sample_time_ns: 1695606190443933
id: 63
period: 334032
}
timestamp: 1695606190443933
}
events {
header {
type: 4
misc: 0
size: 56
}
exit_event {
pid: 3572830
ppid: 3572828
tid: 3572830
ptid: 3572828
fork_time_ns: 1695606190568193
sample_info {
pid: 3572830
tid: 3572830
sample_time_ns: 1695606190567637
id: 63
}
}
timestamp: 1695606190567637
}
events {
header {
type: 68
misc: 0
size: 8
}
timestamp: 0
}
timestamp_sec: 0
stats {
num_sample_events: 9
num_mmap_events: 4
num_fork_events: 0
num_exit_events: 1
num_sample_events_mapped: 7
did_remap: false
}
metadata_mask: 98296
uint32_metadata {
type: 7
data: 12
data: 12
}
uint64_metadata {
type: 10
data: 65429172
}
event_types {
id: 0
name: "cycles:u"
name_md5_prefix: 1121936423070321334
}
cpu_topology {
core_siblings: "0-11"
core_siblings_md5_prefix: 5611340837010840115
thread_siblings: "0,6"
thread_siblings: "1,7"
thread_siblings: "2,8"
thread_siblings: "3,9"
thread_siblings: "4,10"
thread_siblings: "5,11"
thread_siblings_md5_prefix: 16273715052326578487
thread_siblings_md5_prefix: 9451235707793674176
thread_siblings_md5_prefix: 5437576109352495952
thread_siblings_md5_prefix: 3774072085541372126
thread_siblings_md5_prefix: 16849059690469783828
thread_siblings_md5_prefix: 7513306623104017194
available_cpus {
core_id: 0
socket_id: 0
}
available_cpus {
core_id: 1
socket_id: 0
}
available_cpus {
core_id: 2
socket_id: 0
}
available_cpus {
core_id: 3
socket_id: 0
}
available_cpus {
core_id: 4
socket_id: 0
}
available_cpus {
core_id: 5
socket_id: 0
}
available_cpus {
core_id: 0
socket_id: 0
}
available_cpus {
core_id: 1
socket_id: 0
}
available_cpus {
core_id: 2
socket_id: 0
}
available_cpus {
core_id: 3
socket_id: 0
}
available_cpus {
core_id: 4
socket_id: 0
}
available_cpus {
core_id: 5
socket_id: 0
}
}
numa_topology {
id: 0
total_memory: 65429172
free_memory: 5206636
cpu_list: "0-11"
cpu_list_md5_prefix: 5611340837010840115
}
string_metadata {
hostname {
value: "skanev.svl.corp.google.com"
value_md5_prefix: 3907310895825533308
}
kernel_version {
value: "6.10.11-1rodete2-amd64"
value_md5_prefix: 10831586802736417069
}
perf_version {
value: "6.12.0-18-GOOGLE-g40139413e611"
value_md5_prefix: 915629069102481600
}
architecture {
value: "x86_64"
value_md5_prefix: 11246003006864564
}
cpu_description {
value: "Intel(R) Xeon(R) W-2135 CPU @ 3.70GHz"
value_md5_prefix: 12715914438335190025
}
cpu_id {
value: "GenuineIntel,6,85,4"
value_md5_prefix: 3944105336761224819
}
perf_command_line_token {
value: "/tmp/perf"
value_md5_prefix: 1076680390965760237
}
perf_command_line_token {
value: "record"
value_md5_prefix: 16003524724320237622
}
perf_command_line_token {
value: "-e"
value_md5_prefix: 5793861197931060347
}
perf_command_line_token {
value: "cycles"
value_md5_prefix: 12436270580932095263
}
perf_command_line_token {
value: "-o"
value_md5_prefix: 12893035396610391846
}
perf_command_line_token {
value: "-"
value_md5_prefix: 3705722231355495246
}
perf_command_line_token {
value: "--"
value_md5_prefix: 14964084598567107715
}
perf_command_line_token {
value: "echo"
value_md5_prefix: 14677546575749228893
}
perf_command_line_token {
value: "Hello, World!"
value_md5_prefix: 7325353822706542648
}
perf_command_line_whole {
value: "/tmp/perf record -e cycles -o - -- echo Hello, World!"
value_md5_prefix: 9333982606101660734
}
}
pmu_mappings {
type: 4
name: "cpu"
name_md5_prefix: 15669287738006486457
}
pmu_mappings {
type: 5
name: "breakpoint"
name_md5_prefix: 15231791590021874039
}
pmu_mappings {
type: 48
name: "cstate_core"
name_md5_prefix: 7698971831218560044
}
pmu_mappings {
type: 49
name: "cstate_pkg"
name_md5_prefix: 1518627369180422309
}
pmu_mappings {
type: 4294901761
name: "hwmon_coretemp"
name_md5_prefix: 13419747897978031818
}
pmu_mappings {
type: 4294901760
name: "hwmon_nvme"
name_md5_prefix: 1170419337820489793
}
pmu_mappings {
type: 10
name: "intel_pt"
name_md5_prefix: 14362431286216788648
}
pmu_mappings {
type: 8
name: "kprobe"
name_md5_prefix: 14790103604247633387
}
pmu_mappings {
type: 11
name: "msr"
name_md5_prefix: 4085670281987242153
}
pmu_mappings {
type: 50
name: "power"
name_md5_prefix: 7119389851461848805
}
pmu_mappings {
type: 1
name: "software"
name_md5_prefix: 18012728053178608889
}
pmu_mappings {
type: 4294967294
name: "tool"
name_md5_prefix: 4155470905800486047
}
pmu_mappings {
type: 2
name: "tracepoint"
name_md5_prefix: 1021014226246753557
}
pmu_mappings {
type: 23
name: "uncore_cha_0"
name_md5_prefix: 10045589734999270760
}
pmu_mappings {
type: 24
name: "uncore_cha_1"
name_md5_prefix: 14169004023026974064
}
pmu_mappings {
type: 25
name: "uncore_cha_2"
name_md5_prefix: 12704796176878952837
}
pmu_mappings {
type: 26
name: "uncore_cha_3"
name_md5_prefix: 14237543006027405066
}
pmu_mappings {
type: 27
name: "uncore_cha_4"
name_md5_prefix: 16114146981160756235
}
pmu_mappings {
type: 28
name: "uncore_cha_5"
name_md5_prefix: 5719788713860979031
}
pmu_mappings {
type: 35
name: "uncore_iio_free_running_0"
name_md5_prefix: 2297330864814448410
}
pmu_mappings {
type: 36
name: "uncore_iio_free_running_1"
name_md5_prefix: 7444212439490435571
}
pmu_mappings {
type: 37
name: "uncore_iio_free_running_2"
name_md5_prefix: 6728414614848472591
}
pmu_mappings {
type: 38
name: "uncore_iio_free_running_3"
name_md5_prefix: 4074281221769931538
}
pmu_mappings {
type: 40
name: "uncore_iio_free_running_5"
name_md5_prefix: 5464818725161563234
}
pmu_mappings {
type: 29
name: "uncore_iio_0"
name_md5_prefix: 14016059880950809489
}
pmu_mappings {
type: 30
name: "uncore_iio_1"
name_md5_prefix: 5119656219420062782
}
pmu_mappings {
type: 31
name: "uncore_iio_2"
name_md5_prefix: 9315356422584685642
}
pmu_mappings {
type: 32
name: "uncore_iio_3"
name_md5_prefix: 10639928603586563385
}
pmu_mappings {
type: 33
name: "uncore_iio_4"
name_md5_prefix: 4987879542221406541
}
pmu_mappings {
type: 39
name: "uncore_iio_free_running_4"
name_md5_prefix: 9742407326201437109
}
pmu_mappings {
type: 34
name: "uncore_iio_5"
name_md5_prefix: 17611951318451096219
}
pmu_mappings {
type: 14
name: "uncore_imc_0"
name_md5_prefix: 6555461393347138523
}
pmu_mappings {
type: 15
name: "uncore_imc_1"
name_md5_prefix: 12651025630865212914
}
pmu_mappings {
type: 16
name: "uncore_imc_2"
name_md5_prefix: 13712338617311385507
}
pmu_mappings {
type: 17
name: "uncore_imc_3"
name_md5_prefix: 5872824093969610853
}
pmu_mappings {
type: 18
name: "uncore_imc_4"
name_md5_prefix: 16071559937582627942
}
pmu_mappings {
type: 19
name: "uncore_imc_5"
name_md5_prefix: 7283731011918188878
}
pmu_mappings {
type: 41
name: "uncore_irp_0"
name_md5_prefix: 2025276914232280753
}
pmu_mappings {
type: 42
name: "uncore_irp_1"
name_md5_prefix: 251417948980049046
}
pmu_mappings {
type: 43
name: "uncore_irp_2"
name_md5_prefix: 15326782585345282934
}
pmu_mappings {
type: 44
name: "uncore_irp_3"
name_md5_prefix: 4466728206331079380
}
pmu_mappings {
type: 45
name: "uncore_irp_4"
name_md5_prefix: 2744517600002082088
}
pmu_mappings {
type: 46
name: "uncore_irp_5"
name_md5_prefix: 15648744370809292908
}
pmu_mappings {
type: 12
name: "uncore_m2m_0"
name_md5_prefix: 5167672207614446764
}
pmu_mappings {
type: 13
name: "uncore_m2m_1"
name_md5_prefix: 16547230612015454258
}
pmu_mappings {
type: 20
name: "uncore_m3upi_0"
name_md5_prefix: 5339573263424232385
}
pmu_mappings {
type: 21
name: "uncore_m3upi_1"
name_md5_prefix: 8805893899270049524
}
pmu_mappings {
type: 47
name: "uncore_pcu"
name_md5_prefix: 1127976365346510278
}
pmu_mappings {
type: 22
name: "uncore_ubox"
name_md5_prefix: 16172544679636216603
}
pmu_mappings {
type: 9
name: "uprobe"
name_md5_prefix: 10272799137701582342
}