Basics of the Linux Top Command
Recently, I had a tip submitted that referred to using the Linux top command to “check overall CPU utilization and individual CPU utilization”. Thanks, Sworna Dunant. It’s a good tip. However, top can be used for so much more that I decided to expand on it a little…
Before we get started, please note that the top command has it’s own versions and has slightly different options with each version. To check your top command version use the following:
$ top -v top: procps version 3.3.9
Also, the options explained below are those that I have found useful and are by no means a comprehensive list of what can be done using top. More detail can be found in the man pages or here.
Display Running Processes
The screen below displays a table of the currently running processes with some very useful information:
- PID – Process ID
- User – The UserID running the process
- %CPU – CPU used by the process
- %MEM – Memory used by the process
- Command – The command the process is running
If you look in the header there is even more info:
- Uptime
- # of Users on the system
- Load Average for the last 5 min, 10 min & 15 min
- More explained in detail here
$ top top - 06:42:15 up 228 days, 11:32, 1 user, load average: 0.35, 0.52, 0.60 Tasks: 195 total, 1 running, 194 sleeping, 0 stopped, 0 zombie Cpu(s): 16.8%us, 2.3%sy, 0.0%ni, 78.5%id, 0.0%wa, 0.7%hi, 1.7%si, 0.0%st Mem: 8175332k total, 5788888k used, 2386444k free, 510972k buffers Swap: 16779852k total, 96k used, 16779756k free, 2179896k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 11159 user 15 0 217m 81m 19m S 19.0 1.0 18:38.26 runbatch 28053 user 15 0 168m 41m 18m S 12.6 0.5 1:28.43 runbatch 16222 user 15 0 127m 27m 15m S 2.0 0.3 3:34.47 jdenet_k 16262 user 15 0 1398m 98m 24m S 1.7 1.2 4:30.66 jdenet_k 16339 user 15 0 60232 3848 3144 S 1.7 0.0 2:40.67 jdenet_n 16242 user 15 0 803m 146m 30m S 1.3 1.8 8:03.14 jdenet_k
Sort by Memory, CPU Usage, Process ID or Runtime
Use the following key strokes to sort the Top data:
- Shift+M – sort by descending Memory usage
- Shift+P – sort by descending CPU usage
- Shift+N – sort by descending Process ID
- Shift+T – sort by descending Runtime
Change The Refresh Interval
By default the top command refreshes the data every 3 seconds. That delay can be changed by pressing the [d] key. Top will ask you to enter your desired value, which can be less than 1.
top - 00:25:49 up 229 days, 5:15, 1 user, load average: 1.09, 1.27, 1.16 Tasks: 194 total, 2 running, 192 sleeping, 0 stopped, 0 zombie Cpu(s): 38.4%us, 1.3%sy, 0.0%ni, 56.7%id, 0.0%wa, 0.8%hi, 2.8%si, 0.0%st Mem: 8175332k total, 6829240k used, 1346092k free, 562332k buffers Swap: 16779852k total, 96k used, 16779756k free, 2809648k cached Change delay from 3.0 to: .5 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 16243 jde900 15 0 654m 311m 36m S 0.0 3.9 15:34.52 jdenet_k 16242 jde900 15 0 804m 146m 30m S 0.3 1.8 15:44.62 jdenet_k
Display The Full Command Path and Arguments
Press the [c] key to display the full command path and arguments of the processes.
top - 00:31:50 up 229 days, 5:21, 1 user, load average: 1.39, 1.37, 1.22 Tasks: 196 total, 3 running, 193 sleeping, 0 stopped, 0 zombie Cpu(s): 49.3%us, 4.5%sy, 0.0%ni, 41.3%id, 0.2%wa, 0.8%hi, 3.9%si, 0.0%st Mem: 8175332k total, 6883860k used, 1291472k free, 562528k buffers Swap: 16779852k total, 96k used, 16779756k free, 2812428k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21132 jde900 15 0 182m 60m 18m R 64.2 0.8 21:40.48 runbatch USER PASSWORD 19876 jde900 15 0 277m 45m 19m S 16.3 0.6 0:22.50 jdenet_k 6015 25324 jde900 15 0 170m 44m 19m S 11.6 0.6 0:20.20 runbatch USER PASSWORD 25330 jde900 15 0 166m 39m 18m R 8.3 0.5 0:15.26 runbatch USER PASSWORD 17067 jde900 15 0 60320 3948 3208 S 6.3 0.0 4:38.34 jdenet_n 6015 11594 jde900 15 0 185m 45m 19m S 5.3 0.6 1:57.17 runbatch USER PASSWORD 16242 jde900 15 0 804m 146m 30m S 0.3 1.8 15:45.21 jdenet_k 6015
Display CPU Core Information Separately
Press the [1] key to display the individual CPU core information in the header.
Tasks: 195 total, 1 running, 194 sleeping, 0 stopped, 0 zombie Cpu0 : 3.0%us, 0.3%sy, 0.0%ni, 96.6%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Cpu1 : 37.0%us, 1.3%sy, 0.0%ni, 56.9%id, 0.0%wa, 1.3%hi, 3.4%si, 0.0%st Mem: 8175332k total, 6856660k used, 1318672k free, 562768k buffers Swap: 16779852k total, 96k used, 16779756k free, 2815036k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21132 jde900 15 0 182m 60m 18m S 30.9 0.8 25:14.79 runbatch USER PASSWORD 25330 jde900 15 0 167m 40m 18m S 13.0 0.5 0:48.80 runbatch USER PASSWORD 16262 jde900 15 0 1398m 94m 24m S 0.3 1.2 8:57.37 jdenet_k 6015
Conclusion
There are many options to consider when using the top command to quickly get system performance information from your Linux servers. Those above are just the ones that I have found to be useful in supporting Oracle JD Edwards EnterpriseOne. A more in depth article can be found here.
If you have any tips for the top command or any others that you use, please let me know in the comments.
Average Rating