cputhrottle
es la herramienta que necesitas. Puede instalarla con Homebrew .
Puedes monitorizar una serie de procesos por su nombre ejecutando el Bash scriptde abajo. No estoy muy seguro de cómo convertir esto en un elemento de inicio de sesión ya que cputhrottle
requiere permisos de superusuario. Ejecútelo como un script, en un flujo de trabajo de Automator, lo que sea:
# Get the Process/App names from Activity Monitor and put them here
apps=("AppOne" "AppTwo" "AppThree")
# Set the respective limits here
limits={30 40 50)
while true; do
for app in ${apps}; do
for limit in ${limits}; do
for pid in $(pgrep ${app}); do
sudo /path/to/cputhrottle ${pid} ${limit}
done
done
done
done
[Editado]
He añadido una versión diferente para este script (a bash
script), que podría ser útil para las personas que buscan limitar la CPU para múltiples aplicaciones.
Este nuevo script también permite especificar una lista que contenga el nombre de la aplicación y el límite de CPU para la misma.
La principal diferencia es que puedes añadir un límite de cpu por aplicación, y se ejecutará sólo una vez por aplicación. También he añadido la opción de matar a todos cputhrottle
procesos.
El script asume que ambos cputhrottle
y pidof
están instalados antes de ejecutarlo.
#!/bin/bash
if [[ $EUID > 0 ]]; then
echo "Please run this script as root/sudo"
exit 1
fi
# Pass --kill as argument to kill all running cputhrottles
if [ $1 = "--kill" ]; then
echo "Looking for running cputhrottles..."
pids=`pidof cputhrottle`
for pid in ${pids}; do
echo "> Killing PID ${pid}"
sudo kill ${pid}
done
echo "Done!"
exit 0
fi
declare -a applications
# Syntax='application;max-cpu'
applications[0]='Chrome;40'
applications[1]='Firefox;50'
applications[2]='pycharm;40'
applications[3]='webstorm;40'
applications[4]='Safari;35'
for i in "${applications[@]}"; do
app=(${i//;/ })
app_name=${app[0]}
cpu_limit=${app[1]}
printf "\nLooking for ${app_name}...\n"
pids=`pidof ${app}`
for pid in ${pids}; do
echo "> PID=${pid}, CPU=${cpu_limit}"
sudo cputhrottle ${pid} ${cpu_limit} &
done
done
printf "\nDone!\n"
echo "Run this script passing '--kill' as argument to remove all cputhrottles."
Fuente:
0 votos
Apenas consigo que Safari utilice el 10% de mi CPU con unos 20 Windows abiertos, así que te sugiero que intentes averiguar por qué la aplicación está utilizando esos recursos y solucionarlo, en lugar de limitarse a limitar los recursos que puede utilizar.
1 votos
@benwiggy - Luky tú. El hecho es que una aplicación puede comportarse como quiera, por ejemplo, puede pretender utilizar todos los recursos disponibles en el sistema, ya sea a propósito o por un error. Es el sistema operativo el que debe limitar cada aplicación para que todos los procesos tengan su cuota de tiempo de CPU. Y el usuario debe poder hacer saber al sistema operativo qué procesos tienen prioridad bajo su punto de vista. También hay que tener en cuenta que muchos ordenadores funcionan con baterías... por lo que el consumo de energía es otro factor a tener en cuenta.