This article was contributed by Dustin Cisneros at RackNerd, a web hosting and infrastructure as a service provider which was recently voted #1 by the LowEndTalk community! If you are looking for a Linux VPS, Ryzen VPS, Windows VPS, or shared and reseller hosting services, be sure to take a look at RackNerd’s latest special offers here.
Are you looking to restrict the CPU utilization of a particular process or application on your Linux server? CPULimit is a tool in Linux that is used to limit the CPU usage of a process. It prevents an application from utilizing a whole core for a considerable period. Every application running on a PC uses up the processor’s power and if eventually many applications are used together they can slow down a computer by using too much processor power thus, CPULimit can be used to limit this usage, and prevent excessive power use of the processor.
Requirements for CPULimit Installation
There are mainly 3 requirements for installing CPULimit. Firstly, a 64bit server that can run CentOS 7 is needed (we will be using a CentOS 7 based server in this tutorial). Secondly, sudo or root access is required. And finally make, screen, and wget are required, so please have these installed on your server before proceeding further.
How to install CPULimit
The installation process is as follows:
1. The first step involves the extraction of tarball after downloading of CPULimit:
cd ~ wget https://astuteinternet.dl.sourceforge.net/project/limitcpu/limitcpu/cpulimit-2.5.tar.gz tar -xvf cpulimit-2.5.tar.gz
2. The next step includes entering the directory created in step 1:
cd cpulimit-2.5
3. For the compilation of CPULimit into Binary usage of make is done next:
make
4. 3rd step makes a binary available in the cpulimit-2.5 directory. For the completion of the installation process the final command is as such:
make install
Working principle of CPULimit
The basic working principle of CPULimit is to quickly terminate or start the applications so that CPU usage can be limited to a smaller number of cycles. However, the applications that can be terminated when a stop signal: (SIGSTOP) is sent, should not be worked with CPULimit.
How to configure CPULimit
The next thing we need to know about is the PID (i.e. Process ID). This can be done by utilizing the “top” command:
top –c
The running processes should now be displayed, for example below:
Tasks: 130 total, 1 running, 129 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.2 us, 0.0 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 3881740 total, 191952 free, 413472 used, 3276316 buff/cache KiB Swap: 4063228 total, 4062912 free, 316 used. 2881364 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1336 plex 35 15 1368172 67464 6668 S 0.3 1.7 155:41.58 Plex Plug-in [com.plexapp.system] /usr/lib/plexmediaserver/Resources/Plug-ins-995f1dead+ 31345 root 20 0 326572 21844 12784 S 0.3 0.6 86:45.32 docker-containerd --config /var/run/docker/containerd/containerd.toml 1 root 20 0 193704 6744 4088 S 0.0 0.2 6:49.22 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 2 root 20 0 0 0 0 S 0.0 0.0 0:01.45 [kthreadd] 3 root 20 0 0 0 0 S 0.0 0.0 0:12.77 [ksoftirqd/0] 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/0:0H] 7 root rt 0 0 0 0 S 0.0 0.0 0:13.95 [migration/0]
Now in the above example – let’s say Plex needs to be limited to 10% CPU utilization. You will want to run the command in screen as follows:
screen -S limitcpucpulimit -p 1336 -l 10
Ctrl+A+D command can be used to leave the screen.
Overall, the following code is used as the format for CPULimit:
cpulimit -p (PROCESS PID) -l (CPU %)
Do you use cpulimit in your environment? We would love to hear your comments below!
Related Posts:
- eWallHost: 4GB VPS for Only $4.99/Month in Finland or Germany! - September 7, 2024
- Hostneva: Cheap Shared Hosting on Enterprise-Grade Fabric Around the World, Starting at Only $6/YEAR! - September 6, 2024
- Hudson Valley Host: Yearly VPS Offers That Make a 2GB VPS Cost Only $1.50/Month! - September 5, 2024
You are a mind reader! I was just looking for something like this earlier today. My search turned up complicated processes, yours is sooooo much easier. Thank you Dustin.
Hi Dustin, does this apply to OpenVZ?