netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Song Liu <songliubraving@fb.com>
Cc: lkml <linux-kernel@vger.kernel.org>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"acme@kernel.org" <acme@kernel.org>,
	"ast@kernel.org" <ast@kernel.org>,
	"daniel@iogearbox.net" <daniel@iogearbox.net>,
	Kernel Team <Kernel-team@fb.com>,
	Andi Kleen <andi@firstfloor.org>
Subject: Re: [PATCH v5 perf, bpf-next 3/7] perf, bpf: introduce PERF_RECORD_BPF_EVENT
Date: Wed, 9 Jan 2019 11:18:08 +0100	[thread overview]
Message-ID: <20190109101808.GG1900@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <A0C713E9-6ACE-4235-87C2-2653A8F22F7B@fb.com>

On Tue, Jan 08, 2019 at 11:54:04PM +0000, Song Liu wrote:

> I think Intel PT case is at instruction granularity (instead of ksymbol
> granularity)? 

Yes.

> If this is true, modules, BPF, and PT could still share
> the ksymbol record for basic profiling. And advanced use cases like 
> annotation will depend on user space to record BPF_EVENT (and equivalent
> for other cases) timely. But at least, the ksymbol is already there. 
> 
> Does this make sense?  

I'm not sure I follow; the idea was that on ksym events we copy out the
instructions using kcore. The ksym event already has addr+len.

All we need is some means of ensuring the symbol is still there by the
time we see the event and do the copy.

I think we can do this with a new ioctl() on /proc/kcore itself:

 - when we have kcore open, we queue all text-free operations on list-1.

 - when we close kcore, we drain all (text-free) list-* and perform the
   pending frees immediately.

 - on ioctl(KCORE_QC) we perform the pending free of list-3 and advance
   list-2 to list-3 and list-1 to list-2.

Perf would then open kcore at the start of the record, make a complete
copy and keep the FD open. At the end of every buffer process, we issue
KCORE_QC IFF we observed a ksym unreg in that buffer.

We use 3 lists instead of 2 to guard against races, if there was a
reg+unreg en-route but not yet visible in the buffer, then we don't want
that free to be processed. The next buffer (read) will have the event(s)
and all should be well.

  parent reply	other threads:[~2019-01-09 10:18 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-20 18:28 [PATCH v5 perf, bpf-next 0/7] reveal invisible bpf programs Song Liu
2018-12-20 18:28 ` [PATCH v5 perf, bpf-next 1/7] perf, bpf: Introduce PERF_RECORD_KSYMBOL Song Liu
2019-01-08 18:31   ` Peter Zijlstra
2019-01-08 18:56     ` Song Liu
2019-01-08 19:43       ` Peter Zijlstra
2018-12-20 18:28 ` [PATCH v5 perf, bpf-next 2/7] sync tools/include/uapi/linux/perf_event.h Song Liu
2018-12-20 18:29 ` [PATCH v5 perf, bpf-next 3/7] perf, bpf: introduce PERF_RECORD_BPF_EVENT Song Liu
2019-01-08 18:41   ` Peter Zijlstra
2019-01-08 19:10     ` Song Liu
2019-01-08 19:43       ` Peter Zijlstra
2019-01-08 23:54         ` Song Liu
2019-01-08 23:54           ` Song Liu
2019-01-09 10:18           ` Peter Zijlstra [this message]
2019-01-09 10:18             ` Peter Zijlstra
2019-01-09 11:32             ` Song Liu
2019-01-09 11:32               ` Song Liu
2019-01-09 12:59               ` Peter Zijlstra
2019-01-09 12:59                 ` Peter Zijlstra
2019-01-09 16:04                 ` Song Liu
2019-01-09 16:04                   ` Song Liu
2019-01-08 20:16       ` Arnaldo Carvalho de Melo
2019-01-08 23:37         ` Song Liu
2019-01-08 23:37           ` Song Liu
2019-01-08 20:56     ` Alexei Starovoitov
2019-01-08 20:56       ` Alexei Starovoitov
2019-01-08 19:59   ` Peter Zijlstra
2019-01-08 20:29   ` Peter Zijlstra
2019-01-08 20:45     ` Alexei Starovoitov
2019-01-08 20:45       ` Alexei Starovoitov
2019-01-09 12:41       ` Peter Zijlstra
2019-01-09 12:41         ` Peter Zijlstra
2019-01-09 15:51         ` Song Liu
2019-01-09 15:51           ` Song Liu
2018-12-20 18:29 ` [PATCH v5 perf, bpf-next 4/7] sync tools/include/uapi/linux/perf_event.h Song Liu
2018-12-20 18:29 ` [PATCH v5 perf, bpf-next 5/7] perf util: handle PERF_RECORD_KSYMBOL Song Liu
2018-12-20 18:29 ` [PATCH v5 perf, bpf-next 6/7] perf util: handle PERF_RECORD_BPF_EVENT Song Liu
2018-12-20 18:29 ` [PATCH v5 perf, bpf-next 7/7] perf tools: synthesize PERF_RECORD_* for loaded BPF programs Song Liu

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=20190109101808.GG1900@hirez.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=Kernel-team@fb.com \
    --cc=acme@kernel.org \
    --cc=andi@firstfloor.org \
    --cc=ast@kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.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 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).