All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@intel.com>
To: Ian Rogers <irogers@google.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Jiri Olsa <jolsa@redhat.com>,
	Alexey Bayduraev <alexey.v.bayduraev@linux.intel.com>,
	Namhyung Kim <namhyung@kernel.org>, Leo Yan <leo.yan@linaro.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH V1 13/23] perf evlist: Add evlist__add_system_wide_dummy()
Date: Fri, 6 May 2022 11:14:45 +0300	[thread overview]
Message-ID: <fed8d256-b214-e25f-9a5f-492442c4b849@intel.com> (raw)
In-Reply-To: <CAP-5=fWKOYiOSs=TppGCD+k283rUUsexzVuJP17Pm76EMOs+xA@mail.gmail.com>

On 6/05/22 02:56, Ian Rogers wrote:
> On Thu, May 5, 2022 at 9:57 AM Adrian Hunter <adrian.hunter@intel.com> wrote:
>>
>> Add evlist__add_system_wide_dummy() to enable creating a system-wide dummy
>> event that sets up the system-wide maps before map propagation.
> 
> Perhaps this should be:
> evlist__add_dummy_on_all_online_cpus()

Ok, but offline isn't an option, so I'll drop 'online' from the name.

> my thoughts being that a system wide dummy sounds like the dummy CPU
> map, ie {-1} whilst what happens here is opening on all online CPUs
> {0-35} on a 36 hyperthread system. Note also that the libperf
> cpu_map__read_all_cpu_map code doesn't discover sysfs' mount properly,
> as done in:
> tools/lib/api/fs/fs.h
> Some tech debt.
> 
>> For convenience, add evlist__add_aux_dummy() so that the logic can be used
>> whether or not the event needs to be system-wide.
>>
>> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
>> ---
>>  tools/perf/util/evlist.c | 40 ++++++++++++++++++++++++++++++++++++++++
>>  tools/perf/util/evlist.h |  5 +++++
>>  2 files changed, 45 insertions(+)
>>
>> diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
>> index 78c47cbafbc2..58ea562ddbd2 100644
>> --- a/tools/perf/util/evlist.c
>> +++ b/tools/perf/util/evlist.c
>> @@ -264,6 +264,46 @@ int evlist__add_dummy(struct evlist *evlist)
>>         return 0;
>>  }
>>
>> +static void evlist__add_system_wide(struct evlist *evlist, struct evsel *evsel)
> 
> This would be:
> evlist__add_on_all_online_cpus(..)
> 
>> +{
>> +       evsel->core.system_wide = true;
>> +
>> +       /* All CPUs */
>> +       perf_cpu_map__put(evsel->core.own_cpus);
>> +       evsel->core.own_cpus = perf_cpu_map__new(NULL);
>> +       perf_cpu_map__put(evsel->core.cpus);
>> +       evsel->core.cpus = perf_cpu_map__get(evsel->core.own_cpus);
>> +
>> +       /* No threads */
>> +       perf_thread_map__put(evsel->core.threads);
>> +       evsel->core.threads = perf_thread_map__new_dummy();
>> +
>> +       evlist__add(evlist, evsel);
>> +}
>> +
>> +struct evsel *evlist__add_aux_dummy(struct evlist *evlist, bool system_wide)
>> +{
>> +       struct evsel *evsel = evlist__dummy_event(evlist);
>> +
>> +       if (!evsel)
>> +               return NULL;
>> +
>> +       evsel->core.attr.exclude_kernel = 1;
>> +       evsel->core.attr.exclude_guest = 1;
>> +       evsel->core.attr.exclude_hv = 1;
>> +       evsel->core.attr.freq = 0;
>> +       evsel->core.attr.sample_period = 1;
>> +       evsel->no_aux_samples = true;
>> +       evsel->name = strdup("dummy:u");
>> +
>> +       if (system_wide)
>> +               evlist__add_system_wide(evlist, evsel);
>> +       else
>> +               evlist__add(evlist, evsel);
>> +
>> +       return evsel;
>> +}
>> +
>>  static int evlist__add_attrs(struct evlist *evlist, struct perf_event_attr *attrs, size_t nr_attrs)
>>  {
>>         struct evsel *evsel, *n;
>> diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
>> index 4062f5aebfc1..dd1af114e033 100644
>> --- a/tools/perf/util/evlist.h
>> +++ b/tools/perf/util/evlist.h
>> @@ -114,6 +114,11 @@ int arch_evlist__add_default_attrs(struct evlist *evlist);
>>  struct evsel *arch_evlist__leader(struct list_head *list);
>>
>>  int evlist__add_dummy(struct evlist *evlist);
>> +struct evsel *evlist__add_aux_dummy(struct evlist *evlist, bool system_wide);
>> +static inline struct evsel *evlist__add_system_wide_dummy(struct evlist *evlist)
>> +{
>> +       return evlist__add_aux_dummy(evlist, true);
>> +}
>>
>>  int evlist__add_sb_event(struct evlist *evlist, struct perf_event_attr *attr,
>>                          evsel__sb_cb_t cb, void *data);
>> --
>> 2.25.1
>>


  reply	other threads:[~2022-05-06  8:15 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-05 16:56 [PATCH V1 00/23] perf intel-pt: Better support for perf record --cpu Adrian Hunter
2022-05-05 16:56 ` [PATCH V1 01/23] perf intel-pt: Add a test for system-wide side band Adrian Hunter
2022-05-05 22:37   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 02/23] libperf evsel: Add perf_evsel__enable_thread() Adrian Hunter
2022-05-05 22:48   ` Ian Rogers
2022-05-06  7:18     ` Adrian Hunter
2022-05-05 16:56 ` [PATCH V1 03/23] perf evlist: Use libperf functions in evlist__enable_event_idx() Adrian Hunter
2022-05-05 22:58   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 04/23] perf auxtrace: Move evlist__enable_event_idx() to auxtrace.c Adrian Hunter
2022-05-05 23:06   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 05/23] perf auxtrace: Do not mix up mmap idx Adrian Hunter
2022-05-05 23:08   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 06/23] libperf evlist: Remove ->idx() per_cpu parameter Adrian Hunter
2022-05-05 23:08   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 07/23] libperf evlist: Move ->idx() into mmap_per_evsel() Adrian Hunter
2022-05-05 23:09   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 08/23] libperf evlist: Add evsel as a parameter to ->idx() Adrian Hunter
2022-05-05 23:27   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 09/23] perf auxtrace: Record whether an auxtrace mmap is needed Adrian Hunter
2022-05-05 23:28   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 10/23] perf auxtrace: Add mmap_needed to auxtrace_mmap_params Adrian Hunter
2022-05-05 23:40   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 11/23] perf auxtrace: Remove auxtrace_mmap_params__set_idx() per_cpu parameter Adrian Hunter
2022-05-05 22:13   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 12/23] perf evlist: Factor out evlist__dummy_event() Adrian Hunter
2022-05-05 23:42   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 13/23] perf evlist: Add evlist__add_system_wide_dummy() Adrian Hunter
2022-05-05 23:56   ` Ian Rogers
2022-05-06  8:14     ` Adrian Hunter [this message]
2022-05-06  8:34       ` Ian Rogers
2022-05-06  9:27         ` Adrian Hunter
2022-05-05 16:56 ` [PATCH V1 14/23] perf record: Use evlist__add_system_wide_dummy() in record__config_text_poke() Adrian Hunter
2022-05-05 23:57   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 15/23] perf intel-pt: Use evlist__add_system_wide_dummy() for switch tracking Adrian Hunter
2022-05-05 23:58   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 16/23] perf intel-pt: Track sideband system-wide when needed Adrian Hunter
2022-05-06  0:01   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 17/23] perf tools: Allow all_cpus to be a superset of user_requested_cpus Adrian Hunter
2022-05-05 16:56 ` [PATCH V1 18/23] libperf evlist: Allow mixing per-thread and per-cpu mmaps Adrian Hunter
2022-05-06  0:09   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 19/23] libperf evlist: Check nr_mmaps is correct Adrian Hunter
2022-05-06  0:13   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 20/23] perf stat: Add requires_cpu flag for uncore Adrian Hunter
2022-05-06  0:50   ` Ian Rogers
2022-05-06  0:52     ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 21/23] libperf evsel: Add comments for booleans Adrian Hunter
2022-05-06  0:55   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 22/23] perf tools: Allow system-wide events to keep their own CPUs Adrian Hunter
2022-05-06  1:00   ` Ian Rogers
2022-05-05 16:56 ` [PATCH V1 23/23] perf tools: Allow system-wide events to keep their own threads Adrian Hunter
2022-05-06  0:51   ` Ian Rogers
2022-05-06  1:06 ` [PATCH V1 00/23] perf intel-pt: Better support for perf record --cpu Ian Rogers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fed8d256-b214-e25f-9a5f-492442c4b849@intel.com \
    --to=adrian.hunter@intel.com \
    --cc=acme@kernel.org \
    --cc=alexey.v.bayduraev@linux.intel.com \
    --cc=irogers@google.com \
    --cc=jolsa@redhat.com \
    --cc=leo.yan@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=namhyung@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.