Arm Community
Arm Community
  • Site
  • User
  • Site
  • Search
  • User
  • Groups
    • Research Collaboration and Enablement
    • DesignStart
    • Education Hub
    • Innovation
    • Open Source Software and Platforms
  • Forums
    • AI and ML forum
    • Architectures and Processors forum
    • Arm Development Platforms forum
    • Arm Development Studio forum
    • Arm Virtual Hardware forum
    • Automotive forum
    • Compilers and Libraries forum
    • Graphics, Gaming, and VR forum
    • High Performance Computing (HPC) forum
    • Infrastructure Solutions forum
    • Internet of Things (IoT) forum
    • Keil forum
    • Morello Forum
    • Operating Systems forum
    • SoC Design and Simulation forum
    • 中文社区论区
  • Blogs
    • AI and ML blog
    • Announcements
    • Architectures and Processors blog
    • Automotive blog
    • Graphics, Gaming, and VR blog
    • High Performance Computing (HPC) blog
    • Infrastructure Solutions blog
    • Innovation blog
    • Internet of Things (IoT) blog
    • Operating Systems blog
    • Research Articles
    • SoC Design and Simulation blog
    • Tools, Software and IDEs blog
    • 中文社区博客
  • Support
    • Arm Support Services
    • Documentation
    • Downloads
    • Training
    • Arm Approved program
    • Arm Design Reviews
  • Community Help
  • More
  • Cancel
Arm Community blogs
Arm Community blogs
Architectures and Processors blog Energy Aware Scheduling (EAS) in Linux 5.0
  • Blogs
  • Mentions
  • Sub-Groups
  • Tags
  • Jump...
  • Cancel
More blogs in Arm Community blogs
  • AI and ML blog

  • Announcements

  • Architectures and Processors blog

  • Automotive blog

  • Embedded blog

  • Graphics, Gaming, and VR blog

  • High Performance Computing (HPC) blog

  • Infrastructure Solutions blog

  • Internet of Things (IoT) blog

  • Operating Systems blog

  • SoC Design and Simulation blog

  • Tools, Software and IDEs blog

Tell us what you think
Tags
  • mobile
  • big.LITTLE
  • DynamIQ
  • Linux
Actions
  • RSS
  • More
  • Cancel
Related blog posts
Related forum threads

Energy Aware Scheduling (EAS) in Linux 5.0

Quentin Perret
Quentin Perret
February 25, 2019
3 minute read time.

The Energy Aware Scheduler (EAS) is now available as part of Linux 5.0. It enables energy-efficient scheduling decisions on big.LITTLE and DynamIQ Arm platforms by choosing the right type of CPU for each task.

What is EAS ?

EAS is an extension of the Linux task scheduler improving battery life of mobile devices. It uses a model of CPU energy consumption (called the Energy Model, or EM) to optimize the placement of tasks on the most energy-efficient CPUs of big.LITTLE and/or DynamIQ platforms while meeting compute requirements. The EM provides an abstract view of the CPU topology to the scheduler, and informs it about the power cost associated with running each CPU at the available frequencies. Using the EM, EAS is then able to predict what will be the impact on energy of executing a task on one particular CPU or another, and to make decisions which minimize energy consumption.

A key design point of EAS lies in its tight binding to the DVFS subsystem, CPUFreq, which is responsible for driving the frequencies of CPUs. The schedutil CPUFreq governor uses the scheduler’s load-tracking metrics to decide upon frequency changes of CPUs. The same metrics are also used by the EAS algorithms to coordinate frequency requests and task placement decisions. This level of coordination coupled with the EM allows EAS to estimate how a task migration can impact the system’s energy consumption, and take that into account during the decision-making process. In essence, EAS enables the Linux task scheduler to leverage the energy-efficiency of little CPUs to improve battery life of mobile devices without harming the performance.

The figure below shows test results using EAS on an Arm Juno r0 platform using RT-App (a synthetic workload generator) in a low intensity scenario where energy consumption is the primary concern, and Hackbench as a performance benchmark. More details about the test setup and the metrics can be found in the original EAS cover letter on LKML .

EAS benchmark results

Our mainline implementation has been carefully crafted to allow multiple sources for the EM configuration data. From 5.1 onwards, mainline Linux will fully support loading an EM by:

  • using the dynamic-power-coefficient devicetree binding which enables estimating the power consumed by a CPU at any possible frequency;
  • or using firmware-supplied power/performance values using the Arm Software Control and Management Interface (SCMI). Where possible, this is the preferred option as often the firmware knows more about the specific implementation than the kernel does (e.g. silicon revision or silicon fabrication technology).

Why EAS in mainline matters ?

Products based upon Arm big.LITTLE technology launched in 2013.  In the first iterations, simple CPU switching technology was used to execute tasks on either a high-performance ‘big’ core or on a power-saving ‘little’ core.  Later, Global Task Scheduling allowed all cores to be visible to the scheduler which proved that this is beneficial. Since android-3.18, EAS support has been available for the Android Common Kernel which makes the Linux scheduler aware of the power/performance differences between the cores.  Alongside this, Arm and Linaro have worked closely on incrementally improving the mainline Linux scheduler to be fully aware of the differences between CPUs. This has culminated in the addition of the EM which completes the pieces to enable EAS in mainline kernels.

With EAS upstream, the entire range of Linux-derived products are able to achieve energy savings - including ChromeOS and all Linux distributions for example. For the existing users of EAS in Android, being able to use a mainline feature in lieu of Android-specific code relieves them from a significant maintenance burden caused by out-of-tree code. Moreover, having EAS in mainline will improve test coverage by enabling more developers to use it, which will help raise the code quality even further.

For more information

The EAS Arm developer web page tracks the latest EAS-related development activities. In addition, the mainline documentation of EAS’ building blocks (anticipated in Linux 5.1+) can be found in the kernel source tree under:

  • Documentation/power/energy-model.txt (describes the APIs of the EM framework used by EAS, and explains how new platforms can use it);
  • Documentation/scheduler/sched-energy.txt (details the key design points of EAS and how to enable it step by step)
Anonymous
Architectures and Processors blog
  • What is new in LLVM 15?

    Pablo Barrio
    Pablo Barrio
    LLVM 15.0.0 was released on September 6, followed by a series of minor bug-fixing releases. Arm contributed support for new Arm extensions and CPUs.
    • February 27, 2023
  • Apache Arrow optimization on Arm

    Yibo Cai
    Yibo Cai
    This blog introduces Arm optimization practices with two solid examples from Apache Arrow project.
    • February 23, 2023
  • Optimizing TIFF image processing using AARCH64 (64-bit) Neon

    Ramin Zaghi
    Ramin Zaghi
    This guest blog shows how 64-bit Neon technology can be used to improve performance in image processing applications.
    • October 13, 2022