Idle CPU Percentage Calculator
Calculate idle CPU percentage and headroom available for additional workload.
Inputs
Idle CPU %
65.00%
Idle Capacity (core-equivalent)
5.20
Busy CPU %
35.00%
Idle Capacity (GHz-equivalent)
15.60
Assessment
Moderate idle capacity — some headroom remains.
Step by step
Values used
Idle Ticks (from /proc/stat delta) = 6,500; Total Ticks (from /proc/stat delta, all fields summed) = 10,000; CPU Cores = 8; Per-Core Frequency (GHz, for capacity estimate) = 3
Idle percentage and wasted capacity
idle% = idle_ticks / total_ticks × 100; wasted_capacity = (idle% / 100) × cores
Idle CPU %
= 65.00
Idle Capacity (core-equivalent)
= 5.20
Busy CPU %
= 35.00
Idle Capacity (GHz-equivalent)
= 15.60
Assessment
= Moderate idle capacity — some headroom remains.
How it works
/proc/stat's cpu line reports cumulative ticks in each state (user, nice, system, idle, iowait, irq, softirq, steal) since boot; idle ticks as a fraction of total ticks over a sampling interval gives idle percentage, the complement of overall utilization. Multiplying idle percentage by core count converts a percentage into a concrete 'how many whole cores' worth of unused capacity exists' figure — useful framing for capacity planning and consolidation decisions, since '35% idle on a 32-core box' is a more actionable number when expressed as roughly 11 idle core-equivalents.
Formula
Idle percentage and wasted capacity
idle% = idle_ticks / total_ticks × 100; wasted_capacity = (idle% / 100) × cores
- t_{idle}
- idle ticks
- t_{total}
- total ticks
- c
- core count
Frequently Asked Questions
Is idle time from /proc/stat the same as 'available capacity'?
Mostly, but with nuance — idle ticks reflect time the CPU had literally nothing scheduled, which is a reasonable proxy for spare capacity for CPU-bound work, but it doesn't account for memory, I/O or network limits that might prevent a workload from actually using that idle CPU time.
What's the difference between idle and iowait in /proc/stat?
Both represent the CPU doing no useful work, but iowait specifically means idle-while-waiting-for-outstanding-I/O, whereas plain idle means genuinely nothing was pending. High iowait alongside low plain-idle suggests I/O is the limiting factor even though the CPU itself isn't computing.
Why measure idle over an interval instead of reading /proc/stat once?
The counters in /proc/stat are cumulative since boot, so a single reading just shows historical totals; sampling twice and taking the delta over a known interval (the same technique tools like `top` and `mpstat` use internally) is required to get a current, meaningful idle percentage.