All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nick Desaulniers <ndesaulniers@google.com>
To: Stephane Eranian <eranian@google.com>,
	Ravi Bangoria <ravi.bangoria@amd.com>
Cc: Slade Watkins <srw@sladewatkins.net>,
	 linux-perf-users <linux-perf-users@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	 Ian Rogers <irogers@google.com>,
	Namhyung Kim <namhyung@gmail.com>,
	 Kees Cook <keescook@chromium.org>,
	sandipan.das@amd.com,  Bill Wendling <morbo@google.com>,
	clang-built-linux <llvm@lists.linux.dev>,
	Yonghong Song <yhs@fb.com>
Subject: Re: Invalid event (cycles:pp) in per-thread mode, enable system wide with '-a'.
Date: Tue, 11 Oct 2022 14:38:21 -0700	[thread overview]
Message-ID: <CAKwvOdnyTor=z7JA84yMcxf-VuSdXE+oLNvnhd8VJmma9_oDyA@mail.gmail.com> (raw)
In-Reply-To: <CABPqkBQVfQFJKCdHXEMGFcupzvy8zq14F52eLW5s9vr2Shmi6w@mail.gmail.com>

On Wed, Oct 5, 2022 at 3:50 PM Stephane Eranian <eranian@google.com> wrote:
>
> On Wed, Oct 5, 2022 at 2:56 PM Nick Desaulniers <ndesaulniers@google.com> wrote:
> >
> > + Stephane, Kees, Sandipan, Bill, ClangBuiltLinux mailing list, Yonghong
> > https://www.spinics.net/lists/linux-perf-users/msg23103.html
> > starts the thread, for context.
> >
> > On Thu, Sep 29, 2022 at 9:32 PM Ravi Bangoria <ravi.bangoria@amd.com> wrote:
> > >
> > > On 30-Sep-22 9:56 AM, Namhyung Kim wrote:
> > > > Hello,
> > > >
> > > > On Thu, Sep 29, 2022 at 8:49 PM Ian Rogers <irogers@google.com> wrote:
> > > >>
> > > >> On Thu, Sep 29, 2022 at 3:10 PM Slade Watkins <srw@sladewatkins.net> wrote:
> > > >>>
> > > >>> Hey Nick,
> > > >>>
> > > >>>> On Sep 29, 2022, at 5:54 PM, Nick Desaulniers <ndesaulniers@google.com> wrote:
> > > >>>>
> > > >>>> I remember hearing rumblings about issues with zen 2, LBR, vs zen 3.
> > > >>>> Is this a known issue, or am I holding it wrong?
> > > >>>
> > > >>> Hm… I also remember this. I have a Zen 2 based system that I can do testing on, so I will do so when I’m able.
> > > >>>
> > > >>> If I discover something of note, I’ll get back to you.
> > > >>>
> > > >>> Cheers,
> > > >>> -srw
> > > >>>
> > > >>
> > > >> LBR isn't yet supported for Zen but is coming:
> > > >> https://lore.kernel.org/lkml/166155216401.401.5809694678609694438.tip-bot2@tip-bot2/
> > > >> I'd recommend frame-pointers.
> >
> > Having to recompile is less than ideal for my workflow.  I have added a note to
> > https://github.com/ClangBuiltLinux/profiling/tree/main/perf#errors
> > Please let me know how I might improve the documentation.
> >
> > > >>
> > > >> +Ravi who may be able to say if there are any issues with the precise
> > > >> sampling on AMD.
> > > >
> > > > Afaik cvcles:pp will use IBS but it doesn't support per-task profiling
> > > > since it has no task context.  Ravi is working on it..
> > >
> > > Right.
> > > https://lore.kernel.org/lkml/20220829113347.295-1-ravi.bangoria@amd.com
> >
> > Cool, thanks for working on this Ravi.
> >
> > I'm not sure yet whether I may replace the kernel on my corporate
> > provided workstation, so I'm not sure yet I can help test that patch.
> >
> > Can you confirm that
> > $ perf record -e cycles:pp --freq=128 --call-graph lbr -- <command to profile>
> >
> > works with just that patch applied? Or is there more work required?
> > What is the status of that patch?
> >
> > For context, we had difficulty upstreaming support for instrumentation
> > based profile guided optimizations in the Linux kernel.
> > https://lore.kernel.org/lkml/CAHk-=whqCT0BeqBQhW8D-YoLLgp_eFY=8Y=9ieREM5xx0ef08w@mail.gmail.com/
> > We'd like to be able to use either instrumentation or sampling to
> > optimize our builds.  The major barrier to sample based approaches are
> > architecture / micro architecture issues with sample based profile
> > data collection, and bitrot of data processing utilities.
> > https://github.com/google/autofdo/issues/144
>
> On existing AMD Zen2, Zen3 the following cmdline:
> $ perf record -e cycles:pp --freq=128 --call-graph lbr -- <command to profile>
>
> does not work. I see two reasons:
>
> 1. cycles:pp is likely converted into IBS op in cycle mode.
>     Current kernels do not support IBS in per-thread mode.
>     This is purely a kernel limitation

Sounds like Ravi has a diff that might work?
https://lore.kernel.org/linux-perf-users/85822c3c-2254-52cc-e6b1-9c89adb63771@amd.com/

>
> 2. call-graph lbr is not supported on AMD because they do
>    not have LBR and therefore no LBR callstack mode
>
> The best way to get what you want here today on AMD Zen2 and Zen3:
>
>    $ perf record -e cycles --freq=128 -g -- <command to profile>

So without recompiling to explicitly re-enable frame pointers, code
I'm looking to profile is built with -gmlt, so I get symbols, but I
can't observe callers.

Sounds like I'd need to rebuild with -fno-omit-frame-pointers which is
more painful than my prior LBR based workflow.

>
> On AMD Zen3, there is a precursor to LBR with Branch Sampling (BRS),
> and you can use it to sample taken branches but not for callstacks. I
> mention the cmdline here for reference:
>
> $ perf record -e cpu/branch-brs/ -c 1000037  -b  -- <command to profile>
>
> Note that AMD Zen3 BRS is enough to get the autoFDO usage of an
> LBR working as per the cmdline above.

Interesting, but I'm stuck with a Zen2 box for a couple years now
(corporate workstation).  This pretty much blows up all of the
profiling work I was doing, and any hope I had of contributing towards
building the kernel with AutoFDO profiles until this works on my box
with the kernel it has.

>
> Hope this helps.



-- 
Thanks,
~Nick Desaulniers

      parent reply	other threads:[~2022-10-11 21:38 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-29 21:54 Invalid event (cycles:pp) in per-thread mode, enable system wide with '-a' Nick Desaulniers
2022-09-29 22:10 ` Slade Watkins
2022-09-30  3:23   ` Ian Rogers
2022-09-30  4:26     ` Namhyung Kim
2022-09-30  4:31       ` Ravi Bangoria
2022-10-05 21:55         ` Nick Desaulniers
2022-10-05 22:50           ` Stephane Eranian
2022-10-07  3:56             ` Ravi Bangoria
2022-10-11 21:32               ` Nick Desaulniers
2022-10-12  4:06                 ` Ravi Bangoria
2022-10-12  5:04                   ` Ravi Bangoria
2023-06-23 16:23                     ` Nick Desaulniers
2023-06-23 23:18                       ` Namhyung Kim
2023-06-26  5:44                       ` Ravi Bangoria
2023-07-10 21:22                         ` Nick Desaulniers
2023-07-11  5:14                           ` Ravi Bangoria
2022-10-11 21:38             ` Nick Desaulniers [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='CAKwvOdnyTor=z7JA84yMcxf-VuSdXE+oLNvnhd8VJmma9_oDyA@mail.gmail.com' \
    --to=ndesaulniers@google.com \
    --cc=eranian@google.com \
    --cc=irogers@google.com \
    --cc=keescook@chromium.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=morbo@google.com \
    --cc=namhyung@gmail.com \
    --cc=ravi.bangoria@amd.com \
    --cc=sandipan.das@amd.com \
    --cc=srw@sladewatkins.net \
    --cc=yhs@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.