From: Ian Rogers <irogers@google.com>
To: Ajay Kaher <ajay.kaher@broadcom.com>
Cc: chu howard <howardchu95@gmail.com>,
peterz@infradead.org, mingo@redhat.com, acme@kernel.org,
namhyung@kernel.org, mark.rutland@arm.com, rostedt@goodmis.org,
alexander.shishkin@linux.intel.com, jolsa@kernel.org,
adrian.hunter@intel.com, kan.liang@linux.intel.com,
yangjihong1@huawei.com, zegao2021@gmail.com, leo.yan@linux.dev,
asmadeus@codewreck.org, siyanteng@loongson.cn,
sunhaiyong@loongson.cn, linux-perf-users@vger.kernel.org,
linux-kernel@vger.kernel.org, alexey.makhalov@broadcom.com,
vasavi.sirnapalli@broadcom.com,
Vamsi Krishna Brahmajosyula
<vamsi-krishna.brahmajosyula@broadcom.com>,
nadav.amit@gmail.com
Subject: Re: [PATCH RFC 0/3] perf: add logic to collect off-cpu samples
Date: Sun, 14 Jul 2024 11:32:36 -0700 [thread overview]
Message-ID: <CAP-5=fX++xsupSisMejFDbs3dFBegbK9VwykbsLMpadX6brATw@mail.gmail.com> (raw)
In-Reply-To: <CAD2QZ9ZLHQ62d5CDpf14DkrWFs_FggRMdqzGFz3qsmF_vmS00Q@mail.gmail.com>
On Sat, Jul 13, 2024 at 12:43 AM Ajay Kaher <ajay.kaher@broadcom.com> wrote:
>
> On Fri, Jul 12, 2024 at 3:28 AM Ian Rogers <irogers@google.com> wrote:
> >
> > On Thu, Jul 11, 2024 at 5:16 AM Ajay Kaher <ajay.kaher@broadcom.com> wrote:
> > >
> > > Add --off-cpu-kernel option to capture off-cpu sample alongwith on-cpu
> > > samples.
> > >
> > > off-cpu samples represent time spent by task when it was on wait queue
> > > (schedule out to waiting for events, blocked on I/O, locks, timers,
> > > paging/swapping, etc)
> > >
> > > Refer following links for more details:
> > > https://lpc.events/event/17/contributions/1556/
> > > https://www.youtube.com/watch?v=sF2faKGRnjs
> >
> > Hi Ajay,
> >
> > I wonder if Howard's improvements (not landed) for `perf record
> > --off-cpu` would solve this problem for you?
> > https://lore.kernel.org/lkml/20240424024805.144759-1-howardchu95@gmail.com/
> > Or is that approach problematic due to the use of BPF?
> >
>
> Thanks Ian for your response and sharing Howard's improvements.
>
> Yes, perf --off-cpu is based upon BPF and having following restrictions:
>
> - target binary should be compiled with frame pointer, same mentioned
> in tools/perf/Documentation/perf-record.txt:
> Note that BPF can collect stack traces using frame pointer ("fp") only,
> as of now. So the applications built without the frame pointer might see
> bogus addresses.
Agreed, if you want more than the leaf function. There's some evidence
that frame pointers may become the default:
https://www.brendangregg.com/blog/2024-03-17/the-return-of-the-frame-pointers.html
> - perf should be complied with BUILD_BPF_SKEL=1:
> Warning: option `off-cpu' is being ignored because no BUILD_BPF_SKEL=1
We've made this the default build behavior but probably a bigger issue
is that generally to have permissions you need to run as root.
> - off-cpu, on-cpu samples are not on the same result page.
> (I guess Howard has improve this, not tried his patches)
>
> I have tried to collect the off-cpu sample same as on-cpu sample with the help
> of kernel/events/core.c. We will get one off-cpu sample from the target task
> sched-out to sched-in. Or we can say off-cpu samples are not dependent on
> frequency provided by the user to perf record.
>
> I am also worried about having so many samples if sched-in/out
> frequency is high.
> Thinking to merge samples if attributes are the same (i.e. stacktrace)
> and add the
> off-cpu period to previous samples with the same attribute.
Right, this would be useful to look at in the context of Howard's
patches. The proposal in his changes are that short off-cpu times are
aggregated in a BPF map and dumped at the end of perf record - this
matches the existing perf record off-CPU behavior. Longer off-CPU
times, where long is open for debate and will be a parameter (perhaps
100 microseconds) and cause a sample to be created. BPF programs
create BPF output events, Howard's last patch series would rewrite the
events in perf record to be off-CPU samples. At the last office hours
it was discussed that we should dump the BPF output events directly,
to keep perf record overhead minimal, and add the ability to rewrite
into samples in tools like perf report, etc.
Thanks,
Ian
> -Ajay
>
> > Thanks,
> > Ian
> >
> > > Ajay Kaher (3):
> > > perf/core: add logic to collect off-cpu sample
> > > perf/record: add options --off-cpu-kernel
> > > perf/report: add off-cpu samples
> > >
> > > include/linux/perf_event.h | 16 ++++++++++++++
> > > include/uapi/linux/perf_event.h | 3 ++-
> > > kernel/events/core.c | 27 ++++++++++++++++++-----
> > > tools/include/uapi/linux/perf_event.h | 3 ++-
> > > tools/perf/builtin-record.c | 2 ++
> > > tools/perf/util/events_stats.h | 2 ++
> > > tools/perf/util/evsel.c | 4 ++++
> > > tools/perf/util/hist.c | 31 ++++++++++++++++++++++++---
> > > tools/perf/util/hist.h | 1 +
> > > tools/perf/util/record.h | 1 +
> > > tools/perf/util/sample.h | 1 +
> > > 11 files changed, 81 insertions(+), 10 deletions(-)
> > >
> > > --
> > > 2.39.0
> > >
prev parent reply other threads:[~2024-07-14 18:32 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-11 12:16 [PATCH RFC 0/3] perf: add logic to collect off-cpu samples Ajay Kaher
2024-07-11 12:16 ` [PATCH RFC 1/3] perf/core: add logic to collect off-cpu sample Ajay Kaher
2024-07-11 21:49 ` Peter Zijlstra
2024-07-14 16:23 ` Ajay Kaher
2024-07-15 11:48 ` Peter Zijlstra
2024-07-11 12:16 ` [PATCH RFC 2/3] perf/record: add options --off-cpu-kernel Ajay Kaher
2024-07-11 12:16 ` [PATCH RFC 3/3] perf/report: add off-cpu samples Ajay Kaher
2024-07-11 21:58 ` [PATCH RFC 0/3] perf: add logic to collect " Ian Rogers
2024-07-13 7:42 ` Ajay Kaher
2024-07-14 18:32 ` Ian Rogers [this message]
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='CAP-5=fX++xsupSisMejFDbs3dFBegbK9VwykbsLMpadX6brATw@mail.gmail.com' \
--to=irogers@google.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=ajay.kaher@broadcom.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=alexey.makhalov@broadcom.com \
--cc=asmadeus@codewreck.org \
--cc=howardchu95@gmail.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=leo.yan@linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=nadav.amit@gmail.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=siyanteng@loongson.cn \
--cc=sunhaiyong@loongson.cn \
--cc=vamsi-krishna.brahmajosyula@broadcom.com \
--cc=vasavi.sirnapalli@broadcom.com \
--cc=yangjihong1@huawei.com \
--cc=zegao2021@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).