Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85c273d2 authored by Andi Kleen's avatar Andi Kleen Committed by Arnaldo Carvalho de Melo
Browse files

perf record: Support recording running/enabled time



Add an option to perf record to record running/enabled time for read
events, similar to what stat does.

This is useful to understand multiplexing problems.

Right now the report support is not great, but at least report -D
already supports it.

Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
Acked-by: default avatarJiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/1424819620-16043-1-git-send-email-andi@firstfloor.org


[ Fixed the Documentation entry to match the OPT_BOOLEAN one ]
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 50674065
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -241,6 +241,9 @@ Capture machine state (registers) at interrupt, i.e., on counter overflows for
each sample. List of captured registers depends on the architecture. This option
is off by default.

--running-time::
Record running and enabled time for read events (:S)

SEE ALSO
--------
linkperf:perf-stat[1], linkperf:perf-list[1]
+2 −0
Original line number Diff line number Diff line
@@ -839,6 +839,8 @@ struct option __record_options[] = {
		    "use per-thread mmaps"),
	OPT_BOOLEAN('I', "intr-regs", &record.opts.sample_intr_regs,
		    "Sample machine registers on interrupt"),
	OPT_BOOLEAN(0, "running-time", &record.opts.running_time,
		    "Record running/enabled time of read (:S) events"),
	OPT_END()
};

+1 −0
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ struct record_opts {
	bool	     sample_time;
	bool	     period;
	bool	     sample_intr_regs;
	bool	     running_time;
	unsigned int freq;
	unsigned int mmap_pages;
	unsigned int user_freq;
+6 −0
Original line number Diff line number Diff line
@@ -734,6 +734,12 @@ void perf_evsel__config(struct perf_evsel *evsel, struct record_opts *opts)
	if (opts->sample_transaction)
		perf_evsel__set_sample_bit(evsel, TRANSACTION);

	if (opts->running_time) {
		evsel->attr.read_format |=
			PERF_FORMAT_TOTAL_TIME_ENABLED |
			PERF_FORMAT_TOTAL_TIME_RUNNING;
	}

	/*
	 * XXX see the function comment above
	 *