perf evlist: Remove group option.
authorIan Rogers <irogers@google.com>
Tue, 13 Dec 2022 23:26:51 +0000 (15:26 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 14 Dec 2022 18:28:18 +0000 (15:28 -0300)
The group option predates grouping events using curly braces added in
commit 89efb029502d7f2d ("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>
13 files changed:
tools/perf/Documentation/perf-record.txt
tools/perf/Documentation/perf-top.txt
tools/perf/builtin-record.c
tools/perf/builtin-stat.c
tools/perf/builtin-top.c
tools/perf/tests/attr/README
tools/perf/tests/attr/test-record-group [deleted file]
tools/perf/tests/attr/test-stat-group [deleted file]
tools/perf/util/evlist.c
tools/perf/util/evlist.h
tools/perf/util/python.c
tools/perf/util/record.c
tools/perf/util/record.h

index 5f9fa07b3ddecc886b57937c6a863c9853f2339b..ff815c2f67e8c0475137a786931d6615108e9e3b 100644 (file)
@@ -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.
index c1fdba26bf53a2027f89a2a6c7617b680d0ff260..e534d709cc5ac0d66d2cca52e0d123bae4a3c9f7 100644 (file)
@@ -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 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
index 7e17374f6c1a24e9ecbea1ca98ef3349961e109f..8ecffa696ce32e217a0757ac105b6c01073d59d3 100644 (file)
@@ -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),
index d040fbcdcc5a76acada00a32a592e21baf547054..2808f2aa9a825c45ecccbc1eb9133cedc902995d 100644 (file)
@@ -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,
index bb5bd241246bca4b818b4c6d85192b2c397a2588..d4b5b02bab7335b01171f65046df3418164d67f6 100644 (file)
@@ -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",
index eb3f7d4bb32458bfc87d3742e068e96a9ff491b0..4066fec7180a8eaa362874f4a33678abaf681007 100644 (file)
@@ -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)
diff --git a/tools/perf/tests/attr/test-record-group b/tools/perf/tests/attr/test-record-group
deleted file mode 100644 (file)
index 6c1cff8..0000000
+++ /dev/null
@@ -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
diff --git a/tools/perf/tests/attr/test-stat-group b/tools/perf/tests/attr/test-stat-group
deleted file mode 100644 (file)
index e15d694..0000000
+++ /dev/null
@@ -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
index 590d4e77effcfa5e6223afbb867be862941a3269..817df2504a1edbeae0eadb89ddacd663e09ed691 100644 (file)
@@ -230,7 +230,7 @@ out:
        return err;
 }
 
-void evlist__set_leader(struct evlist *evlist)
+static void evlist__set_leader(struct evlist *evlist)
 {
        perf_evlist__set_leader(&evlist->core);
 }
index e5b84ead566c90516f4eaa698ca6bfb7901db45c..01fa9d592c5a774cbf09bb8404cdfa1574913e44 100644 (file)
@@ -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);
index 7320f7f777fe0e56f78080048835a359dcf17d4b..212031b97910a1d016147cae394498826ca4d96d 100644 (file)
@@ -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);
index 7b58f6c7c69dea0b92b984876375356b17d80ad6..9eb5c6a08999e83bb1ef05117ba8ce926d93dc16 100644 (file)
@@ -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;
 
index 4269e916f450cef5d10d2b9faf56e50b58996181..46212bf020cfbcbea7d29acac69b017ccb2c61a4 100644 (file)
@@ -13,7 +13,6 @@ struct option;
 
 struct record_opts {
        struct target target;
-       bool          group;
        bool          inherit_stat;
        bool          no_buffering;
        bool          no_inherit;