Merge pull request #12569 from ClickHouse/aku/numa-metric

Add perf metric for NUMA-local memory access
This commit is contained in:
alexey-milovidov 2020-07-19 03:21:24 +03:00 committed by GitHub
commit 7aee5abb83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 1 deletions

View File

@ -202,6 +202,8 @@
M(PerfDataTLBMisses, "Data TLB misses") \ M(PerfDataTLBMisses, "Data TLB misses") \
M(PerfInstructionTLBReferences, "Instruction TLB references") \ M(PerfInstructionTLBReferences, "Instruction TLB references") \
M(PerfInstructionTLBMisses, "Instruction TLB misses") \ M(PerfInstructionTLBMisses, "Instruction TLB misses") \
M(PerfLocalMemoryReferences, "Local NUMA node memory reads") \
M(PerfLocalMemoryMisses, "Local NUMA node memory read misses") \
\ \
M(CreatedHTTPConnections, "Total amount of created HTTP connections (closed or opened).") \ M(CreatedHTTPConnections, "Total amount of created HTTP connections (closed or opened).") \
\ \

View File

@ -193,12 +193,16 @@ static const PerfEventInfo raw_events_info[] = {
// https://stackoverflow.com/questions/49933319/how-to-interpret-perf-itlb-loads-itlb-load-misses // https://stackoverflow.com/questions/49933319/how-to-interpret-perf-itlb-loads-itlb-load-misses
CACHE_EVENT(PERF_COUNT_HW_CACHE_ITLB, PerfInstructionTLBReferences, ACCESS), CACHE_EVENT(PERF_COUNT_HW_CACHE_ITLB, PerfInstructionTLBReferences, ACCESS),
CACHE_EVENT(PERF_COUNT_HW_CACHE_ITLB, PerfInstructionTLBMisses, MISS), CACHE_EVENT(PERF_COUNT_HW_CACHE_ITLB, PerfInstructionTLBMisses, MISS),
CACHE_EVENT(PERF_COUNT_HW_CACHE_NODE, PerfLocalMemoryReferences, ACCESS),
CACHE_EVENT(PERF_COUNT_HW_CACHE_NODE, PerfLocalMemoryMisses, MISS),
}; };
static_assert(sizeof(raw_events_info) / sizeof(raw_events_info[0]) == NUMBER_OF_RAW_EVENTS); static_assert(sizeof(raw_events_info) / sizeof(raw_events_info[0]) == NUMBER_OF_RAW_EVENTS);
#undef HARDWARE_EVENT #undef HARDWARE_EVENT
#undef SOFTWARE_EVENT #undef SOFTWARE_EVENT
#undef CACHE_EVENT
// A map of event name -> event index, to parse event list in settings. // A map of event name -> event index, to parse event list in settings.
static std::unordered_map<std::string, size_t> populateEventMap() static std::unordered_map<std::string, size_t> populateEventMap()

View File

@ -59,6 +59,8 @@ namespace ProfileEvents
extern const Event PerfDataTLBMisses; extern const Event PerfDataTLBMisses;
extern const Event PerfInstructionTLBReferences; extern const Event PerfInstructionTLBReferences;
extern const Event PerfInstructionTLBMisses; extern const Event PerfInstructionTLBMisses;
extern const Event PerfLocalMemoryReferences;
extern const Event PerfLocalMemoryMisses;
#endif #endif
} }
@ -162,7 +164,7 @@ struct PerfEventValue
UInt64 time_running = 0; UInt64 time_running = 0;
}; };
static constexpr size_t NUMBER_OF_RAW_EVENTS = 20; static constexpr size_t NUMBER_OF_RAW_EVENTS = 22;
struct PerfDescriptorsHolder : boost::noncopyable struct PerfDescriptorsHolder : boost::noncopyable
{ {