Enhance cpu topology information available to the scheduler

Registered by Amit Kucheria on 2013-06-07

This blueprint has been moved to JIRA: https://cards.linaro.org/browse/PMWG-224

The following information would be useful to the scheduler to make a decision about where to place a task in a power-efficient manner:

1. Clock sharing topology (e.g. related_cpus and affected_cpus in cpufreq)
    a. Current clock rate of CPU
2. Idle state sharing topology (e.g. some platforms use couple C-states to enter cluster-wide idle)
    a. Current idle state
    b. How many idle states?
3. Cache-sharing topology (shared resources flag is available at MC level)
4. Thermal constraints (e.g. 4 A15s can simultaneously run at 1GHz but a single A15 could run at 1.5GHz for 'n' seconds)
     a. Should this be part of scheduler?
5. Power domain topology of the CPU

Blueprint information

Status:
Complete
Approver:
Amit Kucheria
Priority:
High
Drafter:
Amit Kucheria
Direction:
Approved
Assignee:
Tuukka Tikkanen
Definition:
Approved
Series goal:
Accepted for trunk
Implementation:
Implemented
Milestone target:
milestone icon 2013.08
Started by
Amit Kucheria on 2013-06-11
Completed by
Serge Broslavsky on 2013-09-19

Related branches

Sprints

Whiteboard

Important Observations:
Moving {affected|related}_cpus would be a bit tricky. some cpufreq drivers are hiding hardware details from cpufreq core. Like, acpi-cpufreq (cpufreq core believe cpus have separate clocks but they might not) OR IKS solution.

(?)

Work Items

Work items for 2013.07:
Study topology information in the kernel: INPROGRESS
Detach state selection from CPUIdle and move to scheduler: INPROGRESS
Improve scheduler task-core mapping and idle state selection: INPROGRESS

This blueprint contains Public information 
Everyone can see this information.