cpulimit

cpulimit

TLDR

Limit an existing process with PID 1234 to only use 25% of the CPU

$ cpulimit --pid [1234] --limit [25%]
copy

Limit an existing program by its executable name

$ cpulimit --exe [program] --limit [25]
copy

Launch a given program and limit it to only use 50% of the CPU

$ cpulimit --limit [50] -- [program arg1 arg2 ...]
copy

Launch a program, limit its CPU usage to 50% and run cpulimit in the background

$ cpulimit --limit [50] --background -- [program]
copy

Kill its process if the program's CPU usage goes over 50%

$ cpulimit --limit 50 --kill -- [program]
copy

Throttle both it and its child processes so that none go about 25% CPU

$ cpulimit --limit [25] --monitor-forks -- [program]
copy

SYNOPSIS

cpulimit [TARGET] [OPTIONS...] [ -- PROGRAM]

DESCRIPTION

TARGET must be exactly one of these:

-p, --pid=N

pid of the process

-e, --exe=FILE

name of the executable program file

-P, --path=PATH

absolute path name of the executable program file

OPTIONS

-b, --background

run cpulimit in the background, freeing up the terminal

-f, --foreground

run cpulimit in foreground while waiting for launched process to finish

-c, --cpu

specify the number of CPU cores available. Usually this is detected for us.

-l, --limit=N

percentage of CPU allowed from 1 up. Usually 1 - 100, but can be higher on multi-core CPUs. (mandatory)

-q, --quiet

Runs in quiet mode, avoids writing update messages to console.

-k, --kill

kill target process instead of throttling its CPU usage

-m, --monitor-forks

watch and throttle child processes of the target process Warning: It is usually a bad idea to use this flag on a shell script. The commands in the script will each spawn a process which will, in turn, spawn more copies of this program to throttle them, bogging down the system.

-r, --restore

restore a process killed using the -k flag.

-s, --signal

send an alternative signal to the watched process when we exit. Default is SIGCONT.

-v, --verbose

show control statistics

-z, --lazy

exit if there is no suitable target process, or if it dies

--

This is the final CPUlimit option. All following options are for another program we will launch.

-h, --help

display this help and exit

EXAMPLES

Assuming you have started `foo --bar` and you find out with top(1) or ps(1) that this process uses all your CPU time you can either

# cpulimit -e foo -l 50

limits the CPU usage of the process by acting on the executable program file (note: the argument "--bar" is omitted)

# cpulimit -p 1234 -l 50

limits the CPU usage of the process by acting on its PID, as shown by ps(1)

# cpulimit -P /usr/bin/foo -l 50

same as -e but uses the absolute path name

# /usr/bin/someapp
# cpulimit -p $! -l 25 -b

Useful for scripts where you want to throttle the last command run.

# cpulimit -l 20 firefox

Launch Firefox web browser and limit its CPU usage to 20%

# cpulimit -l 25 -- firefox -private

Launch Firefox web browser in private mode and limit its CPU usage to 25%

# cpulimit -c 2 -p 12345 -l 25

The -c flag sets the number of CPU cores the program thinks are available. Usually this is detected for us, but can be over-ridden.

# cpulimit -l 20 -k firefox

Launch the Firefox program and kill it if the process goes over 20% CPU usage.

# cpulimit -l 20 -p 1234 -s SIGTERM

Throttle process 1234 at 20% CPU usage. If cpulimit is forced to exit, it sends the watched process the SIGTERM signal.

NOTES

AUTHOR

This manpage was written for the Debian project by gregor herrmann <gregoa@debian.org> but may be used by others.

Copied to clipboard
coinbase