The software described in this documentation is either in Extended Support or Sustaining Support. See https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdf for more information.
Oracle recommends that you upgrade the software described by this documentation as soon as possible.
The uptime, mpstat, sar, dstat, and top utilities allow you to monitor CPU usage. When a system's CPU cores are all occupied executing the code of processes, other processes must wait until a CPU core becomes free or the scheduler switches a CPU core to run their code. If too many processes are queued too often, this can represent a bottleneck in the performance of the system.
The commands mpstat -P ALL and sar -u -P ALL display CPU usage statistics for each CPU core and averaged across all CPU cores.
The %idle
value shows the percentage of
time that a CPU was not running system code or process code.
If the value of %idle
is near 0% most of
the time on all CPU cores, the system is CPU-bound for the
workload that it is running. The percentage of time spent
running system code (%system
or
%sys
) should not usually exceed 30%,
especially if %idle
is close to 0%.
The system load average represents the number of processes that are running on CPU cores, waiting to run, or waiting for disk I/O activity to complete averaged over a period of time. On a busy system, the load average reported by uptime or sar -q should usually be not greater than two times the number of CPU cores over periods as long as 5 or 15 minutes. If the load average exceeds four times the number of CPU cores for long periods, the system is overloaded.
In addition to load averages (ldavg-*
), the
sar -q command reports the number of
processes currently waiting to run (the run-queue
size, runq-sz
) and the total
number of processes (plist_sz
). The value
of runq-sz
also provides an indication of
CPU saturation.
Determine the system's average load under normal loads where users and applications do not experience problems with system responsiveness, and then look for deviations from this benchmark over time. A dramatic rise in the load average can indicate a serious performance problem.
A combination of sustained large load average or large run
queue size and low %idle
can indicate that
the system has insufficient CPU capacity for the workload.
When CPU usage is high, use a command such as
dstat or top to
determine which processes are most likely to be responsible.
For example, the following dstat command
shows which processes are using CPUs, memory, and block I/O
most intensively:
# dstat --top-cpu --top-mem --top-bio
The top command provides a real-time
display of CPU activity. By default, top
lists the most CPU-intensive processes on the system. In its
upper section, top displays general
information including the load averages over the past 1, 5 and
15 minutes, the number of running and sleeping processes
(tasks), and total CPU and memory usage. In its lower section,
top displays a list of processes, including
the process ID number (PID), the process owner, CPU usage,
memory usage, running time, and the command name. By default,
the list is sorted by CPU usage, with the top consumer of CPU
listed first. Type f
to select which fields
top displays, o
to
change the order of the fields, or O
to
change the sort field. For example, entering
On
sorts the list on the percentage
memory usage field (%MEM
).