Start request Start request

Linux Server High Load: CPU or Storage?

A high load average does not automatically mean the CPU is overloaded.

Processes waiting on disk I/O can push Linux load averages upward even when CPU usage is not the primary bottleneck. The important part is identifying what the processes are actually waiting for.

The symptom: high load average

A server may report load averages such as 8, 15 or 30, but that number alone does not identify the bottleneck.

CPU saturation

Processes actively consume available CPU time and runnable processes wait for access to the processors.

Disk I/O pressure

Processes can remain blocked while waiting for storage, increasing load even when CPU utilization is moderate.

Application pressure

PHP workers, databases, cron jobs or background tasks can generate either CPU pressure, I/O pressure or both.

Process state changes the diagnosis

The busiest-looking process does not always explain the load. Running, waiting and blocked process states can point to very different bottlenecks.

Processes waiting in uninterruptible sleep can be an important sign that part of the workload is blocked outside normal CPU execution.

Load average and CPU utilization

CPU idle and I/O wait percentages

Running and blocked process counts

Processes in D state

Disk latency and utilization

Application and database activity

What the evidence showed

High load becomes useful only when it is compared with what the server is actually waiting on.

CPU behaviour

Processor utilization helps distinguish genuinely CPU-bound workloads from problems where the processors are not the limiting resource.

Process state

Running and blocked processes provide important context. A large number of processes waiting outside the CPU can produce high load for a very different reason.

Storage behaviour

Elevated I/O wait, blocked work and storage latency can indicate that the workload is being delayed by disk activity rather than processor capacity.

Application activity

PHP, databases, scheduled jobs and background workloads can create the pressure seen at system level, so the infrastructure symptoms have to be connected back to application activity.

When CPU is the bottleneck

CPU saturation normally appears as consistently high processor utilization with runnable work competing for available CPU time.

The next step is identifying what creates that work: PHP execution, database queries, compression, application loops, background jobs or abusive traffic.

Low CPU idle time

Sustained CPU-heavy processes

Large runnable process queue

PHP or application worker pressure

Database CPU consumption

Traffic-driven application execution

When disk I/O is the bottleneck

A server can feel completely overloaded while CPU usage remains relatively low if processes spend their time waiting for storage.

This can happen during database activity, backups, large log writes, filesystem operations or workloads competing for slow storage.

Elevated I/O wait

Processes blocked in D state

High disk utilization

Elevated storage latency

Database or backup activity

Large or continuous filesystem operations

Why the distinction matters

Increasing CPU capacity does not solve a storage bottleneck, and changing disk configuration does not solve a runaway application consuming every CPU core.

The load average is an alert that work is waiting. The troubleshooting process has to determine what that work is waiting for before changes are made.