mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 13:11:40 +00:00
perf record: Add new option to sample identifier
In preparation for recording sideband events in a virtual machine guest so that they can be injected into a host perf.data file. Add an option to always include sample type PERF_SAMPLE_IDENTIFIER. Committer testing: # perf record sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.020 MB perf.data (7 samples) ] # perf evlist -v cycles: size: 128, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD, read_format: ID, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, sample_id_all: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1 # # # perf record --sample-identifier sleep 1 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.022 MB perf.data (7 samples) ] # perf evlist -v cycles: size: 128, { sample_period, sample_freq }: 4000, sample_type: IP|TID|TIME|PERIOD|IDENTIFIER, read_format: ID, disabled: 1, inherit: 1, mmap: 1, comm: 1, freq: 1, enable_on_exec: 1, task: 1, sample_id_all: 1, mmap2: 1, comm_exec: 1, ksymbol: 1, bpf_event: 1 # Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Acked-by: Ian Rogers <irogers@google.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Link: https://lore.kernel.org/r/20220615052511.4441-1-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
6b080312fc
commit
61110883a0
@ -313,6 +313,11 @@ OPTIONS
|
||||
--sample-cpu::
|
||||
Record the sample cpu.
|
||||
|
||||
--sample-identifier::
|
||||
Record the sample identifier i.e. PERF_SAMPLE_IDENTIFIER bit set in
|
||||
the sample_type member of the struct perf_event_attr argument to the
|
||||
perf_event_open system call.
|
||||
|
||||
-n::
|
||||
--no-samples::
|
||||
Don't sample.
|
||||
|
@ -3191,6 +3191,8 @@ static struct option __record_options[] = {
|
||||
OPT_BOOLEAN(0, "code-page-size", &record.opts.sample_code_page_size,
|
||||
"Record the sampled code address (ip) page size"),
|
||||
OPT_BOOLEAN(0, "sample-cpu", &record.opts.sample_cpu, "Record the sample cpu"),
|
||||
OPT_BOOLEAN(0, "sample-identifier", &record.opts.sample_identifier,
|
||||
"Record the sample identifier"),
|
||||
OPT_BOOLEAN_SET('T', "timestamp", &record.opts.sample_time,
|
||||
&record.opts.sample_time_set,
|
||||
"Record the sample timestamps"),
|
||||
|
@ -121,7 +121,7 @@ void evlist__config(struct evlist *evlist, struct record_opts *opts, struct call
|
||||
evlist__for_each_entry(evlist, evsel)
|
||||
evsel__config_leader_sampling(evsel, evlist);
|
||||
|
||||
if (opts->full_auxtrace) {
|
||||
if (opts->full_auxtrace || opts->sample_identifier) {
|
||||
/*
|
||||
* Need to be able to synthesize and parse selected events with
|
||||
* arbitrary sample types, which requires always being able to
|
||||
|
@ -28,6 +28,7 @@ struct record_opts {
|
||||
bool sample_time;
|
||||
bool sample_time_set;
|
||||
bool sample_cpu;
|
||||
bool sample_identifier;
|
||||
bool period;
|
||||
bool period_set;
|
||||
bool running_time;
|
||||
|
Loading…
Reference in New Issue
Block a user