mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-01 06:46:35 +01:00
perf list: Output tool events
Add support in 'perf list' to output tool internal events, currently
only 'duration_time'.
Committer testing:
$ perf list dur*
List of pre-defined events (to be used in -e):
duration_time [Tool event]
Metric Groups:
$ perf list sw
List of pre-defined events (to be used in -e):
alignment-faults [Software event]
bpf-output [Software event]
context-switches OR cs [Software event]
cpu-clock [Software event]
cpu-migrations OR migrations [Software event]
dummy [Software event]
emulation-faults [Software event]
major-faults [Software event]
minor-faults [Software event]
page-faults OR faults [Software event]
task-clock [Software event]
duration_time [Tool event]
$ perf list | grep duration
duration_time [Tool event]
[L1D miss outstandings duration in cycles]
page walk duration are excluded in Skylake]
load. EPT page walk duration are excluded in Skylake]
page walk duration are excluded in Skylake]
store. EPT page walk duration are excluded in Skylake]
(instruction fetch) request. EPT page walk duration are excluded in
instruction fetch request. EPT page walk duration are excluded in
$
Signed-off-by: Andi Kleen <[email protected]>
Tested-by: Arnaldo Carvalho de Melo <[email protected]>
Acked-by: Jiri Olsa <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
This commit is contained in:
1 parent
3371f389e4
commit
5e0861baa3
3 files changed
+25
-2
No files matched your search
@@ -70,10 +70,11 @@ int cmd_list(int argc, const char **argv)
|
||||
print_symbol_events(NULL, PERF_TYPE_HARDWARE,
|
||||
event_symbols_hw, PERF_COUNT_HW_MAX, raw_dump);
|
||||
else if (strcmp(argv[i], "sw") == 0 ||
|
||||
strcmp(argv[i], "software") == 0)
|
||||
strcmp(argv[i], "software") == 0) {
|
||||
print_symbol_events(NULL, PERF_TYPE_SOFTWARE,
|
||||
event_symbols_sw, PERF_COUNT_SW_MAX, raw_dump);
|
||||
else if (strcmp(argv[i], "cache") == 0 ||
|
||||
print_tool_events(NULL, raw_dump);
|
||||
} else if (strcmp(argv[i], "cache") == 0 ||
|
||||
strcmp(argv[i], "hwcache") == 0)
|
||||
print_hwcache_events(NULL, raw_dump);
|
||||
else if (strcmp(argv[i], "pmu") == 0)
|
||||
@@ -113,6 +114,7 @@ int cmd_list(int argc, const char **argv)
|
||||
event_symbols_hw, PERF_COUNT_HW_MAX, raw_dump);
|
||||
print_symbol_events(s, PERF_TYPE_SOFTWARE,
|
||||
event_symbols_sw, PERF_COUNT_SW_MAX, raw_dump);
|
||||
print_tool_events(s, raw_dump);
|
||||
print_hwcache_events(s, raw_dump);
|
||||
print_pmu_events(s, raw_dump, !desc_flag,
|
||||
long_desc_flag,
|
||||
|
||||
@@ -2457,6 +2457,25 @@ out_enomem:
|
||||
return evt_num;
|
||||
}
|
||||
|
||||
static void print_tool_event(const char *name, const char *event_glob,
|
||||
bool name_only)
|
||||
{
|
||||
if (event_glob && !strglobmatch(name, event_glob))
|
||||
return;
|
||||
if (name_only)
|
||||
printf("%s ", name);
|
||||
else
|
||||
printf(" %-50s [%s]\n", name, "Tool event");
|
||||
|
||||
}
|
||||
|
||||
void print_tool_events(const char *event_glob, bool name_only)
|
||||
{
|
||||
print_tool_event("duration_time", event_glob, name_only);
|
||||
if (pager_in_use())
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void print_symbol_events(const char *event_glob, unsigned type,
|
||||
struct event_symbol *syms, unsigned max,
|
||||
bool name_only)
|
||||
@@ -2540,6 +2559,7 @@ void print_events(const char *event_glob, bool name_only, bool quiet_flag,
|
||||
|
||||
print_symbol_events(event_glob, PERF_TYPE_SOFTWARE,
|
||||
event_symbols_sw, PERF_COUNT_SW_MAX, name_only);
|
||||
print_tool_events(event_glob, name_only);
|
||||
|
||||
print_hwcache_events(event_glob, name_only);
|
||||
|
||||
|
||||
@@ -204,6 +204,7 @@ extern struct event_symbol event_symbols_sw[];
|
||||
void print_symbol_events(const char *event_glob, unsigned type,
|
||||
struct event_symbol *syms, unsigned max,
|
||||
bool name_only);
|
||||
void print_tool_events(const char *event_glob, bool name_only);
|
||||
void print_tracepoint_events(const char *subsys_glob, const char *event_glob,
|
||||
bool name_only);
|
||||
int print_hwcache_events(const char *event_glob, bool name_only);
|
||||
|
||||
Reference in new issue
Block a user