diff options
author | Namhyung Kim <namhyung@kernel.org> | 2024-07-31 16:55:04 -0700 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2024-08-01 18:55:55 -0300 |
commit | 2d99a991337f70a7d11135d6a539bed8c060cb0f (patch) | |
tree | 056bc0fd69db1c6a377cf53b37c86050c4935159 /tools/perf/builtin-mem.c | |
parent | 871893d748cce346097d907b9937604af3dafcf1 (diff) |
perf mem: Add -s/--sort option
So that users can set the sort key manually as they want.
$ perf mem report -s
Error: switch `s' requires a value
Usage: perf mem report [<options>]
-s, --sort <key[,key2...]>
sort by key(s): overhead overhead_sys overhead_us overhead_guest_sys
overhead_guest_us overhead_children sample period
weight1 weight2 weight3 ins_lat retire_lat p_stage_cyc
pid comm dso symbol parent cpu socket srcline srcfile
local_weight weight transaction trace symbol_size
dso_size cgroup cgroup_id ipc_null time code_page_size
local_ins_lat ins_lat local_p_stage_cyc p_stage_cyc
addr local_retire_lat retire_lat simd type typeoff
symoff symbol_daddr dso_daddr locked tlb mem snoop
dcacheline symbol_iaddr phys_daddr data_page_size
blocked
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: https://lore.kernel.org/r/20240731235505.710436-6-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-mem.c')
-rw-r--r-- | tools/perf/builtin-mem.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/tools/perf/builtin-mem.c b/tools/perf/builtin-mem.c index 819edaf6b1df..24a4f0084f49 100644 --- a/tools/perf/builtin-mem.c +++ b/tools/perf/builtin-mem.c @@ -19,6 +19,7 @@ #include "util/symbol.h" #include "util/pmus.h" #include "util/sample.h" +#include "util/sort.h" #include "util/string2.h" #include "util/util.h" #include <linux/err.h> @@ -28,7 +29,8 @@ struct perf_mem { struct perf_tool tool; - char const *input_name; + const char *input_name; + const char *sort_key; bool hide_unresolved; bool dump_raw; bool force; @@ -313,11 +315,13 @@ static char *get_sort_order(struct perf_mem *mem) bool has_extra_options = (mem->phys_addr | mem->data_page_size) ? true : false; char sort[128]; + if (mem->sort_key) + scnprintf(sort, sizeof(sort), "--sort=%s", mem->sort_key); /* * there is no weight (cost) associated with stores, so don't print * the column */ - if (!(mem->operation & MEM_OPERATION_LOAD)) { + else if (!(mem->operation & MEM_OPERATION_LOAD)) { strcpy(sort, "--sort=mem,sym,dso,symbol_daddr," "dso_daddr,tlb,locked"); } else if (has_extra_options) { @@ -468,6 +472,7 @@ int cmd_mem(int argc, const char **argv) */ .operation = MEM_OPERATION_LOAD | MEM_OPERATION_STORE, }; + char *sort_order_help = sort_help("sort by key(s):", SORT_MODE__MEMORY); const struct option mem_options[] = { OPT_CALLBACK('t', "type", &mem.operation, "type", "memory operations(load,store) Default load,store", @@ -501,6 +506,8 @@ int cmd_mem(int argc, const char **argv) "separator", "separator for columns, no spaces will be added" " between columns '.' is reserved."), + OPT_STRING('s', "sort", &mem.sort_key, "key[,key2...]", + sort_order_help), OPT_PARENT(mem_options) }; const char *const mem_subcommands[] = { "record", "report", NULL }; |