History

perf/core: Add weighted samples

For some events it's useful to weight sample with a hardware provided number. This expresses how expensive the action the sample represent was. This allows the profiler to scale the samples to be more informative to the programmer. There is already the period which is used similarly, but it means something different, so I chose to not overload it. Instead a new sample type for WEIGHT is added. Can be used for multiple things. Initially it is used for TSX abort costs and profiling by memory latencies (so to make expensive load appear higher up in the histograms). The concept is quite generic and can be extended to many other kinds of events or architectures, as long as the hardware provides suitable auxillary values. In principle it could be also used for software tracepoints. This adds the generic glue. A new optional sample format for a 64-bit weight value.

Andi Kleen committed 13 years ago

Commit c3feedf1 parent 9fac2cf3 files · +13 −1Browse files

Showing the changes to include/uapi/linux (1 of 3 files). Show all

Unified · Split

include/uapi/linux/perf_event.h+5−1
@@ -132,8 +132,10 @@ enum perf_event_sample_format { · 131 unmodified lines
132132 PERF_SAMPLE_BRANCH_STACK = 1U << 11,
133133 PERF_SAMPLE_REGS_USER = 1U << 12,
134134 PERF_SAMPLE_STACK_USER = 1U << 13,
135+ PERF_SAMPLE_WEIGHT = 1U << 14,
136+
137+ PERF_SAMPLE_MAX = 1U << 15, /* non-ABI */
135138
136− PERF_SAMPLE_MAX = 1U << 14, /* non-ABI */
137139 };
138140
139141 /*
@@ -588,6 +590,8 @@ enum perf_event_type { · 448 unmodified lines
588590 * { u64 size;
589591 * char data[size];
590592 * u64 dyn_size; } && PERF_SAMPLE_STACK_USER
593+ *
594+ * { u64 weight; } && PERF_SAMPLE_WEIGHT
591595 * };
592596 */
593597 PERF_RECORD_SAMPLE = 9,

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t