All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexei Starovoitov <ast@plumgrid.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
	Namhyung Kim <namhyung@kernel.org>,
	Arnaldo Carvalho de Melo <acme@infradead.org>,
	Jiri Olsa <jolsa@redhat.com>,
	Masami Hiramatsu <masami.hiramatsu.pt@hitachi.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: [PATCH v9 tip 8/9] samples: bpf: IO latency analysis (iosnoop/heatmap)
Date: Mon, 23 Mar 2015 10:41:21 -0700	[thread overview]
Message-ID: <55105041.5090400@plumgrid.com> (raw)
In-Reply-To: <20150323074028.GE25184@gmail.com>

On 3/23/15 12:40 AM, Ingo Molnar wrote:
>
> * Alexei Starovoitov <ast@plumgrid.com> wrote:
>
>> BPF C program attaches to blk_mq_start_request/blk_update_request kprobe events
>> to calculate IO latency.
>
>   ...
>
>> +/* kprobe is NOT a stable ABI
>> + * This bpf+kprobe example can stop working any time.
>> + */
>> +SEC("kprobe/blk_mq_start_request")
>> +int bpf_prog1(struct pt_regs *ctx)
>> +{
>> +	long rq = ctx->di;
>> +	u64 val = bpf_ktime_get_ns();
>> +
>> +	bpf_map_update_elem(&my_map, &rq, &val, BPF_ANY);
>> +	return 0;
>> +}
>
> So just to make sure the original BPF instrumentation model is still
> upheld: no matter in what way the kernel changes, neither the kprobe,
> nor the BPF program can ever crash or corrupt the kernel, assuming the
> kprobes, perf and BPF subsystem has no bugs, correct?

yes. of course. That was always #1 requirement.

> So 'stops working' here means that the instrumentation data might not
> be reliable if kernel internal interfaces change - but it won't ever
> make the kernel unreliable in any fashion. Right?

yes. of course.

The only situations where it can 'stop working':
- in-kernel blk_mq_start_request function is renamed, so kprobe cannot 
find it and cannot attach.
- arguments to blk_mq_start_request change. Then ctx->di can be 
meaningless and using it as key into map is useless.
- whole logic of blk_mq_start_request/blk_update_request pair changes.
then this sample code won't be measuring any useful io latency.

In all cases kernel will never crash (barring bugs in bpf, kprobe 
subsystems).

  reply	other threads:[~2015-03-23 17:41 UTC|newest]

Thread overview: 46+ 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
     [not found]   ` <1426894210-27441-3-git-send-email-ast-uqk4Ao+rVK5Wk0Htik3J/w@public.gmane.org>
2015-03-21 12:16     ` Masami Hiramatsu
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
     [not found]   ` <1426894210-27441-4-git-send-email-ast-uqk4Ao+rVK5Wk0Htik3J/w@public.gmane.org>
2015-03-21 12:14     ` Masami Hiramatsu
2015-03-21 12:14       ` Masami Hiramatsu
2015-03-21 16:02       ` Alexei Starovoitov
     [not found]         ` <550D962E.7010400-uqk4Ao+rVK5Wk0Htik3J/w@public.gmane.org>
2015-03-22 10:06           ` Masami Hiramatsu
2015-03-22 10:06             ` Masami Hiramatsu
2015-03-22 18:03             ` Alexei Starovoitov
     [not found]               ` <550F0402.80900-uqk4Ao+rVK5Wk0Htik3J/w@public.gmane.org>
2015-03-23  2:17                 ` Masami Hiramatsu
2015-03-23  2:17                   ` Masami Hiramatsu
2015-03-23  4:57                   ` bpf+tracing next steps. Was: " Alexei Starovoitov
     [not found]                     ` <550F9D20.7070006-uqk4Ao+rVK5Wk0Htik3J/w@public.gmane.org>
2015-03-23  9:27                       ` Masami Hiramatsu
2015-03-23  9:27                         ` Masami Hiramatsu
2015-03-25  0:40                         ` Alexei Starovoitov
     [not found]                           ` <5512040B.3020605-uqk4Ao+rVK5Wk0Htik3J/w@public.gmane.org>
2015-03-25 12:07                             ` Masami Hiramatsu
2015-03-25 12:07                               ` Masami Hiramatsu
2015-03-20 23:30 ` [PATCH v9 tip 6/9] samples: bpf: simple non-portable kprobe filter example Alexei Starovoitov
     [not found]   ` <1426894210-27441-7-git-send-email-ast-uqk4Ao+rVK5Wk0Htik3J/w@public.gmane.org>
2015-03-23  7:29     ` Ingo Molnar
2015-03-23  7:29       ` Ingo Molnar
     [not found]       ` <20150323072929.GB25184-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-23 17:23         ` Alexei Starovoitov
2015-03-23 17:23           ` Alexei Starovoitov
2015-03-23  7:35   ` Ingo Molnar
     [not found]     ` <20150323073506.GC25184-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-23 17:32       ` Alexei Starovoitov
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 [this message]
     [not found] ` <1426894210-27441-1-git-send-email-ast-uqk4Ao+rVK5Wk0Htik3J/w@public.gmane.org>
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     ` 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-20 23:30     ` Alexei Starovoitov
     [not found]     ` <1426894210-27441-6-git-send-email-ast-uqk4Ao+rVK5Wk0Htik3J/w@public.gmane.org>
2015-03-22 11:10       ` Ingo Molnar
2015-03-22 11:10         ` Ingo Molnar
     [not found]         ` <20150322111040.GA18695-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2015-03-22 18:05           ` Alexei Starovoitov
2015-03-22 18:05             ` Alexei Starovoitov
2015-03-20 23:30   ` [PATCH v9 tip 9/9] samples: bpf: kmem_alloc/free tracker Alexei Starovoitov
2015-03-20 23:30     ` Alexei Starovoitov
2015-03-21  4:08 ` [PATCH v9 tip 0/9] tracing: attach eBPF programs to kprobes Steven Rostedt
     [not found]   ` <20150321000812.606ef8cb-2kNGR76GQU9OHLTnHDQRgA@public.gmane.org>
2015-03-23  7:36     ` Ingo Molnar
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=55105041.5090400@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 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.