On Mon, Sep 1, 2025 at 3:56 PM Lin Yikai <yikai....@vivo.com> 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....@vivo.com/ > > 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?