mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-07 14:32:23 +00:00
perf evlist: Remove group option.
The group option predates grouping events using curly braces added in
commit 89efb02950
("perf tools: Add support to parse event group
syntax").
The --group option was retained for legacy support (in August
2012) but keeping it adds complexity.
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Anshuman Khandual <anshuman.khandual@arm.com>
Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
Cc: Eelco Chaudron <echaudro@redhat.com>
Cc: German Gomez <german.gomez@arm.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: James Clark <james.clark@arm.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Kim Phillips <kim.phillips@amd.com>
Cc: Leo Yan <leo.yan@linaro.org>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Riccardo Mancini <rickyman7@gmail.com>
Cc: Sandipan Das <sandipan.das@amd.com>
Cc: Sean Christopherson <seanjc@google.com>
Cc: Shaomin Deng <dengshaomin@cdjrlc.com>
Cc: Stephane Eranian <eranian@google.com>
Cc: Timothy Hayes <timothy.hayes@arm.com>
Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com>
Cc: bpf@vger.kernel.org
Link: https://lore.kernel.org/r/20221213232651.1269909-6-irogers@google.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
caec54705a
commit
5f8f95673f
@ -238,10 +238,6 @@ OPTIONS
|
||||
Also, by adding a comma, the number of mmap pages for AUX
|
||||
area tracing can be specified.
|
||||
|
||||
--group::
|
||||
Put all events in a single event group. This precedes the --event
|
||||
option and remains only for backward compatibility. See --event.
|
||||
|
||||
-g::
|
||||
Enables call-graph (stack chain/backtrace) recording for both
|
||||
kernel space and user space.
|
||||
|
@ -51,9 +51,6 @@ Default is to monitor all CPUS.
|
||||
--count-filter=<count>::
|
||||
Only display functions with more events than this.
|
||||
|
||||
--group::
|
||||
Put the counters into a counter group.
|
||||
|
||||
--group-sort-idx::
|
||||
Sort the output by the event at the index n in group. If n is invalid,
|
||||
sort by the first event. It can support multiple groups with different
|
||||
@ -313,10 +310,10 @@ use '-e e1 -e e2 -G foo,foo' or just use '-e e1 -e e2 -G foo'.
|
||||
|
||||
perf top -e cycles,probe:icmp_rcv --switch-on=probe:icmp_rcv
|
||||
|
||||
Alternatively one can ask for --group and then two overhead columns
|
||||
Alternatively one can ask for a group and then two overhead columns
|
||||
will appear, the first for cycles and the second for the switch-on event.
|
||||
|
||||
perf top --group -e cycles,probe:icmp_rcv --switch-on=probe:icmp_rcv
|
||||
perf top -e '{cycles,probe:icmp_rcv}' --switch-on=probe:icmp_rcv
|
||||
|
||||
This may be interesting to measure a workload only after some initialization
|
||||
phase is over, i.e. insert a perf probe at that point and use the above
|
||||
|
@ -3380,8 +3380,6 @@ static struct option __record_options[] = {
|
||||
OPT_CALLBACK(0, "mmap-flush", &record.opts, "number",
|
||||
"Minimal number of bytes that is extracted from mmap data pages (default: 1)",
|
||||
record__mmap_flush_parse),
|
||||
OPT_BOOLEAN(0, "group", &record.opts.group,
|
||||
"put the counters into a counter group"),
|
||||
OPT_CALLBACK_NOOPT('g', NULL, &callchain_param,
|
||||
NULL, "enables call-graph recording" ,
|
||||
&record_callchain_opt),
|
||||
|
@ -181,7 +181,6 @@ static bool topdown_run = false;
|
||||
static bool smi_cost = false;
|
||||
static bool smi_reset = false;
|
||||
static int big_num_opt = -1;
|
||||
static bool group = false;
|
||||
static const char *pre_cmd = NULL;
|
||||
static const char *post_cmd = NULL;
|
||||
static bool sync_run = false;
|
||||
@ -781,9 +780,6 @@ static int __run_perf_stat(int argc, const char **argv, int run_idx)
|
||||
child_pid = evsel_list->workload.pid;
|
||||
}
|
||||
|
||||
if (group)
|
||||
evlist__set_leader(evsel_list);
|
||||
|
||||
if (!cpu_map__is_dummy(evsel_list->core.user_requested_cpus)) {
|
||||
if (affinity__setup(&saved_affinity) < 0)
|
||||
return -1;
|
||||
@ -1192,8 +1188,6 @@ static struct option stat_options[] = {
|
||||
#endif
|
||||
OPT_BOOLEAN('a', "all-cpus", &target.system_wide,
|
||||
"system-wide collection from all CPUs"),
|
||||
OPT_BOOLEAN('g', "group", &group,
|
||||
"put the counters into a counter group"),
|
||||
OPT_BOOLEAN(0, "scale", &stat_config.scale,
|
||||
"Use --no-scale to disable counter scaling for multiplexing"),
|
||||
OPT_INCR('v', "verbose", &verbose,
|
||||
|
@ -1471,8 +1471,6 @@ int cmd_top(int argc, const char **argv)
|
||||
"dump the symbol table used for profiling"),
|
||||
OPT_INTEGER('f', "count-filter", &top.count_filter,
|
||||
"only display functions with more events than this"),
|
||||
OPT_BOOLEAN(0, "group", &opts->group,
|
||||
"put the counters into a counter group"),
|
||||
OPT_BOOLEAN('i', "no-inherit", &opts->no_inherit,
|
||||
"child tasks do not inherit counters"),
|
||||
OPT_STRING(0, "sym-annotate", &top.sym_filter, "symbol name",
|
||||
|
@ -49,7 +49,6 @@ Following tests are defined (with perf commands):
|
||||
perf record --call-graph dwarf kill (test-record-graph-dwarf)
|
||||
perf record --call-graph fp kill (test-record-graph-fp)
|
||||
perf record --call-graph fp kill (test-record-graph-fp-aarch64)
|
||||
perf record --group -e cycles,instructions kill (test-record-group)
|
||||
perf record -e '{cycles,instructions}' kill (test-record-group1)
|
||||
perf record -e '{cycles/period=1/,instructions/period=2/}:S' kill (test-record-group2)
|
||||
perf record -D kill (test-record-no-delay)
|
||||
@ -66,6 +65,5 @@ Following tests are defined (with perf commands):
|
||||
perf stat -d kill (test-stat-detailed-1)
|
||||
perf stat -dd kill (test-stat-detailed-2)
|
||||
perf stat -ddd kill (test-stat-detailed-3)
|
||||
perf stat --group -e cycles,instructions kill (test-stat-group)
|
||||
perf stat -e '{cycles,instructions}' kill (test-stat-group1)
|
||||
perf stat -i -e cycles kill (test-stat-no-inherit)
|
||||
|
@ -1,22 +0,0 @@
|
||||
[config]
|
||||
command = record
|
||||
args = --no-bpf-event --group -e cycles,instructions kill >/dev/null 2>&1
|
||||
ret = 1
|
||||
|
||||
[event-1:base-record]
|
||||
fd=1
|
||||
group_fd=-1
|
||||
sample_type=327
|
||||
read_format=4|20
|
||||
|
||||
[event-2:base-record]
|
||||
fd=2
|
||||
group_fd=1
|
||||
config=1
|
||||
sample_type=327
|
||||
read_format=4|20
|
||||
mmap=0
|
||||
comm=0
|
||||
task=0
|
||||
enable_on_exec=0
|
||||
disabled=0
|
@ -1,17 +0,0 @@
|
||||
[config]
|
||||
command = stat
|
||||
args = --group -e cycles,instructions kill >/dev/null 2>&1
|
||||
ret = 1
|
||||
|
||||
[event-1:base-stat]
|
||||
fd=1
|
||||
group_fd=-1
|
||||
read_format=3|15
|
||||
|
||||
[event-2:base-stat]
|
||||
fd=2
|
||||
group_fd=1
|
||||
config=1
|
||||
disabled=0
|
||||
enable_on_exec=0
|
||||
read_format=3|15
|
@ -230,7 +230,7 @@ int __evlist__set_tracepoints_handlers(struct evlist *evlist,
|
||||
return err;
|
||||
}
|
||||
|
||||
void evlist__set_leader(struct evlist *evlist)
|
||||
static void evlist__set_leader(struct evlist *evlist)
|
||||
{
|
||||
perf_evlist__set_leader(&evlist->core);
|
||||
}
|
||||
|
@ -221,8 +221,6 @@ void evlist__set_selected(struct evlist *evlist, struct evsel *evsel);
|
||||
int evlist__create_maps(struct evlist *evlist, struct target *target);
|
||||
int evlist__apply_filters(struct evlist *evlist, struct evsel **err_evsel);
|
||||
|
||||
void evlist__set_leader(struct evlist *evlist);
|
||||
|
||||
u64 __evlist__combined_sample_type(struct evlist *evlist);
|
||||
u64 evlist__combined_sample_type(struct evlist *evlist);
|
||||
u64 evlist__combined_branch_type(struct evlist *evlist);
|
||||
|
@ -1142,14 +1142,6 @@ static PyObject *pyrf_evlist__open(struct pyrf_evlist *pevlist,
|
||||
PyObject *args, PyObject *kwargs)
|
||||
{
|
||||
struct evlist *evlist = &pevlist->evlist;
|
||||
int group = 0;
|
||||
static char *kwlist[] = { "group", NULL };
|
||||
|
||||
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OOii", kwlist, &group))
|
||||
return NULL;
|
||||
|
||||
if (group)
|
||||
evlist__set_leader(evlist);
|
||||
|
||||
if (evlist__open(evlist) < 0) {
|
||||
PyErr_SetFromErrno(PyExc_OSError);
|
||||
|
@ -99,13 +99,6 @@ void evlist__config(struct evlist *evlist, struct record_opts *opts, struct call
|
||||
bool use_comm_exec;
|
||||
bool sample_id = opts->sample_id;
|
||||
|
||||
/*
|
||||
* Set the evsel leader links before we configure attributes,
|
||||
* since some might depend on this info.
|
||||
*/
|
||||
if (opts->group)
|
||||
evlist__set_leader(evlist);
|
||||
|
||||
if (perf_cpu_map__cpu(evlist->core.user_requested_cpus, 0).cpu < 0)
|
||||
opts->no_inherit = true;
|
||||
|
||||
|
@ -13,7 +13,6 @@ struct option;
|
||||
|
||||
struct record_opts {
|
||||
struct target target;
|
||||
bool group;
|
||||
bool inherit_stat;
|
||||
bool no_buffering;
|
||||
bool no_inherit;
|
||||
|
Loading…
Reference in New Issue
Block a user