Check Memory Usage of Process with Linux Top Command

Generally, we look at the memory usage using the free command that provides us the total physical memory and used memory out of total memory. But top command is more useful to check memory usage in Linux. The free command display only physical memory usage but top display virtual memory usages by each process. It displays how much memory % a process is consuming separately for each running process.

Top command displays a listing of the most CPU utilization tasks and also can sort the tasks by CPU usage, memory usage and runtime.

Top sort by memory

Open shell to run top command, if we run top it will display only command name of the running process, to see full command we use -c option with top.

$ top -c

Then press m it will sort output with an order of highest memory usage at top as below:

top - 07:12:37 up 69 days,  4:33,  1 user,  load average: 0.17, 0.10, 0.06
Tasks: 164 total,   1 running,  98 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.2 us,  0.5 sy,  0.0 ni, 96.0 id,  0.0 wa,  0.2 hi,  0.2 si,  0.0 st
KiB Mem : 29.3/4024444  [|||||||||||||||||||||||||||||                                                                       ]
KiB Swap:  9.5/524284   [||||||||||                                                                                          ]

24426 www-data  20   0  449796  62568  45484 S   5.3  1.6   0:25.12 php-fpm: pool www
19577 www-data  20   0  448112  60288  44652 S   1.7  1.5   0:29.16 php-fpm: pool www
 1233 root      20   0 1292628  41960   5188 S   0.3  1.0 580:00.20 /opt/site24x7/monagent/lib/Site24x7Agent
 1928 root      20   0 1183840  43808   5368 S   0.3  1.1  56:50.99 /opt/site24x7/monagent/lib/applog/Site24x7Applog
 7859 root      20   0   41856   3880   3200 R   0.3  0.1   0:00.07 top -c
    1 root      20   0   37672   4604   3240 S   0.0  0.1  14:35.54 /sbin/init
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.78 [kthreadd]
    3 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 [rcu_gp]
    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 [rcu_par_gp]

Also you can run top command as following

$ top

Then press SHIFT + m from the keyboard to sort by memory usage.

top sort by memory

Using shortcut keys

Modern Linux distro supports interactive menu for top to select memory usage.

Follow the below steps:

  • press Shift+f to enter the interactive menu.
  • press the up or down arrow until the %MEM choice is highlighted.
  • press s to select %MEM choice.
  • press enter to save your selection and exit (q)the interactive menu.

Below screenshot shows the interactive menu Shift+f:

top interactive menu shift + f

In older version of Linux it would be bit different as follows:

Run top command and press shift + f then the output will as displayed as shown below:

Current Sort Field: K for window 1:Def
Select sort field via field letter, type any other key to return

a: PID = Process Id
b: PPID = Parent Process Pid Note2:
c: RUSER = Real user name Field sorting uses internal values,
d: UID = User Id not those in column display. Thus,
e: USER = User Name the TTY & WCHAN fields will violate
f: GROUP = Group Name strict ASCII collating sequence.
g: TTY = Controlling Tty (shame on you if WCHAN is chosen)
h: PR = Priority
i: NI = Nice value
j: P = Last used cpu (SMP)
* K: %CPU = CPU usage
l: TIME = CPU Time
m: TIME+ = CPU Time, hundredths
n: %MEM = Memory usage (RES)
o: VIRT = Virtual Image (kb)
p: SWAP = Swapped size (kb)
q: RES = Resident size (kb)
r: CODE = Code size (kb)
s: DATA = Data+Stack size (kb)
t: SHR = Shared Mem size (kb)
u: nFLT = Page Fault count
v: nDRT = Dirty Pages count
w: S = Process Status
x: COMMAND = Command name/line
y: WCHAN = Sleeping in Function
z: Flags = Task Flags

Now press the letter corresponding to %MEM ie 'n' and then press 'ENTER' key.

Using a single command

You can run the following single top command from the terminal to display memory usage:

$ top -o %MEM
top memory single command


In this tutorial we used top command to display active process usage ordered by memory usage. Linux also have ps and pmap commands to check memory usage.

If you have any questions or feedback, feel free to leave a comment.

Leave a Comment