profile/home/dotfiles/local/bin/tweak-cpu-usage

37 lines
660 B
Bash
Executable File

#!/bin/bash
set -e
set -u
cores=$(nproc)
limits=(
# process_name:limit%
firefox:$(( 50 * cores ))
vesktop:$(( 20 * cores ))
)
# check for cpulimit command
if ! command -v cpulimit 2>/dev/null >/dev/null; then
echo "ERROR: need cpulimit command" >&2
exit 1
fi
limit_process() {
local process_name="$1"
local limit_percentage="${2%%.}"
cpulimit -i -e "$process_name" -l "$limit_percentage"
}
limit_processes() {
local pids
pids=()
for limit in "${limits[@]}"; do
IFS=: read process_name limit_percentage <<<"$limit"
limit_process "$process_name" "$limit_percentage" & pids+=($!)
done
wait "${pids[@]}"
}
limit_processes