Есть ли способ заставить ваш процесс использовать меньше ресурсов ЦП?

Есть ли способ заставить ваш процесс использовать меньше ресурсов ЦП?

Я хочу, чтобы мое устройство использовало меньше процессора для экономии батареи. У меня есть программа, которая использует его в больших количествах. niceне поможет, так как все, что она делает, это меняет расписание, когда процессор загружен на 100%, а я не хочу, чтобы он был так загружен

решение1

Чтобы заставить ваш процессор использовать меньше батареи, вам нужно, чтобы он работал медленнее. Общее количество инструкций процессора, необходимых для выполнения вашей программы, не зависит от скорости, с которой она выполняется, поэтому ограничение доли процессорного времени, используемого вашей программой, заставит ее использоватьболееCPU, не меньше. Когда ваш CPU ничего не делает вместо того, чтобы запускать вашу программу, он все равно потребляет энергию. В лучшем случае паузы, во время которых CPU ничего не делает, будут достаточно длинными, чтобы он перешел в состояние энергосбережения; но даже в этом случае вы заплатите штраф за дополнительные переходы состояний питания.

Ограничение доли процессорного времени, используемого вашим процессом, может иметь косвенный эффект, вызывая переключение ядра на менее высокую тактовую частоту процессора. Произойдет ли это, зависит от выбораРегулятор частоты ЦПи точные цифры. Это произойдет с регулятором по умолчанию (ondemand), но скорость трудно контролировать.

Если вы хотите сэкономить электроэнергию, лучшая стратегия — позволить вашей программе использовать 100% доступной мощности ЦП (чтобы она завершилась как можно быстрее), но переключить ЦП на максимально медленную работу (поскольку количество энергии, затрачиваемое на инструкцию, увеличивается с ростом скорости ЦП).

Частоту процессора можно настроить с помощью параметров в /sys/devices/system/cpu/cpu0/cpufreqи его собратьях или с помощью различных пользовательских интерфейсов.утилиты cpufreqпредоставляют два инструмента командной строки:cpufreq-info,cpufreq-set. Eстьболее продвинутый набор инструментовназываетсямощность процессоракоторый теперь включен в исходники ядра. Если вы используете Gnome, вы можете использовать его апплет Cpufreq. Есть и другие GUI.

Чтобы максимально сэкономить заряд батареи, запустите процессор на минимальной частоте. Запустите cpufreq-infoдля отображения доступных частот. Запустите cpufreq-set -c 0 -g powersave, чтобы всегда запускать процессор 0 на минимальной частоте (повторите с увеличением значений для -cдругих процессоров).

решение2

например, вы можете использовать cpulimit для определенного PID

 sudo cpulimit -b -l 80 -p 1183

Ренице:

renice +19 1183

это установит приоритет на минимально возможный для 1183

решение3

Я не знаю, есть ли для этого элегантное решение, но вы можете остановить и перезапустить процесс с помощью сигналов:

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

Связанный контент