From 2f1086bd0852375696da24be6af924f735c889f3 Mon Sep 17 00:00:00 2001 From: "lijindong (C)" <2220386943@qq.com> Date: Thu, 1 Aug 2024 10:00:15 +0800 Subject: [PATCH] adapt 920F --- pmu/pfm/core.cpp | 1570 ++++++++++++++++++----------------- pmu/pfm/pfm_name.cpp | 14 + pmu/pfm/pfm_name.h | 15 + pmu/pmu_list.cpp | 15 +- pmu/pmu_list.h | 3 +- test/test_perf/test_spe.cpp | 4 +- util/cpu_map.cpp | 3 +- util/cpu_map.h | 1 + 8 files changed, 849 insertions(+), 776 deletions(-) diff --git a/pmu/pfm/core.cpp b/pmu/pfm/core.cpp index d4edc60..e402d03 100644 --- a/pmu/pfm/core.cpp +++ b/pmu/pfm/core.cpp @@ -20,789 +20,823 @@ #include "common.h" using namespace std; +using PMU_PAIR = std::pair; static CHIP_TYPE g_chipType = UNDEFINED_TYPE; + +namespace SOFTWARE_EVENT { + PMU_PAIR ALIGNMENT_FAULTS = { + KUNPENG_PMU::COMMON::ALIGNMENT_FAULTS, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, + KUNPENG_PMU::COMMON::ALIGNMENT_FAULTS + } + }; + + PMU_PAIR BPF_OUTPUT = { + KUNPENG_PMU::COMMON::BPF_OUTPUT, + { + PERF_TYPE_SOFTWARE, + 0xa, + KUNPENG_PMU::COMMON::BPF_OUTPUT + } + }; + + + PMU_PAIR CONTEXT_SWITCHES = { + KUNPENG_PMU::COMMON::CONTEXT_SWITCHES, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_CACHE_MISSES, + KUNPENG_PMU::COMMON::CONTEXT_SWITCHES + } + }; + + PMU_PAIR CS = { + KUNPENG_PMU::COMMON::CS, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_CACHE_MISSES, + KUNPENG_PMU::COMMON::CS + } + }; + + PMU_PAIR CPU_CLOCK = { + KUNPENG_PMU::COMMON::CPU_CLOCK, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_CPU_CYCLES, + KUNPENG_PMU::COMMON::CPU_CLOCK + } + }; + + + PMU_PAIR CPU_MIGRATIONS = { + KUNPENG_PMU::COMMON::CPU_MIGRATIONS, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_BRANCH_INSTRUCTIONS, + KUNPENG_PMU::COMMON::CPU_MIGRATIONS + } + }; + + PMU_PAIR MIGRATIONS = { + KUNPENG_PMU::COMMON::MIGRATIONS, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_BRANCH_INSTRUCTIONS, + KUNPENG_PMU::COMMON::MIGRATIONS + } + }; + + PMU_PAIR DUMMY = { + KUNPENG_PMU::COMMON::DUMMY, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_REF_CPU_CYCLES, + KUNPENG_PMU::COMMON::DUMMY + } + }; + + PMU_PAIR EMULATION_FAULTS = { + KUNPENG_PMU::COMMON::EMULATION_FAULTS, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_STALLED_CYCLES_BACKEND, + KUNPENG_PMU::COMMON::EMULATION_FAULTS + } + }; + + PMU_PAIR MAJOR_FAULTS = { + KUNPENG_PMU::COMMON::MAJOR_FAULTS, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_BUS_CYCLES, + KUNPENG_PMU::COMMON::MAJOR_FAULTS + } + }; + + PMU_PAIR MINOR_FAULTS = { + KUNPENG_PMU::COMMON::MINOR_FAULTS, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_BRANCH_MISSES, + KUNPENG_PMU::COMMON::MINOR_FAULTS + } + }; + + PMU_PAIR PAGE_FAULTS = { + KUNPENG_PMU::COMMON::PAGE_FAULTS, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_CACHE_REFERENCES, + KUNPENG_PMU::COMMON::PAGE_FAULTS + } + }; + + PMU_PAIR FAULTS = { + KUNPENG_PMU::COMMON::FAULTS, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_CACHE_REFERENCES, + KUNPENG_PMU::COMMON::FAULTS + } + }; + + + PMU_PAIR TASK_CLOCK = { + KUNPENG_PMU::COMMON::TASK_CLOCK, + { + PERF_TYPE_SOFTWARE, + PERF_COUNT_HW_INSTRUCTIONS, + KUNPENG_PMU::COMMON::TASK_CLOCK + } + }; +} // namespace software event + +namespace HARDWARE_EVENT { + PMU_PAIR BRANCH_MISSES = { + KUNPENG_PMU::COMMON::BRANCH_MISSES, + { + PERF_TYPE_HARDWARE, + PERF_COUNT_HW_BRANCH_MISSES, + KUNPENG_PMU::COMMON::BRANCH_MISSES + } + }; + + PMU_PAIR CACHE_MISSES = { + KUNPENG_PMU::COMMON::CACHE_MISSES, + { + PERF_TYPE_HARDWARE, + PERF_COUNT_HW_CACHE_MISSES, + KUNPENG_PMU::COMMON::CACHE_MISSES + } + }; + + PMU_PAIR CACHE_REFERENCES = { + KUNPENG_PMU::COMMON::CACHE_REFERENCES, + { + PERF_TYPE_HARDWARE, + PERF_COUNT_HW_CACHE_REFERENCES, + KUNPENG_PMU::COMMON::CACHE_REFERENCES + } + }; + + PMU_PAIR CPU_CYCLES = { + KUNPENG_PMU::COMMON::CPU_CYCLES, + { + PERF_TYPE_HARDWARE, + PERF_COUNT_HW_CPU_CYCLES, + KUNPENG_PMU::COMMON::CPU_CYCLES + } + }; + + PMU_PAIR CYCLES = { + KUNPENG_PMU::COMMON::CYCLES, + { + PERF_TYPE_HARDWARE, + PERF_COUNT_HW_CPU_CYCLES, + KUNPENG_PMU::COMMON::CYCLES + } + }; + + PMU_PAIR INSTRUCTIONS = { + KUNPENG_PMU::COMMON::INSTRUCTIONS, + { + PERF_TYPE_HARDWARE, + PERF_COUNT_HW_INSTRUCTIONS, + KUNPENG_PMU::COMMON::INSTRUCTIONS + } + }; + + PMU_PAIR STALLED_CYCLES_BACKEND = { + KUNPENG_PMU::COMMON::STALLED_CYCLES_BACKEND, + { + PERF_TYPE_HARDWARE, + PERF_COUNT_HW_STALLED_CYCLES_BACKEND, + KUNPENG_PMU::COMMON::STALLED_CYCLES_BACKEND + } + }; + + PMU_PAIR STALLED_CYCLES_FRONTED = { + KUNPENG_PMU::COMMON::STALLED_CYCLES_FRONTEND, + { + PERF_TYPE_HARDWARE, + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, + KUNPENG_PMU::COMMON::STALLED_CYCLES_FRONTEND + } + }; + + PMU_PAIR IDLE_CYCLES_BACKEND = { + KUNPENG_PMU::COMMON::IDLE_CYCLES_BACKEND, + { + PERF_TYPE_HARDWARE, + PERF_COUNT_HW_STALLED_CYCLES_BACKEND, + KUNPENG_PMU::COMMON::IDLE_CYCLES_BACKEND + } + }; + + PMU_PAIR IDLE_CYCLES_FRONTED = { + KUNPENG_PMU::COMMON::IDLE_CYCLES_FRONTEND, + { + PERF_TYPE_HARDWARE, + PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, + KUNPENG_PMU::COMMON::IDLE_CYCLES_FRONTEND + } + }; + + PMU_PAIR BUS_CYCLES = { + KUNPENG_PMU::COMMON::BUS_CYCLES, + { + PERF_TYPE_HARDWARE, + PERF_COUNT_HW_BUS_CYCLES, + KUNPENG_PMU::COMMON::BUS_CYCLES + } + }; +} // namespace hardware event + +namespace HW_CACHE_EVENT { + PMU_PAIR L1_DCACHE_LOAD_MISSES = { + KUNPENG_PMU::COMMON::L1_DCACHE_LOAD_MISSES, + { + PERF_TYPE_HW_CACHE, + 0x10000, + KUNPENG_PMU::COMMON::L1_DCACHE_LOAD_MISSES + } + }; + + PMU_PAIR L1_DCACHE_LOADS = { + KUNPENG_PMU::COMMON::L1_DCACHE_LOADS, + { + PERF_TYPE_HW_CACHE, + 0x0, + KUNPENG_PMU::COMMON::L1_DCACHE_LOADS + } + }; + + PMU_PAIR L1_ICACHE_LOAD_MISSES = { + KUNPENG_PMU::COMMON::L1_ICACHE_LOAD_MISSES, + { + PERF_TYPE_HW_CACHE, + 0x10001, + KUNPENG_PMU::COMMON::L1_ICACHE_LOAD_MISSES + } + }; + + PMU_PAIR L1_ICACHE_LOADS = { + KUNPENG_PMU::COMMON::L1_ICACHE_LOADS, + { + PERF_TYPE_HW_CACHE, + 0x1, + KUNPENG_PMU::COMMON::L1_ICACHE_LOADS + } + }; + + PMU_PAIR LLC_LOAD_MISSES = { + KUNPENG_PMU::COMMON::LLC_LOAD_MISSES, + { + PERF_TYPE_HW_CACHE, + 0x10002, + KUNPENG_PMU::COMMON::LLC_LOAD_MISSES + } + }; + + PMU_PAIR LLC_LOADS = { + KUNPENG_PMU::COMMON::LLC_LOADS, + { + PERF_TYPE_HW_CACHE, + 0x2, + KUNPENG_PMU::COMMON::LLC_LOADS + } + }; + + PMU_PAIR BRANCH_LOAD_MISSES = { + KUNPENG_PMU::COMMON::BRANCH_LOAD_MISSES, + { + PERF_TYPE_HW_CACHE, + 0x10005, + KUNPENG_PMU::COMMON::BRANCH_LOAD_MISSES + } + }; + + PMU_PAIR BRANCH_LOADS = { + KUNPENG_PMU::COMMON::BRANCH_LOADS, + { + PERF_TYPE_HW_CACHE, + 0x5, + KUNPENG_PMU::COMMON::BRANCH_LOADS + } + }; + + PMU_PAIR DTLB_LOAD_MISSES = { + KUNPENG_PMU::COMMON::DTLB_LOAD_MISSES, + { + PERF_TYPE_HW_CACHE, + 0x10003, + KUNPENG_PMU::COMMON::DTLB_LOAD_MISSES + } + }; + + PMU_PAIR DTLB_LOADS = { + KUNPENG_PMU::COMMON::DTLB_LOADS, + { + PERF_TYPE_HW_CACHE, + 0x3, + KUNPENG_PMU::COMMON::DTLB_LOADS + } + }; + + PMU_PAIR ITLB_LOAD_MISSES = { + KUNPENG_PMU::COMMON::ITLB_LOAD_MISSES, + { + PERF_TYPE_HW_CACHE, + 0x10004, + KUNPENG_PMU::COMMON::ITLB_LOAD_MISSES + } + }; + + PMU_PAIR ITLB_LOADS = { + KUNPENG_PMU::COMMON::ITLB_LOADS, + { + PERF_TYPE_HW_CACHE, + 0x4, + KUNPENG_PMU::COMMON::ITLB_LOADS + } + }; + + PMU_PAIR L1_DCACHE_STORE_MISSES = { + KUNPENG_PMU::COMMON::L1_DCACHE_STORE_MISSES, + { + PERF_TYPE_HW_CACHE, + 0x10100, + KUNPENG_PMU::COMMON::L1_DCACHE_STORE_MISSES + } + }; + + PMU_PAIR L1_DCACHE_STORES = { + KUNPENG_PMU::COMMON::L1_DCACHE_STORES, + { + PERF_TYPE_HW_CACHE, + 0x100, + KUNPENG_PMU::COMMON::L1_DCACHE_STORES + } + }; +} // namespace hardware cache event + +namespace RAW_EVENT { + PMU_PAIR L1D_CACHE_RD = { + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_RD, + { + PERF_TYPE_RAW, + 0x40, + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_RD + } + }; + + PMU_PAIR L1D_CACHE_WR = { + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WR, + { + PERF_TYPE_RAW, + 0x41, + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WR + } + }; + + PMU_PAIR L1D_CACHE_REFILL_RD = { + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_REFILL_RD, + { + PERF_TYPE_RAW, + 0x42, + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_REFILL_RD + } + }; + + PMU_PAIR L1D_CACHE_REFILL_WR = { + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_REFILL_WR, + { + PERF_TYPE_RAW, + 0x43, + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_REFILL_WR + } + }; + + PMU_PAIR L1D_CACHE_WB_VICTIM = { + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WB_VICTIM, + { + PERF_TYPE_RAW, + 0x46, + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WB_VICTIM + } + }; + + PMU_PAIR L1D_CACHE_WB_CLEAN = { + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WB_CLEAN, + { + PERF_TYPE_RAW, + 0x47, + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WB_CLEAN + } + }; + + PMU_PAIR L1D_CACHE_INVAL = { + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_INVAL, + { + PERF_TYPE_RAW, + 0x48, + KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_INVAL + } + }; + + PMU_PAIR L1D_TLB_REFILL_RD = { + KUNPENG_PMU::HIP_A::CORE::L1D_TLB_REFILL_RD, + { + PERF_TYPE_RAW, + 0x4c, + KUNPENG_PMU::HIP_A::CORE::L1D_TLB_REFILL_RD + } + }; + + PMU_PAIR L1D_TLB_REFILL_WR = { + KUNPENG_PMU::HIP_A::CORE::L1D_TLB_REFILL_WR, + { + PERF_TYPE_RAW, + 0x4d, + KUNPENG_PMU::HIP_A::CORE::L1D_TLB_REFILL_WR + } + }; + + PMU_PAIR L1D_TLB_RD = { + KUNPENG_PMU::HIP_A::CORE::L1D_TLB_RD, + { + PERF_TYPE_RAW, + 0x4e, + KUNPENG_PMU::HIP_A::CORE::L1D_TLB_RD + } + }; + + PMU_PAIR L1D_TLB_WR = { + KUNPENG_PMU::HIP_A::CORE::L1D_TLB_WR, + { + PERF_TYPE_RAW, + 0x4f, + KUNPENG_PMU::HIP_A::CORE::L1D_TLB_WR + } + }; + + PMU_PAIR L2D_CACHE_RD = { + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_RD, + { + PERF_TYPE_RAW, + 0x50, + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_RD + } + }; + + PMU_PAIR L2D_CACHE_WR = { + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WR, + { + PERF_TYPE_RAW, + 0x51, + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WR + } + }; + + PMU_PAIR L2D_CACHE_REFILL_RD = { + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_REFILL_RD, + { + PERF_TYPE_RAW, + 0x52, + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_REFILL_RD + } + }; + + PMU_PAIR L2D_CACHE_REFILL_WR = { + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_REFILL_WR, + { + PERF_TYPE_RAW, + 0x53, + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_REFILL_WR + } + }; + + PMU_PAIR L2D_CACHE_WB_VICTIM = { + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WB_VICTIM, + { + PERF_TYPE_RAW, + 0x56, + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WB_VICTIM + } + }; + + PMU_PAIR L2D_CACHE_WB_CLEAN = { + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WB_CLEAN, + { + PERF_TYPE_RAW, + 0x57, + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WB_CLEAN + } + }; + + PMU_PAIR L2D_CACHE_INVAL = { + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_INVAL, + { + PERF_TYPE_RAW, + 0x58, + KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_INVAL + } + }; + + PMU_PAIR L1I_CACHE_PRF = { + KUNPENG_PMU::HIP_A::CORE::L1I_CACHE_PRF, + { + PERF_TYPE_RAW, + 0x102e, + KUNPENG_PMU::HIP_A::CORE::L1I_CACHE_PRF + } + }; + + PMU_PAIR L1I_CACHE_PRF_REFILL = { + KUNPENG_PMU::HIP_A::CORE::L1I_CACHE_PRF_REFILL, + { + PERF_TYPE_RAW, + 0x102f, + KUNPENG_PMU::HIP_A::CORE::L1I_CACHE_PRF_REFILL + } + }; + + PMU_PAIR IQ_IS_EMPTY = { + KUNPENG_PMU::HIP_A::CORE::IQ_IS_EMPTY, + { + PERF_TYPE_RAW, + 0x1043, + KUNPENG_PMU::HIP_A::CORE::IQ_IS_EMPTY + } + }; + + PMU_PAIR IF_IS_STALL = { + KUNPENG_PMU::HIP_A::CORE::IF_IS_STALL, + { + PERF_TYPE_RAW, + 0x1044, + KUNPENG_PMU::HIP_A::CORE::IF_IS_STALL + } + }; + + PMU_PAIR FETCH_BUBBLE = { + KUNPENG_PMU::HIP_A::CORE::FETCH_BUBBLE, + { + PERF_TYPE_RAW, + 0x2014, + KUNPENG_PMU::HIP_A::CORE::FETCH_BUBBLE + } + }; + + PMU_PAIR PRF_REQ = { + KUNPENG_PMU::HIP_A::CORE::PRF_REQ, + { + PERF_TYPE_RAW, + 0x6013, + KUNPENG_PMU::HIP_A::CORE::PRF_REQ + } + }; + + PMU_PAIR HIT_ON_PRF = { + KUNPENG_PMU::HIP_A::CORE::HIT_ON_PRF, + { + PERF_TYPE_RAW, + 0x6014, + KUNPENG_PMU::HIP_A::CORE::HIT_ON_PRF + } + }; + + PMU_PAIR EXE_STALL_CYCLE = { + KUNPENG_PMU::HIP_A::CORE::EXE_STALL_CYCLE, + { + PERF_TYPE_RAW, + 0x7001, + KUNPENG_PMU::HIP_A::CORE::EXE_STALL_CYCLE + } + }; + + PMU_PAIR MEM_STALL_ANYLOAD = { + KUNPENG_PMU::HIP_A::CORE::MEM_STALL_ANYLOAD, + { + PERF_TYPE_RAW, + 0x7004, + KUNPENG_PMU::HIP_A::CORE::MEM_STALL_ANYLOAD + } + }; + + PMU_PAIR MEM_STALL_L1MISS = { + KUNPENG_PMU::HIP_A::CORE::MEM_STALL_L1MISS, + { + PERF_TYPE_RAW, + 0x7006, + KUNPENG_PMU::HIP_A::CORE::MEM_STALL_L1MISS + } + }; + + PMU_PAIR MEM_STALL_L2MISS = { + KUNPENG_PMU::HIP_A::CORE::MEM_STALL_L2MISS, + { + PERF_TYPE_RAW, + 0x7007, + KUNPENG_PMU::HIP_A::CORE::MEM_STALL_L2MISS + } + }; +} + const std::unordered_map HIP_A_CORE_PMU_MAP{ - { - KUNPENG_PMU::COMMON::BRANCH_MISSES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_BRANCH_MISSES, - KUNPENG_PMU::COMMON::BRANCH_MISSES - } - }, - { - KUNPENG_PMU::COMMON::BUS_CYCLES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_BUS_CYCLES, - KUNPENG_PMU::COMMON::BUS_CYCLES - } - }, - { - KUNPENG_PMU::COMMON::CACHE_MISSES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CACHE_MISSES, - KUNPENG_PMU::COMMON::CACHE_MISSES - } - }, - { - KUNPENG_PMU::COMMON::CACHE_REFERENCES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CACHE_REFERENCES, - KUNPENG_PMU::COMMON::CACHE_REFERENCES - } - }, - { - KUNPENG_PMU::COMMON::CPU_CYCLES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CPU_CYCLES, - KUNPENG_PMU::COMMON::CPU_CYCLES - } - }, - { - KUNPENG_PMU::COMMON::CYCLES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CPU_CYCLES, - KUNPENG_PMU::COMMON::CYCLES - } - }, - { - KUNPENG_PMU::COMMON::INSTRUCTIONS, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_INSTRUCTIONS, - KUNPENG_PMU::COMMON::INSTRUCTIONS - } - }, - { - KUNPENG_PMU::COMMON::STALLED_CYCLES_BACKEND, - { - PERF_TYPE_HARDWARE, - 0x8, - KUNPENG_PMU::COMMON::STALLED_CYCLES_BACKEND - } - }, - { - KUNPENG_PMU::COMMON::STALLED_CYCLES_FRONTEND, - { - PERF_TYPE_HARDWARE, - 0x7, - KUNPENG_PMU::COMMON::STALLED_CYCLES_FRONTEND - } - }, - { - KUNPENG_PMU::COMMON::L1_DCACHE_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10000, - KUNPENG_PMU::COMMON::L1_DCACHE_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::L1_DCACHE_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x0, - KUNPENG_PMU::COMMON::L1_DCACHE_LOADS - } - }, - { - KUNPENG_PMU::COMMON::L1_DCACHE_STORE_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10100, - KUNPENG_PMU::COMMON::L1_DCACHE_STORE_MISSES - } - }, - { - KUNPENG_PMU::COMMON::L1_DCACHE_STORES, - { - PERF_TYPE_HW_CACHE, - 0x100, - KUNPENG_PMU::COMMON::L1_DCACHE_STORES - } - }, - { - KUNPENG_PMU::COMMON::IDLE_CYCLES_BACKEND, - { - PERF_TYPE_HARDWARE, - 0x8, - KUNPENG_PMU::COMMON::IDLE_CYCLES_BACKEND - } - }, - { - KUNPENG_PMU::COMMON::L1_ICACHE_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10001, - KUNPENG_PMU::COMMON::L1_ICACHE_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::IDLE_CYCLES_FRONTEND, - { - PERF_TYPE_HARDWARE, - 0x7, - KUNPENG_PMU::COMMON::IDLE_CYCLES_FRONTEND - } - }, - { - KUNPENG_PMU::COMMON::L1_ICACHE_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x1, - KUNPENG_PMU::COMMON::L1_ICACHE_LOADS - } - }, - { - KUNPENG_PMU::COMMON::LLC_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10002, - KUNPENG_PMU::COMMON::LLC_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::LLC_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x2, - KUNPENG_PMU::COMMON::LLC_LOADS - } - }, - { - KUNPENG_PMU::COMMON::BRANCH_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10005, - KUNPENG_PMU::COMMON::BRANCH_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::BRANCH_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x5, - KUNPENG_PMU::COMMON::BRANCH_LOADS - } - }, - { - KUNPENG_PMU::COMMON::DTLB_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10003, - KUNPENG_PMU::COMMON::DTLB_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::DTLB_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x3, - KUNPENG_PMU::COMMON::DTLB_LOADS - } - }, - { - KUNPENG_PMU::COMMON::ITLB_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10004, - KUNPENG_PMU::COMMON::ITLB_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::ITLB_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x4, - KUNPENG_PMU::COMMON::ITLB_LOADS - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_RD, - { - PERF_TYPE_RAW, - 0x40, - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_RD - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WR, - { - PERF_TYPE_RAW, - 0x41, - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WR - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_REFILL_RD, - { - PERF_TYPE_RAW, - 0x42, - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_REFILL_RD - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_REFILL_WR, - { - PERF_TYPE_RAW, - 0x43, - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_REFILL_WR - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WB_VICTIM, - { - PERF_TYPE_RAW, - 0x46, - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WB_VICTIM - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WB_CLEAN, - { - PERF_TYPE_RAW, - 0x47, - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WB_CLEAN - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_INVAL, - { - PERF_TYPE_RAW, - 0x48, - KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_INVAL - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1D_TLB_REFILL_RD, - { - PERF_TYPE_RAW, - 0x4c, - KUNPENG_PMU::HIP_A::CORE::L1D_TLB_REFILL_RD - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1D_TLB_REFILL_WR, - { - PERF_TYPE_RAW, - 0x4d, - KUNPENG_PMU::HIP_A::CORE::L1D_TLB_REFILL_WR - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1D_TLB_RD, - { - PERF_TYPE_RAW, - 0x4e, - KUNPENG_PMU::HIP_A::CORE::L1D_TLB_RD - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1D_TLB_WR, - { - PERF_TYPE_RAW, - 0x4f, - KUNPENG_PMU::HIP_A::CORE::L1D_TLB_WR - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_RD, - { - PERF_TYPE_RAW, - 0x50, - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_RD - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WR, - { - PERF_TYPE_RAW, - 0x51, - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WR - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_REFILL_RD, - { - PERF_TYPE_RAW, - 0x52, - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_REFILL_RD - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_REFILL_WR, - { - PERF_TYPE_RAW, - 0x53, - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_REFILL_WR - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WB_VICTIM, - { - PERF_TYPE_RAW, - 0x56, - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WB_VICTIM - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WB_CLEAN, - { - PERF_TYPE_RAW, - 0x57, - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_WB_CLEAN - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_INVAL, - { - PERF_TYPE_RAW, - 0x58, - KUNPENG_PMU::HIP_A::CORE::L2D_CACHE_INVAL - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1I_CACHE_PRF, - { - PERF_TYPE_RAW, - 0x102e, - KUNPENG_PMU::HIP_A::CORE::L1I_CACHE_PRF - } - }, - { - KUNPENG_PMU::HIP_A::CORE::L1I_CACHE_PRF_REFILL, - { - PERF_TYPE_RAW, - 0x102f, - KUNPENG_PMU::HIP_A::CORE::L1I_CACHE_PRF_REFILL - } - }, - { - KUNPENG_PMU::HIP_A::CORE::IQ_IS_EMPTY, - { - PERF_TYPE_RAW, - 0x1043, - KUNPENG_PMU::HIP_A::CORE::IQ_IS_EMPTY - } - }, - { - KUNPENG_PMU::HIP_A::CORE::IF_IS_STALL, - { - PERF_TYPE_RAW, - 0x1044, - KUNPENG_PMU::HIP_A::CORE::IF_IS_STALL - } - }, - { - KUNPENG_PMU::HIP_A::CORE::FETCH_BUBBLE, - { - PERF_TYPE_RAW, - 0x2014, - KUNPENG_PMU::HIP_A::CORE::FETCH_BUBBLE - } - }, - { - KUNPENG_PMU::HIP_A::CORE::PRF_REQ, - { - PERF_TYPE_RAW, - 0x6013, - KUNPENG_PMU::HIP_A::CORE::PRF_REQ - } - }, - { - KUNPENG_PMU::HIP_A::CORE::HIT_ON_PRF, - { - PERF_TYPE_RAW, - 0x6014, - KUNPENG_PMU::HIP_A::CORE::HIT_ON_PRF - } - }, - { - KUNPENG_PMU::HIP_A::CORE::EXE_STALL_CYCLE, - { - PERF_TYPE_RAW, - 0x7001, - KUNPENG_PMU::HIP_A::CORE::EXE_STALL_CYCLE - } - }, - { - KUNPENG_PMU::HIP_A::CORE::MEM_STALL_ANYLOAD, - { - PERF_TYPE_RAW, - 0x7004, - KUNPENG_PMU::HIP_A::CORE::MEM_STALL_ANYLOAD - } - }, - { - KUNPENG_PMU::HIP_A::CORE::MEM_STALL_L1MISS, - { - PERF_TYPE_RAW, - 0x7006, - KUNPENG_PMU::HIP_A::CORE::MEM_STALL_L1MISS - } - }, - { - KUNPENG_PMU::HIP_A::CORE::MEM_STALL_L2MISS, - { - PERF_TYPE_RAW, - 0x7007, - KUNPENG_PMU::HIP_A::CORE::MEM_STALL_L2MISS - } - }, + HARDWARE_EVENT::BRANCH_MISSES, + HARDWARE_EVENT::BUS_CYCLES, + HARDWARE_EVENT::CACHE_MISSES, + HARDWARE_EVENT::CACHE_REFERENCES, + HARDWARE_EVENT::CPU_CYCLES, + HARDWARE_EVENT::CYCLES, + HARDWARE_EVENT::INSTRUCTIONS, + HARDWARE_EVENT::STALLED_CYCLES_BACKEND, + HARDWARE_EVENT::STALLED_CYCLES_FRONTED, + HARDWARE_EVENT::IDLE_CYCLES_BACKEND, + HARDWARE_EVENT::IDLE_CYCLES_FRONTED, + HW_CACHE_EVENT::L1_DCACHE_LOAD_MISSES, + HW_CACHE_EVENT::L1_DCACHE_LOADS, + HW_CACHE_EVENT::L1_DCACHE_STORE_MISSES, + HW_CACHE_EVENT::L1_DCACHE_STORES, + HW_CACHE_EVENT::L1_ICACHE_LOAD_MISSES, + HW_CACHE_EVENT::L1_ICACHE_LOADS, + HW_CACHE_EVENT::LLC_LOAD_MISSES, + HW_CACHE_EVENT::LLC_LOADS, + HW_CACHE_EVENT::BRANCH_LOAD_MISSES, + HW_CACHE_EVENT::BRANCH_LOADS, + HW_CACHE_EVENT::DTLB_LOAD_MISSES, + HW_CACHE_EVENT::DTLB_LOADS, + HW_CACHE_EVENT::ITLB_LOAD_MISSES, + HW_CACHE_EVENT::ITLB_LOADS, + RAW_EVENT::L1D_CACHE_RD, + RAW_EVENT::L1D_CACHE_WR, + RAW_EVENT::L1D_CACHE_REFILL_RD, + RAW_EVENT::L1D_CACHE_REFILL_WR, + RAW_EVENT::L1D_CACHE_WB_VICTIM, + RAW_EVENT::L1D_CACHE_WB_CLEAN, + RAW_EVENT::L1D_CACHE_INVAL, + RAW_EVENT::L1D_TLB_REFILL_RD, + RAW_EVENT::L1D_TLB_REFILL_WR, + RAW_EVENT::L1D_TLB_RD, + RAW_EVENT::L1D_TLB_WR, + RAW_EVENT::L2D_CACHE_RD, + RAW_EVENT::L2D_CACHE_WR, + RAW_EVENT::L2D_CACHE_REFILL_RD, + RAW_EVENT::L2D_CACHE_REFILL_WR, + RAW_EVENT::L2D_CACHE_WB_VICTIM, + RAW_EVENT::L2D_CACHE_WB_CLEAN, + RAW_EVENT::L2D_CACHE_INVAL, + RAW_EVENT::L1I_CACHE_PRF, + RAW_EVENT::L1I_CACHE_PRF_REFILL, + RAW_EVENT::IQ_IS_EMPTY, + RAW_EVENT::IF_IS_STALL, + RAW_EVENT::FETCH_BUBBLE, + RAW_EVENT::PRF_REQ, + RAW_EVENT::HIT_ON_PRF, + RAW_EVENT::EXE_STALL_CYCLE, + RAW_EVENT::MEM_STALL_ANYLOAD, + RAW_EVENT::MEM_STALL_L1MISS, + RAW_EVENT::MEM_STALL_L2MISS, + SOFTWARE_EVENT::ALIGNMENT_FAULTS, + SOFTWARE_EVENT::BPF_OUTPUT, + SOFTWARE_EVENT::CONTEXT_SWITCHES, + SOFTWARE_EVENT::CS, + SOFTWARE_EVENT::CPU_CLOCK, + SOFTWARE_EVENT::CPU_MIGRATIONS, + SOFTWARE_EVENT::MIGRATIONS, + SOFTWARE_EVENT::DUMMY, + SOFTWARE_EVENT::EMULATION_FAULTS, + SOFTWARE_EVENT::MAJOR_FAULTS, + SOFTWARE_EVENT::MINOR_FAULTS, + SOFTWARE_EVENT::PAGE_FAULTS, + SOFTWARE_EVENT::FAULTS, + SOFTWARE_EVENT::TASK_CLOCK, }; const std::unordered_map HIP_B_CORE_PMU_MAP{ - { - KUNPENG_PMU::COMMON::BRANCH_MISSES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_BRANCH_MISSES, - KUNPENG_PMU::COMMON::BRANCH_MISSES - } - }, - { - KUNPENG_PMU::COMMON::CACHE_MISSES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CACHE_MISSES, - KUNPENG_PMU::COMMON::CACHE_MISSES - } - }, - { - KUNPENG_PMU::COMMON::CACHE_REFERENCES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CACHE_REFERENCES, - KUNPENG_PMU::COMMON::CACHE_REFERENCES - } - }, - { - KUNPENG_PMU::COMMON::CPU_CYCLES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CPU_CYCLES, - KUNPENG_PMU::COMMON::CPU_CYCLES - } - }, - { - KUNPENG_PMU::COMMON::CYCLES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CPU_CYCLES, - KUNPENG_PMU::COMMON::CYCLES - } - }, - { - KUNPENG_PMU::COMMON::INSTRUCTIONS, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_INSTRUCTIONS, - KUNPENG_PMU::COMMON::INSTRUCTIONS - } - }, - { - KUNPENG_PMU::COMMON::STALLED_CYCLES_BACKEND, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_STALLED_CYCLES_BACKEND, - KUNPENG_PMU::COMMON::STALLED_CYCLES_BACKEND - } - }, - { - KUNPENG_PMU::COMMON::STALLED_CYCLES_FRONTEND, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, - KUNPENG_PMU::COMMON::STALLED_CYCLES_FRONTEND - } - }, - { - KUNPENG_PMU::COMMON::L1_DCACHE_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10000, - KUNPENG_PMU::COMMON::L1_DCACHE_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::IDLE_CYCLES_BACKEND, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_STALLED_CYCLES_BACKEND, - KUNPENG_PMU::COMMON::IDLE_CYCLES_BACKEND - } - }, - { - KUNPENG_PMU::COMMON::L1_ICACHE_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10001, - KUNPENG_PMU::COMMON::L1_ICACHE_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::IDLE_CYCLES_FRONTEND, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, - KUNPENG_PMU::COMMON::IDLE_CYCLES_FRONTEND - } - }, - { - KUNPENG_PMU::COMMON::L1_ICACHE_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x1, - KUNPENG_PMU::COMMON::L1_ICACHE_LOADS - } - }, - { - KUNPENG_PMU::COMMON::LLC_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10002, - KUNPENG_PMU::COMMON::LLC_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::LLC_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x2, - KUNPENG_PMU::COMMON::LLC_LOADS - } - }, - { - KUNPENG_PMU::COMMON::BRANCH_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10005, - KUNPENG_PMU::COMMON::BRANCH_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::BRANCH_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x5, - KUNPENG_PMU::COMMON::BRANCH_LOADS - } - }, - { - KUNPENG_PMU::COMMON::DTLB_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10003, - KUNPENG_PMU::COMMON::DTLB_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::DTLB_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x3, - KUNPENG_PMU::COMMON::DTLB_LOADS - } - }, - { - KUNPENG_PMU::COMMON::ITLB_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10004, - KUNPENG_PMU::COMMON::ITLB_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::ITLB_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x4, - KUNPENG_PMU::COMMON::ITLB_LOADS - } - }, + HARDWARE_EVENT::BRANCH_MISSES, + HARDWARE_EVENT::CACHE_MISSES, + HARDWARE_EVENT::CACHE_REFERENCES, + HARDWARE_EVENT::CPU_CYCLES, + HARDWARE_EVENT::CYCLES, + HARDWARE_EVENT::INSTRUCTIONS, + HARDWARE_EVENT::STALLED_CYCLES_BACKEND, + HARDWARE_EVENT::STALLED_CYCLES_FRONTED, + HARDWARE_EVENT::IDLE_CYCLES_BACKEND, + HARDWARE_EVENT::IDLE_CYCLES_FRONTED, + HW_CACHE_EVENT::L1_DCACHE_LOAD_MISSES, + HW_CACHE_EVENT::L1_DCACHE_LOAD_MISSES, + HW_CACHE_EVENT::L1_ICACHE_LOADS, + HW_CACHE_EVENT::LLC_LOAD_MISSES, + HW_CACHE_EVENT::LLC_LOADS, + HW_CACHE_EVENT::BRANCH_LOAD_MISSES, + HW_CACHE_EVENT::BRANCH_LOADS, + HW_CACHE_EVENT::DTLB_LOAD_MISSES, + HW_CACHE_EVENT::DTLB_LOADS, + HW_CACHE_EVENT::ITLB_LOAD_MISSES, + HW_CACHE_EVENT::ITLB_LOADS, + SOFTWARE_EVENT::ALIGNMENT_FAULTS, + SOFTWARE_EVENT::BPF_OUTPUT, + SOFTWARE_EVENT::CONTEXT_SWITCHES, + SOFTWARE_EVENT::CS, + SOFTWARE_EVENT::CPU_CLOCK, + SOFTWARE_EVENT::CPU_MIGRATIONS, + SOFTWARE_EVENT::MIGRATIONS, + SOFTWARE_EVENT::DUMMY, + SOFTWARE_EVENT::EMULATION_FAULTS, + SOFTWARE_EVENT::MAJOR_FAULTS, + SOFTWARE_EVENT::MINOR_FAULTS, + SOFTWARE_EVENT::PAGE_FAULTS, + SOFTWARE_EVENT::FAULTS, + SOFTWARE_EVENT::TASK_CLOCK, }; const std::unordered_map HIP_C_CORE_PMU_MAP{ - { - KUNPENG_PMU::COMMON::BRANCH_MISSES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_BRANCH_MISSES, - KUNPENG_PMU::COMMON::BRANCH_MISSES - } - }, - { - KUNPENG_PMU::COMMON::CACHE_MISSES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CACHE_MISSES, - KUNPENG_PMU::COMMON::CACHE_MISSES - } - }, - { - KUNPENG_PMU::COMMON::CACHE_REFERENCES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CACHE_REFERENCES, - KUNPENG_PMU::COMMON::CACHE_REFERENCES - } - }, - { - KUNPENG_PMU::COMMON::CPU_CYCLES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CPU_CYCLES, - KUNPENG_PMU::COMMON::CPU_CYCLES - } - }, - { - KUNPENG_PMU::COMMON::CYCLES, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_CPU_CYCLES, - KUNPENG_PMU::COMMON::CYCLES - } - }, - { - KUNPENG_PMU::COMMON::INSTRUCTIONS, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_INSTRUCTIONS, - KUNPENG_PMU::COMMON::INSTRUCTIONS - } - }, - { - KUNPENG_PMU::COMMON::STALLED_CYCLES_BACKEND, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_STALLED_CYCLES_BACKEND, - KUNPENG_PMU::COMMON::STALLED_CYCLES_BACKEND - } - }, - { - KUNPENG_PMU::COMMON::STALLED_CYCLES_FRONTEND, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, - KUNPENG_PMU::COMMON::STALLED_CYCLES_FRONTEND - } - }, - { - KUNPENG_PMU::COMMON::L1_DCACHE_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10000, - KUNPENG_PMU::COMMON::L1_DCACHE_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::IDLE_CYCLES_BACKEND, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_STALLED_CYCLES_BACKEND, - KUNPENG_PMU::COMMON::IDLE_CYCLES_BACKEND - } - }, - { - KUNPENG_PMU::COMMON::L1_ICACHE_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10001, - KUNPENG_PMU::COMMON::L1_ICACHE_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::IDLE_CYCLES_FRONTEND, - { - PERF_TYPE_HARDWARE, - PERF_COUNT_HW_STALLED_CYCLES_FRONTEND, - KUNPENG_PMU::COMMON::IDLE_CYCLES_FRONTEND - } - }, - { - KUNPENG_PMU::COMMON::L1_ICACHE_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x1, - KUNPENG_PMU::COMMON::L1_ICACHE_LOADS - } - }, - { - KUNPENG_PMU::COMMON::LLC_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10002, - KUNPENG_PMU::COMMON::LLC_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::LLC_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x2, - KUNPENG_PMU::COMMON::LLC_LOADS - } - }, - { - KUNPENG_PMU::COMMON::BRANCH_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10005, - KUNPENG_PMU::COMMON::BRANCH_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::BRANCH_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x5, - KUNPENG_PMU::COMMON::BRANCH_LOADS - } - }, - { - KUNPENG_PMU::COMMON::DTLB_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10003, - KUNPENG_PMU::COMMON::DTLB_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::DTLB_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x3, - KUNPENG_PMU::COMMON::DTLB_LOADS - } - }, - { - KUNPENG_PMU::COMMON::ITLB_LOAD_MISSES, - { - PERF_TYPE_HW_CACHE, - 0x10004, - KUNPENG_PMU::COMMON::ITLB_LOAD_MISSES - } - }, - { - KUNPENG_PMU::COMMON::ITLB_LOADS, - { - PERF_TYPE_HW_CACHE, - 0x4, - KUNPENG_PMU::COMMON::ITLB_LOADS - } - }, + HARDWARE_EVENT::BRANCH_MISSES, + HARDWARE_EVENT::CACHE_MISSES, + HARDWARE_EVENT::CACHE_REFERENCES, + HARDWARE_EVENT::CPU_CYCLES, + HARDWARE_EVENT::CYCLES, + HARDWARE_EVENT::INSTRUCTIONS, + HARDWARE_EVENT::STALLED_CYCLES_BACKEND, + HARDWARE_EVENT::STALLED_CYCLES_FRONTED, + HARDWARE_EVENT::IDLE_CYCLES_BACKEND, + HARDWARE_EVENT::IDLE_CYCLES_FRONTED, + HW_CACHE_EVENT::L1_DCACHE_LOAD_MISSES, + HW_CACHE_EVENT::L1_ICACHE_LOAD_MISSES, + HW_CACHE_EVENT::L1_ICACHE_LOADS, + HW_CACHE_EVENT::LLC_LOAD_MISSES, + HW_CACHE_EVENT::LLC_LOADS, + HW_CACHE_EVENT::BRANCH_LOAD_MISSES, + HW_CACHE_EVENT::BRANCH_LOADS, + HW_CACHE_EVENT::DTLB_LOAD_MISSES, + HW_CACHE_EVENT::DTLB_LOADS, + HW_CACHE_EVENT::ITLB_LOAD_MISSES, + HW_CACHE_EVENT::ITLB_LOADS, + SOFTWARE_EVENT::ALIGNMENT_FAULTS, + SOFTWARE_EVENT::BPF_OUTPUT, + SOFTWARE_EVENT::CONTEXT_SWITCHES, + SOFTWARE_EVENT::CS, + SOFTWARE_EVENT::CPU_CLOCK, + SOFTWARE_EVENT::CPU_MIGRATIONS, + SOFTWARE_EVENT::MIGRATIONS, + SOFTWARE_EVENT::DUMMY, + SOFTWARE_EVENT::EMULATION_FAULTS, + SOFTWARE_EVENT::MAJOR_FAULTS, + SOFTWARE_EVENT::MINOR_FAULTS, + SOFTWARE_EVENT::PAGE_FAULTS, + SOFTWARE_EVENT::FAULTS, + SOFTWARE_EVENT::TASK_CLOCK, +}; + +const std::unordered_map HIP_F_CORE_PMU_MAP{ + HARDWARE_EVENT::BRANCH_MISSES, + HARDWARE_EVENT::CACHE_MISSES, + HARDWARE_EVENT::CACHE_REFERENCES, + HARDWARE_EVENT::CPU_CYCLES, + HARDWARE_EVENT::CYCLES, + HARDWARE_EVENT::INSTRUCTIONS, + HARDWARE_EVENT::STALLED_CYCLES_BACKEND, + HARDWARE_EVENT::STALLED_CYCLES_FRONTED, + HARDWARE_EVENT::IDLE_CYCLES_BACKEND, + HARDWARE_EVENT::IDLE_CYCLES_FRONTED, + HW_CACHE_EVENT::L1_DCACHE_LOAD_MISSES, + HW_CACHE_EVENT::L1_ICACHE_LOAD_MISSES, + HW_CACHE_EVENT::L1_ICACHE_LOADS, + HW_CACHE_EVENT::LLC_LOAD_MISSES, + HW_CACHE_EVENT::LLC_LOADS, + HW_CACHE_EVENT::BRANCH_LOAD_MISSES, + HW_CACHE_EVENT::BRANCH_LOADS, + HW_CACHE_EVENT::DTLB_LOAD_MISSES, + HW_CACHE_EVENT::DTLB_LOADS, + HW_CACHE_EVENT::ITLB_LOAD_MISSES, + HW_CACHE_EVENT::ITLB_LOADS, + SOFTWARE_EVENT::ALIGNMENT_FAULTS, + SOFTWARE_EVENT::BPF_OUTPUT, + SOFTWARE_EVENT::CONTEXT_SWITCHES, + SOFTWARE_EVENT::CS, + SOFTWARE_EVENT::CPU_CLOCK, + SOFTWARE_EVENT::CPU_MIGRATIONS, + SOFTWARE_EVENT::MIGRATIONS, + SOFTWARE_EVENT::DUMMY, + SOFTWARE_EVENT::EMULATION_FAULTS, + SOFTWARE_EVENT::MAJOR_FAULTS, + SOFTWARE_EVENT::MINOR_FAULTS, + SOFTWARE_EVENT::PAGE_FAULTS, + SOFTWARE_EVENT::FAULTS, + SOFTWARE_EVENT::TASK_CLOCK, }; const KUNPENG_PMU::CORE_EVT_MAP KUNPENG_PMU::CORE_EVENT_MAP = { {CHIP_TYPE::HIPA, HIP_A_CORE_PMU_MAP}, {CHIP_TYPE::HIPB, HIP_B_CORE_PMU_MAP}, {CHIP_TYPE::HIPC, HIP_C_CORE_PMU_MAP}, + {CHIP_TYPE::HIPF, HIP_F_CORE_PMU_MAP}, }; static struct PmuEvt* ConstructPmuEvtFromCore(KUNPENG_PMU::CoreConfig config, int collectType) diff --git a/pmu/pfm/pfm_name.cpp b/pmu/pfm/pfm_name.cpp index 179dceb..49585e4 100644 --- a/pmu/pfm/pfm_name.cpp +++ b/pmu/pfm/pfm_name.cpp @@ -46,6 +46,20 @@ const char* KUNPENG_PMU::COMMON::DTLB_LOAD_MISSES = "dTLB-load-misses"; const char* KUNPENG_PMU::COMMON::DTLB_LOADS = "dTLB-loads"; const char* KUNPENG_PMU::COMMON::ITLB_LOAD_MISSES = "iTLB-load-misses"; const char* KUNPENG_PMU::COMMON::ITLB_LOADS = "iTLB-loads"; +const char* KUNPENG_PMU::COMMON::ALIGNMENT_FAULTS = "alignment-faults"; +const char* KUNPENG_PMU::COMMON::BPF_OUTPUT = "bpf-output"; +const char* KUNPENG_PMU::COMMON::CONTEXT_SWITCHES = "context-switches"; +const char* KUNPENG_PMU::COMMON::CS = "cs"; +const char* KUNPENG_PMU::COMMON::CPU_CLOCK = "cpu_clock"; +const char* KUNPENG_PMU::COMMON::CPU_MIGRATIONS = "cpu-migrations"; +const char* KUNPENG_PMU::COMMON::MIGRATIONS = "migrations"; +const char* KUNPENG_PMU::COMMON::DUMMY = "dummy"; +const char* KUNPENG_PMU::COMMON::EMULATION_FAULTS = "emulation-faults"; +const char* KUNPENG_PMU::COMMON::MAJOR_FAULTS = "major-faults"; +const char* KUNPENG_PMU::COMMON::MINOR_FAULTS = "minor-faults"; +const char* KUNPENG_PMU::COMMON::PAGE_FAULTS = "page-faults"; +const char* KUNPENG_PMU::COMMON::FAULTS = "faults"; +const char* KUNPENG_PMU::COMMON::TASK_CLOCK = "task-clock"; const char* KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_RD = "l1d_cache_rd"; const char* KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_WR = "l1d_cache_wr"; const char* KUNPENG_PMU::HIP_A::CORE::L1D_CACHE_REFILL_RD = "l1d_cache_refill_rd"; diff --git a/pmu/pfm/pfm_name.h b/pmu/pfm/pfm_name.h index 740e59f..ec528d5 100644 --- a/pmu/pfm/pfm_name.h +++ b/pmu/pfm/pfm_name.h @@ -46,6 +46,21 @@ extern const char* DTLB_LOAD_MISSES; extern const char* DTLB_LOADS; extern const char* ITLB_LOAD_MISSES; extern const char* ITLB_LOADS; +// Software event +extern const char* ALIGNMENT_FAULTS; +extern const char* BPF_OUTPUT; +extern const char* CONTEXT_SWITCHES; +extern const char* CS; +extern const char* CPU_CLOCK; +extern const char* CPU_MIGRATIONS; +extern const char* MIGRATIONS; +extern const char* DUMMY; +extern const char* EMULATION_FAULTS; +extern const char* MAJOR_FAULTS; +extern const char* MINOR_FAULTS; +extern const char* PAGE_FAULTS; +extern const char* FAULTS; +extern const char* TASK_CLOCK; } namespace HIP_A { namespace CORE { diff --git a/pmu/pmu_list.cpp b/pmu/pmu_list.cpp index 82b7fc8..0e084ad 100644 --- a/pmu/pmu_list.cpp +++ b/pmu/pmu_list.cpp @@ -37,11 +37,18 @@ namespace KUNPENG_PMU { std::mutex PmuList::dataListMtx; std::mutex PmuList::dataParentMtx; - int PmuList::CheckRlimit(const unsigned fdNum) - { + int PmuList::CheckRlmiit(const unsigned int fdNum) { return RaiseNumFd(fdNum); } + unsigned int PmuList::CalRequireFd(unsigned int cpuSize, unsigned int proSize, const unsigned int collectType) { + unsigned int fd = cpuSize * proSize; + if (collectType == SPE_SAMPLING) { + fd += fd;// spe would open dummy event. + } + return fd; + } + int PmuList::Register(const int pd, PmuTaskAttr* taskParam) { if (GetSymbolMode(pd) != NO_SYMBOL_RESOLVE && taskParam->pmuEvt->collectType != COUNTING) { @@ -77,14 +84,14 @@ namespace KUNPENG_PMU { if (err != SUCCESS) { return err; } - fdNum += cpuTopoList.size() * procTopoList.size(); + fdNum += CalRequireFd(cpuTopoList.size(), procTopoList.size(), taskParam->pmuEvt->collectType); std::shared_ptr evtList = std::make_shared(GetSymbolMode(pd), cpuTopoList, procTopoList, pmuTaskAttrHead->pmuEvt); InsertEvtList(pd, evtList); pmuTaskAttrHead = pmuTaskAttrHead->next; } - auto err = CheckRlimit(fdNum); + auto err = CheckRlmiit(fdNum); if (err != SUCCESS) { return err; } diff --git a/pmu/pmu_list.h b/pmu/pmu_list.h index 699261a..ec1f9b1 100644 --- a/pmu/pmu_list.h +++ b/pmu/pmu_list.h @@ -111,7 +111,8 @@ private: int PrepareCpuTopoList( const unsigned& pd, PmuTaskAttr* pmuTaskAttrHead, std::vector& cpuTopoList); int PrepareProcTopoList(PmuTaskAttr* pmuTaskAttrHead, std::vector& procTopoList) const; - int CheckRlimit(const unsigned fdNum); + int CheckRlmiit(const unsigned fdNum); + static unsigned int CalRequireFd(unsigned int cpuSize, unsigned int proSize, const unsigned int collectType); static void AggregateData(const std::vector& evData, std::vector& newEvData); void AggregateUncoreData(const unsigned pd, const std::vector &evData, std::vector &newEvData); std::vector& GetPreviousData(const unsigned pd); diff --git a/test/test_perf/test_spe.cpp b/test/test_perf/test_spe.cpp index fb72258..aea68f5 100644 --- a/test/test_perf/test_spe.cpp +++ b/test/test_perf/test_spe.cpp @@ -13,13 +13,13 @@ * Description: Common functions for spe sampling. ******************************************************************************/ #include "test_common.h" +#include "common.h" using namespace std; class TestSPE : public testing::Test { public: - void TearDown() - { + void TearDown() { if (appPid != 0) { KillApp(appPid); appPid = 0; diff --git a/util/cpu_map.cpp b/util/cpu_map.cpp index a855f7e..8851a6f 100644 --- a/util/cpu_map.cpp +++ b/util/cpu_map.cpp @@ -32,7 +32,8 @@ static constexpr int PATH_LEN = 256; static CHIP_TYPE g_chipType = CHIP_TYPE::UNDEFINED_TYPE; static map chipMap = {{"0x00000000481fd010", HIPA}, {"0x00000000480fd020", HIPB}, - {"0x00000000480fd030", HIPC}}; + {"0x00000000480fd030", HIPC}, + {"0x00000000480fd220", HIPF}}; static inline bool ReadCpuPackageId(int coreId, CpuTopology* cpuTopo) { diff --git a/util/cpu_map.h b/util/cpu_map.h index b8820a1..de38af5 100644 --- a/util/cpu_map.h +++ b/util/cpu_map.h @@ -25,6 +25,7 @@ enum CHIP_TYPE { HIPA = 1, HIPB = 2, HIPC = 3, + HIPF = 4, }; struct CpuTopology* GetCpuTopology(int coreId); -- Gitee