배터리를 절약하기 위해 장치에서 CPU를 덜 사용하고 싶습니다. 많이 사용하는 프로그램이 있습니다. nice
CPU가 %100일 때 일정을 변경하는 것 뿐이고 CPU가 그렇게 높아지는 것을 원하지 않기 때문에 도움이 되지 않습니다.
답변1
CPU가 배터리를 덜 사용하려면 CPU가 더 느리게 실행되어야 합니다. 프로그램을 실행하는 데 필요한 CPU 명령어의 총량은 프로그램 실행 속도에 좌우되지 않으므로 프로그램에서 사용하는 CPU 시간 비율을 제한하면 프로그램을 더 많이 사용하게 됩니다.더CPU, 그 이하도 아닙니다. CPU가 프로그램을 실행하는 것 외에 다른 작업을 하지 않을 때에도 여전히 전력을 소비합니다. 가장 좋은 경우에는 CPU가 아무것도 하지 않는 일시 중지 시간이 절전 상태로 들어갈 만큼 길지만, 그래도 추가 전원 상태 전환에 대한 비용을 지불하게 됩니다.
프로세스에서 사용하는 CPU 시간의 비율을 제한하면 커널이 더 느린 CPU 클럭 속도로 전환되는 간접적인 효과가 있을 수 있습니다. 이런 일이 일어날지는 선택에 달려있다CPU 주파수 조정기그리고 관련된 특정 숫자. 이는 기본 거버너(온디맨드)에서 발생하지만 속도 제어가 어렵습니다.
전력을 절약하려는 경우 가장 좋은 전략은 프로그램이 사용 가능한 CPU 전력의 100%를 사용하도록 하는 것입니다(그래서 가능한 한 빨리 완료되도록). 그러나 CPU는 가능한 한 느리게 실행되도록 전환합니다(에너지 소비로 인해). ) 각 명령어의 비용은 CPU 속도에 따라 증가합니다).
/sys/devices/system/cpu/cpu0/cpufreq
해당 매개변수나 다양한 사용자 인터페이스를 사용하여 CPU 주파수를 구성할 수 있습니다. 이것CPUFreq 유틸리티두 가지 명령줄 도구가 제공됩니다.cpufreq-info
,cpufreq-set
. 하나 있다더욱 발전된 도구 모음라고CPU 성능이제 커널 소스 코드에 포함되었습니다. Gnome을 사용하는 경우 Cpufreq 애플릿을 사용할 수 있습니다. 다른 GUI도 있습니다.
배터리 전원을 최대한 절약하려면 CPU를 가장 낮은 주파수에서 실행하십시오. 사용 가능한 주파수를 표시하려면 실행하세요 cpufreq-info
. Run은 cpufreq-set -c 0 -g powersave
항상 CPU 0을 가장 낮은 빈도로 실행합니다( -c
다른 CPU에 대해서는 값 증가가 반복됨).
답변2
예를 들어 특정 PID에 대해 cpulimit를 사용할 수 있습니다.
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