Sitemap

Member-only story

Stop using idle=poll

5 min readSep 21, 2025

--

Press enter or click to view image in full size

In modern computing, the challenge of system-level optimisation is balancing performance with power efficiency. High performance often requires keeping a CPU in a low-latency state, while power savings require allowing it to enter a deep sleep. The Linux kernel’s Power Management Quality of Service (PM QoS) framework is a powerful tool designed to manage this trade-off. This document will focus on how PM QoS can be used for CPU-specific power management.

The PM QoS framework allows both kernel and user mode to set constraints on the kernel’s energy-efficiency features to prevent performance from dropping below a required level. This is achieved by creating constraints that the kernel’s power management governors must respect.
Note: The following information is applicable since Linux kernel v4.14 e.g. Red Hat Enterprise Linux (RHEL) 8.

The Problem with idle=poll

In the past, to guarantee low-latency performance for critical applications — such as high-frequency trading platforms — system administrators often used the idle=poll kernel boot parameter. This is a static, system-wide approach that tells the kernel to effectively disable CPU C-states idle-states. Instead of allowing the CPU to enter a deep power-saving C-state when it has no work, idle=poll forces the logical CPU to stay in a busy loop, continuously…

--

--

Aaron Tomlin
Aaron Tomlin

Written by Aaron Tomlin

My core competencies lie in Linux performance analysis, system-level debugging, reverse engineering, and the x86-64 architecture. All opinions are my own.