mirror of https://gitee.com/openkylin/linux.git
perf mem: Support AUX trace
The 'perf mem' tool doesn't support AUX trace data so it cannot receive the hardware tracing data. On arm64, although it doesn't support PMU events for memory load and store, ARM SPE is a good candidate for memory profiling, the hardware tracer can record memory accessing operations with affiliated information (e.g. physical address and virtual address for accessing, cache levels, TLB walking, latency, etc). To allow "perf mem" tool to support AUX trace, this patch adds the AUX callbacks for session structure; make itrace memory event as default for "perf mem", this tells the AUX trace decoder to synthesize memory samples. Signed-off-by: Leo Yan <leo.yan@linaro.org> Acked-by: Jiri Olsa <jolsa@redhat.com> Link: https://lore.kernel.org/r/20201106094853.21082-8-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
014a771c78
commit
13e5df1e3f
|
@ -7,6 +7,7 @@
|
|||
#include "perf.h"
|
||||
|
||||
#include <subcmd/parse-options.h>
|
||||
#include "util/auxtrace.h"
|
||||
#include "util/trace-event.h"
|
||||
#include "util/tool.h"
|
||||
#include "util/session.h"
|
||||
|
@ -255,6 +256,12 @@ static int process_sample_event(struct perf_tool *tool,
|
|||
|
||||
static int report_raw_events(struct perf_mem *mem)
|
||||
{
|
||||
struct itrace_synth_opts itrace_synth_opts = {
|
||||
.set = true,
|
||||
.mem = true, /* Only enable memory event */
|
||||
.default_no_sample = true,
|
||||
};
|
||||
|
||||
struct perf_data data = {
|
||||
.path = input_name,
|
||||
.mode = PERF_DATA_MODE_READ,
|
||||
|
@ -267,6 +274,8 @@ static int report_raw_events(struct perf_mem *mem)
|
|||
if (IS_ERR(session))
|
||||
return PTR_ERR(session);
|
||||
|
||||
session->itrace_synth_opts = &itrace_synth_opts;
|
||||
|
||||
if (mem->cpu_list) {
|
||||
ret = perf_session__cpu_bitmap(session, mem->cpu_list,
|
||||
mem->cpu_bitmap);
|
||||
|
@ -410,8 +419,12 @@ int cmd_mem(int argc, const char **argv)
|
|||
.comm = perf_event__process_comm,
|
||||
.lost = perf_event__process_lost,
|
||||
.fork = perf_event__process_fork,
|
||||
.attr = perf_event__process_attr,
|
||||
.build_id = perf_event__process_build_id,
|
||||
.namespaces = perf_event__process_namespaces,
|
||||
.auxtrace_info = perf_event__process_auxtrace_info,
|
||||
.auxtrace = perf_event__process_auxtrace,
|
||||
.auxtrace_error = perf_event__process_auxtrace_error,
|
||||
.ordered_events = true,
|
||||
},
|
||||
.input_name = "perf.data",
|
||||
|
|
Loading…
Reference in New Issue