¿Hay alguna manera de hacer que su proceso use menos CPU?

¿Hay alguna manera de hacer que su proceso use menos CPU?

Quiero que mi dispositivo use menos CPU para ahorrar batería. Tengo un programa que usa una gran cantidad. niceno ayudará ya que todo lo que hace es cambiar la programación cuando la CPU está en %100, aunque no quiero que llegue a ese nivel

Respuesta1

Para que su CPU consuma menos batería, necesita que funcione más lento. La cantidad total de instrucciones de CPU necesarias para ejecutar su programa no depende de la velocidad a la que se ejecuta, por lo que limitar la proporción de tiempo de CPU utilizado por su programa haría que usemásCPU, nada menos. Cuando su CPU no hace nada en lugar de ejecutar su programa, todavía está usando energía. En el mejor de los casos, las pausas durante las cuales la CPU no hace nada serán lo suficientemente largas como para que entre en un estado de ahorro de energía; pero incluso entonces pagarás una multa por las transiciones de estado de energía adicional.

Limitar la proporción de tiempo de CPU utilizado por su proceso puede tener el efecto indirecto de hacer que el kernel cambie a una velocidad de reloj de CPU menos rápida. Que esto suceda depende de la elección degobernador de frecuencia de la CPUy los números exactos involucrados. Sucederá con el gobernador predeterminado (ondemand), pero la tasa es difícil de controlar.

Si desea ahorrar energía, la mejor estrategia es dejar que su programa use el 100% de la potencia disponible de la CPU (para que finalice lo más rápido posible), pero cambie su CPU para que funcione lo más lento posible (porque la cantidad de energía gastado por instrucción aumenta con la velocidad de la CPU).

Puede configurar la frecuencia de la CPU a través de parámetros en /sys/devices/system/cpu/cpu0/cpufreqy sus primos, o con varias interfaces de usuario. Elutilidades cpufreqProporciona dos herramientas de línea de comando:cpufreq-info,cpufreq-set. Hay unconjunto de herramientas más avanzadollamadopotencia de la CPUque ahora está incluido en las fuentes del kernel. Si usa Gnome, puede usar su subprograma Cpufreq. Hay otras GUI.

Para ahorrar la mayor cantidad de batería posible, ejecute su CPU a su frecuencia mínima. Ejecute cpufreq-infopara mostrar las frecuencias disponibles. Ejecute cpufreq-set -c 0 -g powersavepara ejecutar siempre la CPU 0 a su frecuencia mínima (repita con valores crecientes para -clas otras CPU).

Respuesta2

puedes usar cpulimit para PID específico, por ejemplo

 sudo cpulimit -b -l 80 -p 1183

re bueno:

renice +19 1183

esto establecerá la prioridad al más bajo posible para 1183

Respuesta3

No sé si existe una solución elegante para esto, pero puedes detener y reiniciar el proceso con señales:

PID=1234
mode=running
run_time=0.1
stop_time=0.1
while true; do
  if [ running = "$mode" ]; then
    kill -STOP "$PID"
    mode=stopped
    sleep "$run_time"
  else
    kill -CONT "$PID"
    mode=running
    sleep "$stop_time"
  fi
done

información relacionada