From: Peter Zijlstra <peterz@infradead.org>
To: Jianlin Lv <iecedge@gmail.com>
Cc: bpf@vger.kernel.org, ast@kernel.org, daniel@iogearbox.net,
andrii@kernel.org, martin.lau@linux.dev, eddyz87@gmail.com,
song@kernel.org, yonghong.song@linux.dev,
john.fastabend@gmail.com, kpsingh@kernel.org, sdf@fomichev.me,
haoluo@google.com, jolsa@kernel.org, mingo@redhat.com,
juri.lelli@redhat.com, vincent.guittot@linaro.org,
dietmar.eggemann@arm.com, rostedt@goodmis.org,
bsegall@google.com, mgorman@suse.de, vschneid@redhat.com,
linux-kernel@vger.kernel.org, jianlv@ebay.com
Subject: Re: [RFC PATCH bpf-next 1/2] Enhance BPF execution timing by excluding IRQ time
Date: Tue, 22 Apr 2025 16:23:52 +0200 [thread overview]
Message-ID: <20250422142352.GA15651@noisy.programming.kicks-ass.net> (raw)
In-Reply-To: <73fdbbf9aafd3e24e12bb58f89c70959fb3a37f1.1745250534.git.iecedge@gmail.com>
On Tue, Apr 22, 2025 at 09:47:26PM +0800, Jianlin Lv wrote:
> From: Jianlin Lv <iecedge@gmail.com>
>
> This commit excludes IRQ time from the total execution duration of BPF
> programs. When CONFIG_IRQ_TIME_ACCOUNTING is enabled, IRQ time is
> accounted for separately, offering a more accurate assessment of CPU
> usage for BPF programs.
>
> Signed-off-by: Jianlin Lv <iecedge@gmail.com>
> ---
> include/linux/filter.h | 24 ++++++++++++++++++++++--
> 1 file changed, 22 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/filter.h b/include/linux/filter.h
> index f5cf4d35d83e..3e0f975176a6 100644
> --- a/include/linux/filter.h
> +++ b/include/linux/filter.h
> @@ -703,12 +703,32 @@ static __always_inline u32 __bpf_prog_run(const struct bpf_prog *prog,
> cant_migrate();
> if (static_branch_unlikely(&bpf_stats_enabled_key)) {
> struct bpf_prog_stats *stats;
> - u64 duration, start = sched_clock();
> + u64 duration, start, start_time, end_time, irq_delta;
> unsigned long flags;
> + unsigned int cpu;
>
> - ret = dfunc(ctx, prog->insnsi, prog->bpf_func);
> + #ifdef CONFIG_IRQ_TIME_ACCOUNTING
> + if (in_task()) {
> + cpu = get_cpu();
> + put_cpu();
> + start_time = irq_time_read(cpu);
This is all sorts of daft.. you don't need get_cpu()/put_cpu().
> + }
> + #endif
>
> + start = sched_clock();
> + ret = dfunc(ctx, prog->insnsi, prog->bpf_func);
> duration = sched_clock() - start;
> +
> + #ifdef CONFIG_IRQ_TIME_ACCOUNTING
> + if (in_task()) {
> + end_time = irq_time_read(cpu);
> + if (end_time > start_time) {
> + irq_delta = end_time - start_time;
> + duration -= irq_delta;
> + }
> + }
> + #endif
This is really dodgy coding style. Please keep the preprocessor
directives at column 0.
What do you think about steal-time, do you want to remove that from your
BPF runtime too?
If so, perhaps expose the scheduler's clock_task, which does both things
already?
next prev parent reply other threads:[~2025-04-22 14:24 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-22 13:47 [RFC PATCH bpf-next 0/2] Eliminate IRQ Time from BPF Program Running Duration Jianlin Lv
2025-04-22 13:47 ` [RFC PATCH bpf-next 1/2] Enhance BPF execution timing by excluding IRQ time Jianlin Lv
2025-04-22 14:23 ` Peter Zijlstra [this message]
2025-04-22 17:28 ` Alexei Starovoitov
2025-04-23 5:31 ` kernel test robot
2025-04-22 13:47 ` [RFC PATCH bpf-next 2/2] Export irq_time_read for BPF module usage Jianlin Lv
2025-04-22 14:24 ` Peter Zijlstra
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=20250422142352.GA15651@noisy.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=bsegall@google.com \
--cc=daniel@iogearbox.net \
--cc=dietmar.eggemann@arm.com \
--cc=eddyz87@gmail.com \
--cc=haoluo@google.com \
--cc=iecedge@gmail.com \
--cc=jianlv@ebay.com \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=juri.lelli@redhat.com \
--cc=kpsingh@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=martin.lau@linux.dev \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=rostedt@goodmis.org \
--cc=sdf@fomichev.me \
--cc=song@kernel.org \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=yonghong.song@linux.dev \
/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.