CPU idle cluster management - Lorenzo Pieralisi

Registered by Lorenzo Pieralisi

[Slides](http://www.linuxplumbersconf.org/2012/wp-content/uploads/2012/09/cpuidle-cluster.pdf)

The current CPU idle implementation in the Linux kernel is skewed towards per-CPU idle power management. Power consumption of components in the SOC that are part of a cluster of CPUs but do not belong to the CPU power domain is significant and should be managed in the CPU idle driver accordingly. Current ARM platforms manage cluster power states using ad-hoc code in the idle driver which results in code duplication that is not necessary and can be consolidated. Furthermore, CPU idle governors are not cluster-aware so that every low-power state decision is made on a per-CPU basis which turns out to be sub-optimal to achieve deep-sleep cluster states where all CPUs are required to be powered off to shut down additional cluster shared components like interrupt controllers and L2 shared caches.

Considerable effort is taking place in the kernel community to improve this situation; in particular [coupled C-states](https://lkml.org/lkml/2012/3/14/363) provide a method to synchronize CPUs before entering cluster states and increase the cluster shutdown opportunities for a running SOC. This is a big step towards having a complete cluster aware CPU idle implementation but this does not yet provide a holistic solution.

This talk will highlight the CPU idle requirements and intricacies of current and future ARM systems, inclusive of big.LITTLE multi-cluster SOCs and is aimed at Linux kernel Power Management developers. It is meant to kick-start the discussions on some topics (per-CPU idle states, CPU idle governors cluster awareness, cluster next event, coupled C-states usage) that should result in a hacking session implementing features required by a cluster aware CPU idle implementation.

Lorenzo Pieralisi, ARM Ltd., Cambridge
Lorenzo has worked at ARM Ltd since March 2010 as a Linux kernel developer. He obtained a Laurea degree (summa cum laude) in Microelectronics from the University of Ancona in March 2002. He carried out a PhD in Microelectronics at INP Grenoble where he defended his thesis in 2005 on on-chip interconnections for Advanced Computing. Prior to joining ARM, he worked at the AST (Advanced System Technology) Lab of STMicroelectronics in Grenoble France, where he spent 7 years programming kernel device drivers for ARM processors for a variety of purposes like power management, advanced computing and interconnect device drivers. He presented talks at DATE Europe in 2003, ICCD 2005, SoC conference in 2008, ELC Europe 2011 and other workshops around Europe. He is a keen and enthusiastic embedded systems programmer since the early days of microcontrollers and got involved with Linux kernel programming in 2006 for both personal interest and work. He is an active open source contributor.

Amit Kucheria, working for Linaro as Canonical assignee
Amit is a long-time Linux user and has worked on network QoS, wireless routing, power management in Linux at university, a California startup and finally Nokia where he led the power management team for a while.
Lately, he's been working with the Linaro members to make Linux power management infrastructure more suitable for ARM SoCs. As Tech Lead of the Power Mangement Working Group, he gets to work with a diverse team in trying to standardize interfaces and tools for ARM power management.

Daniel Lezcano, working Linaro as IBM LTC assignee
Daniel worked in 1998 in the Space Industry and Air traffic management for distributed system project in life safety constraints. He acquired for this project a system programing expertise. He joined IBM in 2004 and since this date he does kernel hacking and pushed upstream the resource virtualization with the namespaces. In 2011, he joined the Linaro's Power Management Team and works on the kernel area, consolidating the cpuidle drivers across the different ARM SoC.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
None
Direction:
Needs approval
Assignee:
Lorenzo Pieralisi
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.