How do
I determine CPU and Memory utilization, based on running processes in Linux
using TOP?
Top
command provides a real-time look at what is happening with your system. Top
produces so much output that a new user may get over whelmed with all that’s
presented and what it means.
Let’s
take a look at TOP one line at a time.
The first line in top:
top - 22:09:08 up 14
min, 1 user, load average: 0.21, 0.23, 0.30
“22:09:08″
is the current time; “up 14 min” shows how long the system has been up for; “1
user” how many users are logged in; “load average: 0.21, 0.23, 0.30″ the load
average of the system (1minute, 5 minutes, 15 minutes).
Load
average is an extensive topic and to understand its inner workings can be
daunting. The simplest of definitions states that load average is the cpu
utilization over a period of time. A load average of 1 means your cpu is being
fully utilized and processes are not having to wait to use a CPU. A load
average above 1 indicates that processes need to wait and your system will be
less responsive. If your load average is consistently above 3 and your system
is running slow you may want to upgrade to more CPU’s or a faster CPU.
The second line in top:
Tasks: 82 total,
1 running, 81 sleeping, 0 stopped,
0 zombie
Shows
the number of processes and their current state.
The third line in top:
Cpu(s): 9.5%us, 31.2%sy, 0.0%ni, 27.0%id, 7.6%wa,
1.0%hi, 23.7%si, 0.0%st
Shows
CPU utilization details. “9.5%us” user processes are using 9.5%; “31.2%sy”
system processes are using 31.2%; “27.0%id” percentage of available cpu;
“7.6%wa” time CPU is waiting for IO.
When
first analyzing the Cpu(s) line in top look at the %id to see how much cpu is
available. If %id is low then focus on %us, %sy, and %wa to determine what is
using the CPU.
The fourth and fifth lines in top:
Mem: 255592k total, 167568k used, 88024k free, 25068k buffers
Swap: 524280k total, 0k used, 524280k free, 85724k cached
Describes
the memory usage. These numbers can be misleading. “255592k total” is total
memory in the system; “167568K used” is the part of the RAM that currently
contains information; “88024k free” is the part of RAM that contains no
information; “25068K buffers and 85724k cached” is the buffered and cached data
for IO.
So what
is the actual amount of free RAM available for programs to use ?
The
answer is: free + (buffers + cached)
88024k
+ (25068k + 85724k) = 198816k
How
much RAM is being used by progams ?
The
answer is: used – (buffers + cached)
167568k
– (25068k + 85724k) = 56776k
The processes information:
Top
will display the process using the most CPU usage in descending order. Lets
describe each column that represents a process.
PID USER
PR NI VIRT
RES SHR S %CPU %MEM TIME+
COMMAND
3166 apache 15
0 29444 6112 1524 S 6.6 2.4
0:00.79 httpd
PID –
process ID of the process
USER –
User who is running the process
PR –
The priority of the process
NI –
Nice value of the process (higher value indicates lower priority)
VIRT –
The total amount of virtual memory used
RES –
Resident task size
SHR –
Amount of shared memory used
S – State of the task. Values are S (sleeping), D (uninterruptible
sleep), R (running), Z(zombies), or T (stopped
or traced)
%CPU –
Percentage of CPU used
%MEM –
Percentage of Memory used
TIME+ –
Total CPU time used
COMMAND
– Command issued
Interacting
with TOP
Now
that we are able to understand the output from TOP lets learn how to change the
way the output is displayed.
Just press the following key while running top
and the output will be sorted in real time.
M –
Sort by memory usage
P –
Sort by CPU usage
T –
Sort by cumulative time
z –
Color display
k –
Kill a process
q –
quit
If we
want to kill the process with PID 3161, then press “k” and a prompt will ask
you for the PID number, and enter 3161.
Command
Line Parameters with TOP
You can
control what top displays by issuing parameters when you run top.
- d –
Controls the delay between refreshes
- p –
Specify the process by PID that you want to monitor
-n –
Update the display this number of times and then exit
If we
want to only monitor the http process with a PID of 3166
$ top -p 3166
If we
want to change the delay between refreshes to 5 seconds
$ top -d 5