Re: [PATCH v1] samples/bpf: Add a trace tool with perf PMU counters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Jan 20, 2025 at 10:50 AM Leo Yan <leo.yan@xxxxxxx> wrote:
>
> Hi Daniel,
>
> On Mon, Jan 20, 2025 at 05:18:23PM +0100, Daniel Borkmann wrote:
> >
> > Hi Leo,
> >
> > On 1/19/25 4:33 PM, Leo Yan wrote:
> > > Developers might need to profile a program with fine-grained
> > > granularity.  E.g., a user case is to account the CPU cycles for a small
> > > program or for a specific function within the program.
> > >
> > > This commit introduces a small tool with using eBPF program to read the
> > > perf PMU counters for performance metrics.  As the first step, the four
> > > counters are supported with the '-e' option: cycles, instructions,
> > > branches, branch-misses.
> > >
> > > The '-r' option is provided for support raw event number.  This option
> > > is mutually exclusive to the '-e' option, users either pass a raw event
> > > number or a counter name.
> > >
> > > The tool enables the counters for the entire trace session in free-run
> > > mode.  It reads the beginning values for counters when the profiled
> > > program is scheduled in, and calculate the interval when the task is
> > > scheduled out.  The advantage of this approach is to dismiss the
> > > statistics noise (e.g. caused by the tool itself) as possible.
>
> [...]
>
> > Thanks for this work! Few suggestions.. the contents of samples/bpf/ are in process of being
> > migrated into BPF selftests given they have been bit-rotting for quite some time, so we'd like
> > to migrate missing coverage into BPF CI (see test_progs in tools/testing/selftests/bpf/). That
> > could be one option, or an alternative is to extend bpftool for profiling BPF programs (see
> > 47c09d6a9f67 ("bpftool: Introduce "prog profile" command")).
>
> Thanks for suggestions!
>
> The naming or info in the commit log might cause confuse.  The purpose
> of this patch is to measure PMU counters for normal programs (not BPF
> program specific).  To achieve profiling accuracy, it opens perf event
> in thread mode, and support function based trace and can be userspace
> mode only.
>
> My understanding for bpftool is for eBPF program specific.  I looked
> into a bit the commit 47c09d6a9f67, it is nature for integrating the
> tracing feature for eBPF program specific.  My patch is for tracing
> normal userspace programs, I am not sure if this is really wanted by
> bpftool.  I would like to hear opinions from bpftool maintainer before
> proceeding.
>
> My program mainly uses eBPF attaching to uprobe.  selftest/bpf has
> contained the related functionality testing, actually I refered the
> test for writing my code :).  So maybe it is not quite useful for
> merging the code as a test?
>
> If both options are not ideal, I would spend time to land the
> feature in perf tool - the perf tool has supported eBPF backend for
> reading PMU counters, but it is absent function based profiling.

We don't add tools to kernel repo. bpftool is an exception
because it's used during the selftest build.
'perf' is another exception for historical reasons.

This particular feature fits 'perf' the best.





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux