All of lore.kernel.org
 help / color / mirror / Atom feed
From: Namhyung Kim <namhyung@kernel.org>
To: Song Liu <songliubraving@fb.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
	Jiri Olsa <jolsa@redhat.com>, Ingo Molnar <mingo@kernel.org>,
	Peter Zijlstra <peterz@infradead.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Andi Kleen <ak@linux.intel.com>, Ian Rogers <irogers@google.com>,
	Stephane Eranian <eranian@google.com>
Subject: Re: [PATCH 4/4] perf stat: Enable BPF counter with --for-each-cgroup
Date: Thu, 1 Jul 2021 13:16:34 -0700	[thread overview]
Message-ID: <CAM9d7ch=khPthTmCNai9Mit4poiJ69Y0JuowDyBsPtpgSxUdDA@mail.gmail.com> (raw)
In-Reply-To: <CAM9d7ciSjaVsAKGo8Y5x2UucfBZVPX-yGwcvoeUhGjQQ50ADVA@mail.gmail.com>

On Wed, Jun 30, 2021 at 1:09 PM Namhyung Kim <namhyung@kernel.org> wrote:
>
> Hi Song,
>
> On Wed, Jun 30, 2021 at 11:47 AM Song Liu <songliubraving@fb.com> wrote:
> >
> >
> >
> > > On Jun 25, 2021, at 12:18 AM, Namhyung Kim <namhyung@kernel.org> wrote:
> > >
> > > Recently bperf was added to use BPF to count perf events for various
> > > purposes.  This is an extension for the approach and targetting to
> > > cgroup usages.
> > >
> > > Unlike the other bperf, it doesn't share the events with other
> > > processes but it'd reduce unnecessary events (and the overhead of
> > > multiplexing) for each monitored cgroup within the perf session.
> > >
> > > When --for-each-cgroup is used with --bpf-counters, it will open
> > > cgroup-switches event per cpu internally and attach the new BPF
> > > program to read given perf_events and to aggregate the results for
> > > cgroups.  It's only called when task is switched to a task in a
> > > different cgroup.
> > >
> > > Cc: Song Liu <songliubraving@fb.com>
> > > Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> > > ---
> > > tools/perf/Makefile.perf                    |  17 +-
> > > tools/perf/util/Build                       |   1 +
> > > tools/perf/util/bpf_counter.c               |   5 +
> > > tools/perf/util/bpf_counter_cgroup.c        | 299 ++++++++++++++++++++
> > > tools/perf/util/bpf_skel/bperf_cgroup.bpf.c | 191 +++++++++++++
> > > tools/perf/util/cgroup.c                    |   2 +
> > > tools/perf/util/cgroup.h                    |   1 +
> > > 7 files changed, 515 insertions(+), 1 deletion(-)
> > > create mode 100644 tools/perf/util/bpf_counter_cgroup.c
> > > create mode 100644 tools/perf/util/bpf_skel/bperf_cgroup.bpf.c
> >
> > [...]
> >
> > > diff --git a/tools/perf/util/bpf_counter_cgroup.c b/tools/perf/util/bpf_counter_cgroup.c
> > > new file mode 100644
> > > index 000000000000..327f97a23a84
> > > --- /dev/null
> > > +++ b/tools/perf/util/bpf_counter_cgroup.c
> > > @@ -0,0 +1,299 @@
> > > +// SPDX-License-Identifier: GPL-2.0
> > > +
> > > +/* Copyright (c) 2019 Facebook */
> >
> > I am not sure whether this ^^^ is accurate.
>
> Well, I just copied it from the bpf_counter.c file which was the base
> of this patch.  Now I don't think I have many lines of code directly
> came from the origin.
>
> So I'm not sure what I can do.  Do you want to update the
> copyright year to 2021?  Or are you ok with removing the
> line at all?
>

> > [...]
> >
> > > +
> > > +/*
> > > + * trigger the leader prog on each cpu, so the cgrp_reading map could get
> > > + * the latest results.
> > > + */
> > > +static int bperf_cgrp__sync_counters(struct evlist *evlist)
> > > +{
> > > +     int i, cpu;
> > > +     int nr_cpus = evlist->core.all_cpus->nr;
> > > +     int prog_fd = bpf_program__fd(skel->progs.trigger_read);
> > > +
> > > +     for (i = 0; i < nr_cpus; i++) {
> > > +             cpu = evlist->core.all_cpus->map[i];
> > > +             bperf_trigger_reading(prog_fd, cpu);
> > > +     }
> > > +
> > > +     return 0;
> > > +}
> > > +
> > > +static int bperf_cgrp__enable(struct evsel *evsel)
> > > +{
> >
> > Do we need to call bperf_cgrp__sync_counters() before setting enabled to 1?
> > If we don't, we may count some numbers before setting enabled to 1, no?
>
> Actually it'll update the prev_readings even if enabled = 0.
> So I think it should get the correct counts after setting it to 1
> without the bperf_cgrp__sync_counters().

I thought about this again, and you're right.  Will change.

Thanks,
Namhyung

  reply	other threads:[~2021-07-01 20:16 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-25  7:18 [PATCHSET v4 0/4] perf stat: Enable BPF counters with --for-each-cgroup Namhyung Kim
2021-06-25  7:18 ` [PATCH 1/4] perf tools: Add read_cgroup_id() function Namhyung Kim
2021-07-01 17:59   ` Arnaldo Carvalho de Melo
2021-06-25  7:18 ` [PATCH 2/4] perf tools: Add cgroup_is_v2() helper Namhyung Kim
2021-06-29 15:51   ` Ian Rogers
2021-06-30  6:35     ` Namhyung Kim
2021-06-30 18:43       ` Arnaldo Carvalho de Melo
2021-06-25  7:18 ` [PATCH 3/4] perf tools: Move common bpf functions to bpf_counter.h Namhyung Kim
2021-06-30 18:28   ` Song Liu
2021-07-01 19:09   ` Arnaldo Carvalho de Melo
2021-07-01 20:11     ` Namhyung Kim
2021-06-25  7:18 ` [PATCH 4/4] perf stat: Enable BPF counter with --for-each-cgroup Namhyung Kim
2021-06-30 18:47   ` Song Liu
2021-06-30 20:09     ` Namhyung Kim
2021-07-01 20:16       ` Namhyung Kim [this message]
2021-06-30 18:50   ` Arnaldo Carvalho de Melo
2021-06-30 20:12     ` Namhyung Kim
2021-07-01 13:43     ` Arnaldo Carvalho de Melo
2021-07-01 17:10       ` Namhyung Kim
2021-06-27 15:29 ` [PATCHSET v4 0/4] perf stat: Enable BPF counters " Namhyung Kim
2021-06-30  6:19   ` Namhyung Kim

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='CAM9d7ch=khPthTmCNai9Mit4poiJ69Y0JuowDyBsPtpgSxUdDA@mail.gmail.com' \
    --to=namhyung@kernel.org \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=jolsa@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=songliubraving@fb.com \
    /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.