Linux CPU frequency scaling improvements for interactive/latency-sensitive workloads

Registered by Anton Vorontsov on 2012-02-16

Google found that Linux 'ondemand' cpufreq governor isn't suitable for the latency-senstive (e.g. UI) workloads, and impelemented its own 'interactive' governor. We have to investigate whether we should improve 'ondemand' governor, or modify 'interactive' governor so that it could be suitable for inclusion, or implement something completely different (as proposed by the community).

Blueprint information

Status:
Started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
Anton Vorontsov
Definition:
Approved
Series goal:
None
Implementation:
Blocked
Milestone target:
milestone icon backlog
Started by
Deepak Saxena on 2012-05-24

Related branches

Sprints

Whiteboard

Meta:
Headline: Linux CPU frequency scaling improvements for interactive/latency-sensitive workloads
Acceptance: 'Interactive' cpufreq governor merged into mainline kernels, or equivalent solution implemented and merged into mainline.
Roadmap id: KWG2011-ANDROID-????

Moving this to blocked, since merging as-is was rejected, and this will require deep effort in the scheduler to enable equivalent functionality.

From Anton's Lunch meeting with Google devs:
"Colin (IIRC) proposed a great idea to investigate: it might be possible
to add a short deferrable timer to the ondemand governor (it won't
cause wakeups by itself but it'll be our "shortcut" from the idle loop
to the governor code). This deferrable timer will be only used to
ramp-up frequency. To decrease freq, we'll use normal timer (it will
run at pre-programmed period to slowly ramp-down the freq to the
minimal frequency, and once we reached the min., we'd turn it off)."

jstultz: Viresh on the power-management team is working on cpufreq-interactive-gov related work, so I added a dependency on his planned efforts here.

(?)

Work Items

Work items for 12.02:
Implement generic 'scheduler idle notifiers' (per previous community requests): DONE
Rebase and send out a new 'cpufreq_interactive' driver as an RFC: DONE

Work items for backlog:
Discuss the driver w/ the community: BLOCKED
Run cpufreq-bench for 'ondemand' and 'interactive' governors, get some reference numbers to compare with: INPROGRESS
Depending on the discussion results, plan any further steps: TODO

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.