Re: [PATCHSET V2 bpf-next 0/2] cpuidle, bpf: Introduce BPF-ext cpuidle governor policy via struct_ops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 1, 2025 at 3:56 PM Lin Yikai <yikai.lin@xxxxxxxx> wrote:
>
> Changes in v2:
>  - Optimized the logic in descriptions. (Song Liu)
>  - Created a new header file to declare kfuncs for future extensions included by other files. (Christian Loehle)
>  - Fixed some logical issues in the code. (Christian Loehle)
>
> Reference:
> [1] https://lore.kernel.org/bpf/20250829101137.9507-1-yikai.lin@xxxxxxxx/
>
> Summary
> ----------
> Hi, everyone,
> This patch set introduces an extensible cpuidle governor framework
> using BPF struct_ops, enabling dynamic implementation of idle-state selection policies
> via BPF programs.
>
> Motivation
> ----------
> As is well-known, CPUs support multiple idle states (e.g., C0, C1, C2, ...),
> where deeper states reduce power consumption, but results in longer wakeup latency,
> potentially affecting performance.
> Existing generic cpuidle governors operate effectively in common scenarios
> but exhibit suboptimal behavior in specific Android phone's use cases.
>
> Our testing reveals that during low-utilization scenarios
> (e.g., screen-off background tasks like music playback with CPU utilization <10%),
> the C0 state occupies ~50% of idle time, causing significant energy inefficiency.

I gather that this is based on measurements taken on ARM-based
platforms because for x86 it is demonstrably not true.

> Reducing C0 to ≤20% could yield ≥5% power savings on mobile phones.
>
> To address this, we expect:
>   1.Dynamic governor switching to power-saved policies for low cpu utilization scenarios (e.g., screen-off mode)
>   2.Dynamic switching to alternate governors for high-performance scenarios (e.g., gaming)

All of this can be done without using BPF at all, so why use it here?





[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux