17 #include <perfmon/perfmon.h> 24 int row = va_arg (*args,
int);
48 .name =
"load-blocks",
49 .description =
"load operations blocked due to various uarch reasons",
50 .source =
"intel-core",
52 .events[0] = INTEL_CORE_E_LD_BLOCKS_STORE_FORWARD,
53 .events[1] = INTEL_CORE_E_LD_BLOCKS_NO_SR,
54 .events[2] = INTEL_CORE_E_LD_BLOCKS_PARTIAL_ADDRESS_ALIAS,
57 .column_headers =
PERFMON_STRINGS (
"Calls",
"Packets",
"[1]",
"[2]",
"[3]"),
58 .footer =
"Per node call statistics:\n" 59 "[1] Loads blocked due to overlapping with a preceding store that " 60 "cannot be forwarded.\n" 61 "[2] The number of times that split load operations are " 62 "temporarily blocked because\n" 63 " all resources for handling the split accesses are in use\n" 64 "[3] False dependencies in Memory Order Buffer (MOB) due to " 65 "partial compare on address.\n",
description fragment has unexpected format
#define PERFMON_STRINGS(...)
static u8 * format_load_blocks(u8 *s, va_list *args)
u64 value[PERF_MAX_EVENTS]
PERFMON_REGISTER_BUNDLE(load_blocks)