Operations 9 min read

Intelligent Power Allocation (IPA) Governor: Architecture, PID Control, and Power Allocation in the Linux Kernel

The Intelligent Power Allocation (IPA) governor, introduced in Linux kernel 4.2, uses a PID‑based closed‑loop controller and a dynamic power allocator to distribute sustainable power among CPU, GPU and other IP cores, maximizing performance while respecting temperature limits, but requires careful PID tuning and device‑tree configuration.

OPPO Kernel Craftsman
OPPO Kernel Craftsman
OPPO Kernel Craftsman
Intelligent Power Allocation (IPA) Governor: Architecture, PID Control, and Power Allocation in the Linux Kernel

IPA (Intelligent Power Allocation) is a Linux kernel thermal‑framework governor developed by ARM, implemented in the source as power_allocator . Its purpose is to maximize performance while satisfying thermal constraints.

Background : Developers familiar with ARM SoC systems know concepts such as the Energy Aware Scheduler (EAS) and energy/power models. IPA applies the principle that SoC temperature is positively correlated with power consumption, and that power is mainly consumed by IP cores (CPU, GPU, etc.). By intelligently allocating power among these cores, the system can achieve the highest possible performance under a given temperature limit. IPA consists of two core components: a PID‑based temperature closed‑loop controller and a Power Allocator (PA).

Why IPA is needed : The traditional step‑wise governor is an open‑loop controller that adjusts CPU frequency solely based on temperature trends and trip points. This leads to two drawbacks: (1) it does not verify whether the frequency change actually achieves the desired thermal outcome, and (2) it may unnecessarily limit performance, especially on mobile devices where short bursts of higher frequency have minimal thermal impact. IPA addresses these issues with closed‑loop PID control and dynamic power budgeting across multiple IP cores.

Advantages of IPA : IPA’s closed‑loop PID controller stabilizes temperature at the target value, improving control precision. Its Power Allocator distributes power based on the real‑time load of each core, allowing performance‑critical cores (e.g., big CPU clusters or GPU) to run at higher frequencies even when the overall temperature target has been reached.

Simplified framework : The inputs to IPA are the current temperature (from the SoC or board sensor) and the performance demand of each core, derived from load and converted to a power request via OPP (Operating Performance Point) and the energy model. The output is the granted power, which is then translated back to performance metrics such as maximum operating frequency.

IPA functions : The PID controller computes the error e = target_temperature – current_temperature and combines proportional (kp), integral (ki), and derivative (kd) terms with a sustainable power limit to produce the allowed maximum power. Formulas for kp_up, kp_out, ki, and kd are provided, with default values that can be tuned.

Power Allocator : After the PID controller determines the total sustainable power, the Power Allocator distributes it among cooling devices (e.g., CPU clusters, GPU) according to each device’s requested power P_request_i and weight W_i . If a device’s granted power exceeds its maximum capability, the excess is collected and redistributed proportionally.

How to use IPA : IPA has been supported in the Linux kernel since version 4.2. To enable it, developers must provide a thermal‑sensor driver and configure the device tree (DTS) with a sustainable-power attribute, two passive trip points (switch_on and target), and weight (contribution) for each cooling device. The governor must be set to power_allocator . The relevant source file is /drivers/thermal/power_allocator.c .

Conclusion : IPA offers a more sophisticated, closed‑loop thermal management solution compared with traditional governors. However, effective deployment requires careful tuning of PID parameters and validation of power‑allocation strategies through extensive testing.

PID controllerenergy efficiencyLinux kernelSOCpower allocationthermal management
OPPO Kernel Craftsman
Written by

OPPO Kernel Craftsman

Sharing Linux kernel-related cutting-edge technology, technical articles, technical news, and curated tutorials

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.