public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Alexei Starovoitov <ast@plumgrid.com>
To: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Ingo Molnar <mingo@kernel.org>,
	Steven Rostedt <rostedt@goodmis.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Arnaldo Carvalho de Melo <acme@infradead.org>,
	Jiri Olsa <jolsa@redhat.com>,
	"David S. Miller" <davem@davemloft.net>,
	Daniel Borkmann <daniel@iogearbox.net>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	linux-api@vger.kernel.org, netdev@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: bpf+tracing next steps. Was: [PATCH v9 tip 3/9] tracing: attach BPF programs to kprobes
Date: Tue, 24 Mar 2015 17:40:43 -0700	[thread overview]
Message-ID: <5512040B.3020605@plumgrid.com> (raw)
In-Reply-To: <550FDC8A.5010100@hitachi.com>

On 3/23/15 2:27 AM, Masami Hiramatsu wrote:
> (2015/03/23 13:57), Alexei Starovoitov wrote:
>> On 3/22/15 7:17 PM, Masami Hiramatsu wrote:
>>> (2015/03/23 3:03), Alexei Starovoitov wrote:
>>>
>>>> User space tools that will compile ktap/dtrace scripts into bpf might
>>>> use build-id for their own purpose, but that's a different discussion.
>>>
>>> Agreed.
>>> I'd like to discuss it since kprobe event interface may also have same
>>> issue.
>>
>> I'm not sure what 'issue' you're seeing. My understanding is that
>> build-ids are used by perf to associate binaries with their debug info
>> and by systemtap to make sure that probes actually match the kernel
>> they were compiled for. In bpf case it probably will be perf way only.
> 
> Ah, I see. So perftools can check the build-id if needed, right?

yes. of course.

>> Are you interested in doing something with bpf ? ;)
> 
> Of course :)

Great :)

>> I know that Jovi is working on clang-based front-end, He Kuang is doing
>> something fancy and I'm going to focus on 'tcp instrumentation' once
>> bpf+kprobes is in. I think these efforts will help us make it
>> concrete and will establish a path towards bpf+tracepoints
>> (debug tracepoints or trace markers) and eventual integration with perf.
>> Here is the wish-list (for kernel and userspace) inspired by Brendan:
>> - access to pid, uid, tid, comm, etc
>> - access to kernel stack trace
>> - access to user-level stack trace
>> - kernel debuginfo for walking kernel structs, and accessing kprobe
>> entry args as variables
> 
> perf probe can provide this to bpf.

I was thinking about deeper integration with perf actually.
perf has all the right infra to find debug info in kernel and user
binaries, to extract and understand all the dwarf stuff.
The future tracing language can use more of it.
The programs should be able refer to names of in-kernel variables
and arguments natively.
When I'm writing a program that attaches to blk_update_request()
I would like to write:
bpf_printk("req %p bytes %d\n", req->q, nr_bytes);
and perf with debug info should be able to figure out that 'req'
is the first function argument, then find out offset of '->q'
within the struct and that 'nr_bytes' is the 3rd argument in
appropriate register. Then generate llvm ir on the fly,
compile it, load into kernel and attach to kprobe event at
this blk_update_request() function. All seamlessly.

>> - tracing of uprobes
>> - tracing of user markers
> 
> I'm working on the perf-cache which will also support SDT (based on Hemant Kumar's work).

yep. waiting for SDT stuff to finalize. Would be nice to
have 'follow' button for interesting patches :)


  reply	other threads:[~2015-03-25  0:40 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-20 23:30 [PATCH v9 tip 0/9] tracing: attach eBPF programs to kprobes Alexei Starovoitov
2015-03-20 23:30 ` [PATCH v9 tip 1/9] bpf: make internal bpf API independent of CONFIG_BPF_SYSCALL ifdefs Alexei Starovoitov
2015-03-21 12:16   ` Masami Hiramatsu
2015-03-20 23:30 ` [PATCH v9 tip 2/9] tracing: add kprobe flag Alexei Starovoitov
2015-03-21 12:16   ` Masami Hiramatsu
2015-03-20 23:30 ` [PATCH v9 tip 3/9] tracing: attach BPF programs to kprobes Alexei Starovoitov
2015-03-21 12:14   ` Masami Hiramatsu
2015-03-21 16:02     ` Alexei Starovoitov
2015-03-22 10:06       ` Masami Hiramatsu
2015-03-22 18:03         ` Alexei Starovoitov
2015-03-23  2:17           ` Masami Hiramatsu
2015-03-23  4:57             ` bpf+tracing next steps. Was: " Alexei Starovoitov
2015-03-23  9:27               ` Masami Hiramatsu
2015-03-25  0:40                 ` Alexei Starovoitov [this message]
2015-03-25 12:07                   ` Masami Hiramatsu
2015-03-20 23:30 ` [PATCH v9 tip 4/9] tracing: allow BPF programs to call bpf_ktime_get_ns() Alexei Starovoitov
2015-03-20 23:30 ` [PATCH v9 tip 5/9] tracing: allow BPF programs to call bpf_trace_printk() Alexei Starovoitov
2015-03-22 11:10   ` Ingo Molnar
2015-03-22 18:05     ` Alexei Starovoitov
2015-03-20 23:30 ` [PATCH v9 tip 6/9] samples: bpf: simple non-portable kprobe filter example Alexei Starovoitov
2015-03-23  7:29   ` Ingo Molnar
2015-03-23 17:23     ` Alexei Starovoitov
2015-03-23  7:35   ` Ingo Molnar
2015-03-23 17:32     ` Alexei Starovoitov
2015-03-20 23:30 ` [PATCH v9 tip 7/9] samples: bpf: counting example for kfree_skb and write syscall Alexei Starovoitov
2015-03-20 23:30 ` [PATCH v9 tip 8/9] samples: bpf: IO latency analysis (iosnoop/heatmap) Alexei Starovoitov
2015-03-23  7:40   ` Ingo Molnar
2015-03-23 17:41     ` Alexei Starovoitov
2015-03-20 23:30 ` [PATCH v9 tip 9/9] samples: bpf: kmem_alloc/free tracker Alexei Starovoitov
2015-03-21  4:08 ` [PATCH v9 tip 0/9] tracing: attach eBPF programs to kprobes Steven Rostedt
2015-03-23  7:36   ` Ingo Molnar

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=5512040B.3020605@plumgrid.com \
    --to=ast@plumgrid.com \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@infradead.org \
    --cc=daniel@iogearbox.net \
    --cc=davem@davemloft.net \
    --cc=jolsa@redhat.com \
    --cc=linux-api@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=rostedt@goodmis.org \
    /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