You can limit the maximum CPU usage of a specific process in Ubuntu by using a tool called “cpulimit”. This is useful for systems where you have an individual process causing strain on your systems resources and you need to free up some power for the rest of your systems processes to run properly and is especially useful in web hosting environments where you have terminal access and root or sudo credentials.
Before we begin, this tutorial assumes the following;
- You are running an Ubuntu 16 or Ubuntu 18 operating system.
- You have root or sudo access.
1. Update apt-get and install cpulimit.
The first step is to update your apt-get repositories and install the cpulimit tool.
apt-get update && apt-get install cpulimit
You can simulate a process that will take up most of your cpu using the
dd command by using the following command.
dd if=/dev/zero of=/dev/null &
2. Find out the PID or name of the process you want to limit.
top command to find out the PID (Process ID) or name of the process that you want to limit using the cpulimit tool.
Take note of the value in the PID or COMMAND column for the process that you want to limit using cpulimit.
3. Limit the cpu usage of the identified process.
You can now limit the cpu of the identified process in a couple of different ways. By using the PID or by using the process name/command.
To use the process/command, where
-e is the process name/command,
--limit is the maximum cpu usage before
cpulimit kicks in,
--cpu is the number of cpu assigned to your system. The
--cpu value is optional as
cpulimit can generally automatically detect this. But if you experience issues where it’s not limiting the cpu usage correctly, kill the
cpulimit process and run it again including the
-b allows you to continue to use the command line after running the command.;
cpulimit -e dd --limit 50 --cpu 1 -b
You call also limit using the pid by using the
-p value instead of
cpulimit -p 14421 --limit 50 --cpu 1 -b
apache2, for example;
2442 3412 3110 3226
cpulimit -P 2442 --limit 50 --cpu 1 -b
If you intend on using this in a cronjob or a script, you should take note that each time you run the command spawns a new process. If you dont want a million running cpulimit processes, be sure to kill off any that are not necessary.