How to Find the Top Memory Consuming Processes in Linux (2024)

Linux is an open-source and highly popular operating system, and it is the preferred option for deploying servers and applications on the Internet. It is very popular due to its command-line interface and built-in tools which help you to perform your tasks quickly and save a lot of time.

Sometimes your application or website is very slow or unresponsive due to high memory and CPU usage. In this case, you can use the ps and top command to identify which processes are eating all the resources on your system.

In this post, we will explain how to find top memory and CPU resource-consuming processes in Linux.

In This Article

  • Use ps Command to Find Top Processes by Memory and CPU Usage
  • Use the top Command to Find Top Processes by Memory and CPU Usage

Use ps Command to Find Top Processes

ps is a Linux command-line utility with many options that helps you to display output in different formats.

To list all running processes in Linux, run the following command:

ps aux

This will show you an overview of all running processes:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.1 0.1 160716 9904 ? Ss 16:58 0:06 /sbin/init splashroot 2 0.0 0.0 0 0 ? S 16:58 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? I< 16:58 0:00 [rcu_gp]root 4 0.0 0.0 0 0 ? I< 16:58 0:00 [rcu_par_gp]root 6 0.0 0.0 0 0 ? I< 16:58 0:00 [kworker/0:0H-kb]root 9 0.0 0.0 0 0 ? I< 16:58 0:00 [mm_percpu_wq]root 10 0.0 0.0 0 0 ? S 16:58 0:00 [ksoftirqd/0]root 11 0.1 0.0 0 0 ? I 16:58 0:05 [rcu_sched]root 12 0.0 0.0 0 0 ? S 16:58 0:00 [migration/0]

You can use the ps command with –sort argument to sort the output by memory and CPU usage.

The syntax for using the sort argument is:

ps aux --sort

To find the top running processes by CPU usage, run the following command:

ps aux --sort -%cpu

Output:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDvyom 8115 7.8 3.0 25770108 233784 tty2 Sl+ 17:58 1:37 /opt/google/chrome/chrome --type=renderer --enable-crashpad --crashpad-handler-pid=2815 --enable-crash-reporter=373d0de2-e0c8-419c-b983-084c773fcd79, --display-capture-permissions-policy-allowed --change-stack-guard-on-fork=enable --lang=en-GB --num-raster-threads=1 --renderer-client-id=82 --launch-time-ticks=3564377766 --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,7343938639469663677,16234295293987540603,131072 --enable-features=PasswordImportvyom 8164 6.2 3.0 25705000 233456 tty2 Sl+ 17:58 1:16 /opt/google/chrome/chrome --type=renderer --enable-crashpad --crashpad-handler-pid=2815 --enable-crash-reporter=373d0de2-e0c8-419c-b983-084c773fcd79, --display-capture-permissions-policy-allowed --change-stack-guard-on-fork=enable --lang=en-GB --num-raster-threads=1 --renderer-client-id=85 --launch-time-ticks=3576904510 --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,7343938639469663677,16234295293987540603,131072 --enable-features=PasswordImportvyom 2806 4.4 4.5 17565904 343660 tty2 SLl+ 17:01 3:26 /opt/google/chrome/chrome --enable-crashpadvyom 2314 4.3 2.9 3472696 222248 tty2 Rl+ 17:00 3:22 /usr/bin/gnome-shell

To find the top running processes by memory usage, run the following command:

ps aux --sort -%mem

Output:

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDvyom 2806 4.4 4.5 17562832 343688 tty2 SLl+ 17:01 3:26 /opt/google/chrome/chrome --enable-crashpadvyom 8115 7.8 3.0 25770108 232204 tty2 Sl+ 17:58 1:38 /opt/google/chrome/chrome --type=renderer --enable-crashpad --crashpad-handler-pid=2815 --enable-crash-reporter=373d0de2-e0c8-419c-b983-084c773fcd79, --display-capture-permissions-policy-allowed --change-stack-guard-on-fork=enable --lang=en-GB --num-raster-threads=1 --renderer-client-id=82 --launch-time-ticks=3564377766 --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,7343938639469663677,16234295293987540603,131072 --enable-features=PasswordImportvyom 8164 6.1 3.0 25705000 230116 tty2 Sl+ 17:58 1:16 /opt/google/chrome/chrome --type=renderer --enable-crashpad --crashpad-handler-pid=2815 --enable-crash-reporter=373d0de2-e0c8-419c-b983-084c773fcd79, --display-capture-permissions-policy-allowed --change-stack-guard-on-fork=enable --lang=en-GB --num-raster-threads=1 --renderer-client-id=85 --launch-time-ticks=3576904510 --shared-files=v8_context_snapshot_data:100 --field-trial-handle=0,i,7343938639469663677,16234295293987540603,131072 --enable-features=PasswordImport

If you want to show only the top 10 memory consuming processes, run the following command:

ps aux --sort -%mem | head -10

If you want to show only the command name instead of the full path of the command, run the following command:

ps -eo pid,ppid,cmd,comm,%mem,%cpu --sort=-%mem | head -10

Output:

 PID PPID CMD COMMAND %MEM %CPU 2806 1 /opt/google/chrome/chrome - chrome 4.5 4.3 8164 2828 /opt/google/chrome/chrome - chrome 3.2 6.2 8115 2828 /opt/google/chrome/chrome - chrome 3.0 7.8 2314 2176 /usr/bin/gnome-shell gnome-shell 2.9 4.4 2996 2828 /opt/google/chrome/chrome - chrome 2.4 0.5 8074 2828 /opt/google/chrome/chrome - chrome 2.4 0.8 7520 2828 /opt/google/chrome/chrome - chrome 2.4 0.3 8175 2828 /opt/google/chrome/chrome - chrome 2.2 0.3 2858 2823 /opt/google/chrome/chrome - chrome 2.2 3.8

Also Read

How to Check Linux CPU Usage or Utilization

Use the top Command to Find Top Processes by Memory and CPU Usage

top is another built-in Linux command-line utility that can be used to show all running processes in Linux. You can use various options with the top command to filter the output based on your requirements.

You can use the top command with the -o flag to show the top memory consuming processes:

top -o %MEM

Output:

Tasks: 329 total, 1 running, 281 sleeping, 0 stopped, 0 zombie%Cpu(s): 1.5 us, 0.7 sy, 0.0 ni, 94.6 id, 3.2 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 7580260 total, 2602168 free, 2668376 used, 2309716 buff/cacheKiB Swap: 2097148 total, 2097148 free, 0 used. 4486960 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2806 vyom 20 0 16.753g 343596 183124 S 0.0 4.5 3:37.39 chrome 8164 vyom 20 0 24.516g 241968 103164 S 0.0 3.2 1:44.22 chrome 8115 vyom 20 0 24.570g 237756 113464 S 0.0 3.1 2:04.79 chrome 2314 vyom 20 0 3472696 222248 97556 S 1.3 2.9 3:49.13 gnome-shell 8074 vyom 20 0 24.508g 187804 110344 S 0.0 2.5 0:11.59 chrome 7520 vyom 20 0 24.563g 185760 104852 S 0.0 2.5 0:06.98 chrome 2996 vyom 20 0 24.503g 185316 85720 S 0.0 2.4 0:27.90 chrome 8175 vyom 20 0 24.518g 171224 100040 S 0.0 2.3 0:04.96 chrome 

If you want to display only the top 10 memory consuming processes, run the following command:

top -o %MEM | head -n 16

Output:

top - 18:31:11 up 1:32, 1 user, load average: 0.32, 0.41, 0.65Tasks: 330 total, 1 running, 282 sleeping, 0 stopped, 0 zombie%Cpu(s): 14.3 us, 3.5 sy, 0.1 ni, 78.8 id, 3.1 wa, 0.0 hi, 0.1 si, 0.0 stKiB Mem : 7580260 total, 2623576 free, 2655868 used, 2300816 buff/cacheKiB Swap: 2097148 total, 2097148 free, 0 used. 4508812 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2806 vyom 20 0 16.749g 343920 183192 S 0.0 4.5 3:39.02 chrome 8164 vyom 20 0 24.513g 232772 103276 S 0.0 3.1 1:45.33 chrome 8115 vyom 20 0 24.557g 230336 111896 S 0.0 3.0 2:05.62 chrome 2314 vyom 20 0 3472696 222880 97560 S 0.0 2.9 3:59.60 gnome-shell 8074 vyom 20 0 24.508g 187740 110344 S 0.0 2.5 0:11.61 chrome 7520 vyom 20 0 24.563g 185724 104852 S 0.0 2.5 0:06.99 chrome 2996 vyom 20 0 24.503g 185012 85720 S 0.0 2.4 0:27.98 chrome 8175 vyom 20 0 24.518g 171224 100040 S 0.0 2.3 0:04.97 chrome 2735 vyom 20 0 37.371g 168668 119056 S 0.0 2.2 0:05.57 skypeforlinux 

If you want to display only the top 10 CPU-consuming processes, run the following command:

top -o %CPU | head -n 16

Output:

top - 18:32:05 up 1:33, 1 user, load average: 0.48, 0.43, 0.64Tasks: 330 total, 1 running, 282 sleeping, 0 stopped, 0 zombie%Cpu(s): 14.2 us, 3.5 sy, 0.1 ni, 78.9 id, 3.1 wa, 0.0 hi, 0.1 si, 0.0 stKiB Mem : 7580260 total, 2621204 free, 2662180 used, 2296876 buff/cacheKiB Swap: 2097148 total, 2097148 free, 0 used. 4506588 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2314 vyom 20 0 3472696 223296 97560 S 11.8 2.9 4:03.68 gnome-shell 2161 vyom 20 0 998276 86120 55136 S 5.9 1.1 2:30.95 Xorg 8822 vyom 20 0 44368 4188 3364 R 5.9 0.1 0:00.02 top 1 root 20 0 160716 9904 6644 S 0.0 0.1 0:06.65 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 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 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kb 9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 

Also Read

How to Check Size of Files and Directory on Linux

Conclusion

In this post, we explained how to find top CPU and Memory consuming processes in Linux. You can use these commands to troubleshoot performance-related issues in Linux. Try it on VPS hosting from Atlantic.Net!

How to Find the Top Memory Consuming Processes in Linux (2024)
Top Articles
Latest Posts
Article information

Author: Lilliana Bartoletti

Last Updated:

Views: 6244

Rating: 4.2 / 5 (53 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Lilliana Bartoletti

Birthday: 1999-11-18

Address: 58866 Tricia Spurs, North Melvinberg, HI 91346-3774

Phone: +50616620367928

Job: Real-Estate Liaison

Hobby: Graffiti, Astronomy, Handball, Magic, Origami, Fashion, Foreign language learning

Introduction: My name is Lilliana Bartoletti, I am a adventurous, pleasant, shiny, beautiful, handsome, zealous, tasty person who loves writing and wants to share my knowledge and understanding with you.