From: Peter Zijlstra <peterz@infradead•org>
To: Alexei Starovoitov <ast@fb•com>
Cc: Yonghong Song <yhs@fb•com>,
rostedt@goodmis•org, daniel@iogearbox•net,
netdev@vger•kernel.org, kernel-team@fb•com
Subject: Re: [PATCH net-next 1/4] bpf: add helper bpf_perf_read_counter_time for perf event array map
Date: Fri, 1 Sep 2017 22:50:40 +0200 [thread overview]
Message-ID: <20170901205040.GU6524@worktop.programming.kicks-ass.net> (raw)
In-Reply-To: <a1905aeb-b49f-d4e8-91ee-a28a92869da1@fb.com>
On Fri, Sep 01, 2017 at 01:29:17PM -0700, Alexei Starovoitov wrote:
> >+BPF_CALL_4(bpf_perf_read_counter_time, struct bpf_map *, map, u64, flags,
> >+ struct bpf_perf_counter_time *, buf, u32, size)
> >+{
> >+ struct perf_event *pe;
> >+ u64 now;
> >+ int err;
> >+
> >+ if (unlikely(size != sizeof(struct bpf_perf_counter_time)))
> >+ return -EINVAL;
> >+ err = get_map_perf_counter(map, flags, &buf->counter, &pe);
> >+ if (err)
> >+ return err;
> >+
> >+ calc_timer_values(pe, &now, &buf->time.enabled, &buf->time.running);
> >+ return 0;
> >+}
>
> Peter,
> I believe we're doing it correctly above.
> It's a copy paste of the same logic as in total_time_enabled/running.
> We cannot expose total_time_enabled/running to bpf, since they are
> different counters. The above two are specific to bpf usage.
> See commit log.
No, the patch is atrocious and the usage is wrong.
Exporting a function called 'calc_timer_values' is a horrible violation
of the namespace.
And its wrong because it should be done in conjunction with
perf_event_read_local(). You cannot afterwards call this because you
don't know if the event was active when you read it and you don't have
temporal guarantees; that is, reading these timestamps long after or
before the read is wrong, and this interface allows it.
So no, sorry this is just fail.
next prev parent reply other threads:[~2017-09-01 20:50 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-01 16:53 [PATCH net-next 0/4] bpf: add two helpers to read perf event enabled/running time Yonghong Song
2017-09-01 16:53 ` [PATCH net-next 1/4] bpf: add helper bpf_perf_read_counter_time for perf event array map Yonghong Song
2017-09-01 20:29 ` Alexei Starovoitov
2017-09-01 20:50 ` Peter Zijlstra [this message]
2017-09-01 21:01 ` Yonghong Song
2017-09-01 20:41 ` Peter Zijlstra
2017-09-01 16:53 ` [PATCH net-next 2/4] bpf: add a test case for helper bpf_perf_read_counter_time Yonghong Song
2017-09-01 16:53 ` [PATCH net-next 3/4] bpf: add helper bpf_perf_prog_read_time Yonghong Song
2017-09-01 16:53 ` [PATCH net-next 4/4] bpf: add a test case for " Yonghong Song
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=20170901205040.GU6524@worktop.programming.kicks-ass.net \
--to=peterz@infradead$(echo .)org \
--cc=ast@fb$(echo .)com \
--cc=daniel@iogearbox$(echo .)net \
--cc=kernel-team@fb$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=rostedt@goodmis$(echo .)org \
--cc=yhs@fb$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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