CPU Usage Limiter for Linux



What is it?

cpulimit is a simple program that attempts to limit the cpu usage of a process (expressed in percentage, not in cpu time). This is useful to control batch jobs, when you don't want them to eat too much cpu. It does not act on the nice value or other scheduling priority stuff, but on the real cpu usage. Also, it is able to adapt itself to the overall system load, dynamically and quickly.

News

  • 16 February 2008
    As promised, the subprocesses control implementation is at last in cpulimit svn. Check it out!
  • 10 February 2008
    A subversion repository is available thanks to sourceforge.
    You can get latest source code (still unstable!) running the command:
    svn checkout https://cpulimit.svn.sourceforge.net/svnroot/cpulimit/trunk cpulimit
    Or you can browse the code from the web interface.
  • 8 February 2008
    Started subprocesses control implementation, since a lot of people are asking about this feature. So stay tuned for a new version.
  • 18 January 2007
    Now the project is listed on the FSF/UNESCO Free Software Directory. Very glad for that!
  • 26 December 2006
    New homepage at http://cpulimit.sourceforge.net
  • 23 December 2006
    Source uploaded to sourceforge.
  • 9 August 2006
    Started a new project at sourceforge. You can see it here.

System Requirements

cpulimit should run on every Linux 2.2 or greater. It has been reported by several users that cpulimit works fine even on SMP hardware, but there is a little difference in the meaning of cpu usage (see below).
If you can modify the source code of cpulimit to make it run in a non Linux OS, please notify me, so I can publish your code. I think that the only non-portable code is iterating through the process list.

Instructions

Download last stable version from here or get the latest source code from Subversion repository with this command:
svn checkout https://cpulimit.svn.sourceforge.net/svnroot/cpulimit/trunk cpulimit
Then extract the source and compile with make:
tar zxf cpulimit-xxx.tar.gz
cd cpulimit-xxx
make
Executable file name is cpulimit. You may want to copy it in /usr/bin.

Examples of use

Limiting the process 'bigloop' by executable name to 40% CPU:
cpulimit --exe bigloop --limit 40
cpulimit --exe /usr/local/bin/bigloop --limit 40
Limiting a process by PID to 55% CPU:
cpulimit --pid 2960 --limit 55

Notes

If you have just one processor you can limit the percentage from 0% to 100%, and this is fine. But if your machine has four processors percentage may vary from 0% to 400%, so setting the limit to 200% means to use no more than half of the available power.

cpulimit should run at least with the same user running the controlled process. But it is much better if you run cpulimit as root, in order to have a higher priority and a more precise control.
Now cpulimit does limit also the children of the specified process. The code is still experimental, so let me know how it is.


Please send me your feedback, bug reports, feature requests to marlonx80 at hotmail dot com

SourceForge Logo Support This Project