
Tengo un montón de procesos con el mismo nombre: ocupan el 100% del tiempo de mi CPU, quiero que no sea más del 50%.
¿Cómo puedo hacer esto sin instalar ningún software adicional?
Respuesta1
Para conocer un mecanismo a nivel de kernel para esto, debe leer sobre LinuxGrupos de control. Esta es un área aún en desarrollo activo, por lo que deberá asegurarse de que lo que lea sea coherente con el kernel que tiene (o que está dispuesto a instalar).
Aunque dijo que no instalara nada adicional, podría considerar instalarlo cgred
para automatizar procesos en movimiento con nombres que coincidan con el grupo c de su CPU. En Debian, esto está en el cgroup-bin
paquete.
Respuesta2
Puede hacerlo con los comandos bash shell, sleep, pgrep y pkill usando señales STOP y CONT.
La siguiente frase hará que los procesos utilicen un máximo del 50% del tiempo total de CPU disponible. Se ejecutará cada 100 milisegundos y luego se detendrá durante otros 100 milisegundos.
while [ True ]; do pkill -STOP processname; sleep 0.1s; pkill -CONT processname; sleep 0.1s; done
Aquí está el mismo código dividido en varias líneas para facilitar la lectura:
while [ True ]
do pkill -STOP processname
sleep 0.1s
pkill -CONT processname
sleep 0.1s
done
No importa cuántos procesos existan siguiendo el patrón de nombre de proceso, no pueden exceder el 50% del uso de la CPU, porque todos se detienen y continúan al mismo tiempo, lo que significa que necesitan compartir el tiempo de CPU disponible entre ellos, cuando son activo. Esto garantiza que se cumpla el límite.
Hay un programa llamado cpulimit que hace más o menos lo mismo.
Respuesta3
Sin instalar ningún software extra que tengas nice
. El rango de valores es de-20a19.
nice -20 some_command
da some_command
elmás alta prioridad, y
nice 19 some_command
da some_command
elprioridad más baja.
Respuesta4
como está escrito anteriormente podría usarse como un script para ayudar a OOM-killer o también evitar su uso
decir cuando la CPU en general alcanza el 75% durante x minutos, ejecute pkill.sh
../scripts/boottime/OOMkiller.sh
while [ true] ;
do inxi -tcm5 > ~/cpu.log
sleep 0.5s
inxi -tcm5 >> ~/cpu/log | diff -m > ~/offender.log
done
for i in offender.log ;
do ./scripts/pkill.sh
done
../scripts/pkill.sh
while [true]
do pgrep $(i) -STOP $PID
pkill -STOP $PID
sleep 0.5s
pkill -CONT $PID
done