Pang Yan Han
Posted on February 25, 2018
This is available on my GitHub repo: https://github.com/yanhan/notes/blob/master/top.md
Accompanying blog post: https://yanhan.github.io/posts/my-notes-on-the-top-program.html
Stuff you see at the top of the screen
Load average values
The load average values are located at the top right corner of the screen. They look like the following:
load average: 0.45, 0.57, 0.62
These 3 numbers are the 1 min, 5 min and 15 min load average values respectively.
Simple way to interpret load averages: If the load average is 1.00 and the CPU has 1 core, the server is at capacity. With 2 cores, server is at capacity when the number is 2.00. With 4 cores, this number should be 4.00. And so on.
Longer explanation: Think of a CPU core as a road and a process as a car. If there is always 1 car on the road, the load average is 1.00. If there are 2 cars, then the load average is 2.00 and 1 car can be on the road while the other car has to wait for the road to be free. Hence load average is very roughly number of process that need to run / number of CPU cores
and measures how overloaded a server is.
A simple rule of thumb: If the 15 min load average exceeds 0.7 (after dividing by the number of CPU cores), then the server may be overloaded.
For a better explanation on load averages, see: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
CPU percentage numbers
- user time
(us)
- system time
(sys)
- time spent on low priority processes aka nice time
(ni)
- time spent in wait for I/O processes
(wa)
- time handling hardware interruptions
(hi)
- time handling software interruptions
(si)
- time stolen from virtual machine
(st)
Columns
-
PR
: task's priority. From -20 to 19, with -20 being most important -
NI
: nice value, which augments priority of task. Negative number increases task's priority, positive number decreases it -
VIRT
: virtual memory used (combo of RAM and swap) -
RES
: resident size of non-swapped, physical memory in KBs -
SHR
: shared memory size, memory that can be allocated to other processes -
S
: process status. Can be running(R)
, sleeping and unable to be interrupted(D)
, sleeping and able to be interrupted(S)
, trace / stopped(T)
, zombie(Z)
-
TIME+
: cumulative CPU time that the process and children processes have used
Interactive commands
-
M
: sort by memory usage -
P
: sort by CPU usage -
s
: change refresh time (will be prompted to enter a value) -
Space / Enter
: refresh -
n
: change number of processes shown (will be prompted to enter a value) -
k
: kill process (will be prompted to enter a value for the PID) -
f
: see list of fields and you can choose which to display. Use up and down keys to navigate, pressd
to toggle display, presss
to select as sort field -
H
: show individual threads for all processes -
i
: toggle whether idle processes are shown -
U / u
: filter by username -
1
: toggle between all CPUs as a whole vs. CPU by core -
L
: locate string -
w
: write config file -
h
: open help
Command line options
-
-n 10
: shows10
iterations of information and then quit -
-b
: batch mode: just prints information on processes every specified number of seconds until all iterations run out (specified with-n
) -
-d[interval]
: set delay time that top uses to refresh results -
-i
: toggle whether idle processes are shown -
p[PID,PID]
: filter to only show the specified processes -
-u [username]
: filters by user
References
Posted on February 25, 2018
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.