모든 코어의 CPU 주파수 스케일링 조정기를 한 번에 설정하려면 어떻게합니까?


37

각 코어에 대해 개별적으로 수행하는 대신 모든 코어에 대해 CPU 주파수 스케일링 조정기를 한 번에 설정하고 싶습니다. 이 방법이 있습니까?

(지사를 에코하는 것이 쉽지만 /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor사용자 정의 솔루션을 찾고 있지 않습니다.)


2
"사용자 정의 솔루션"을 사용하면 쉘 스크립트를 사용할 수 없으며 내장 GUI 버튼이어야합니까?
jg-faustus

표준 설치에 이미 솔루션이 있는지 궁금합니다 (GUI가 필요하지 않음).
htorque

이 페이지를 확인하십시오 : "데비안 구현"에서 idebian.wordpress.com/2008/06/22/cpu-frequency-scaling-in-linux : 부팅 기본값을 변경할 수 있으며 powernowd라는 사용자 공간 도구가 있습니다. (이것은 게시물이 2008 년부터 왔기 때문에 회신이 아닌 주석이며 여전히 작동하는지 테스트하지 않았습니다 ...)
jg-faustus

답변:


25

나는 여전히 리눅스 멍청하지만 cpufrequtils는 Ubuntu OS에 번들되어 있지 않지만 저장소에 있습니다.

sudo apt-get install cpufrequtils
sudo cpufreq-set -r -g performance
  • -r플래그는 모든 변경 ( "모든 하드웨어 관련") 코어를 설정하는 데 사용

6
-r related 옵션은 모든 코어에 대해이를 수행하지는 않습니다. -c <number> 옵션으로 CPU 번호를 지정해야하지만이 스크립트는 한 번에 모든 CPU에 대해이를 수행합니다 : for ((i = 0; i <$ (nproc); i ++)); cpufreq-set -c $ i -r -g 성능을 수행하십시오. 완료
Sri

6
정확히 @Sri가 맞습니다. cpufreq-set실제로는 간단하지만 필요한 기능이 부족합니다. 이 투표 카운터가 명확하게 보여 주듯이 많은 사람들은 그 설명이 단순히 오해를 불러 일으키기 때문에 그것을 알지 못합니다.
poige

2
테스트없이이 +1을 누가 주나요 ??? 이것은 전혀 작동하지 않습니다. 내가 찾을 수있는 가장 간단한 작업 솔루션을 게시했습니다.
switch87

20

나는 많이 봤는데 가능하지 않다고 생각하므로 다음과 같은 하나의 라이너를 추가했습니다 .bashrc.

function setgov ()
{
    echo "$1" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 
}

이제는 비슷한 것을 실행할 수 setgov ondemand있으며 모든 코어가 주문형 주지사로 전환됩니다 .


2
scaling_governor 파일이 루트가 소유하고 권한이 제한되어 있으므로 작동하지 않습니다. 권한 변경이 항상 권장되는 것은 아닙니다.
Sri

user49449의 답변에 대한 의견에서 대체 스크립트를 참조하십시오.
Sri

6

모든 코어의 총재를 변경하는 가장 짧은 명령은 다음과 같습니다.

sudo bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'

htorque가 언급 한 것처럼 .bashrc에 추가 할 수 있습니다 sudo setgov performance. 루트로 실행해야합니다 .

function setgov ()
{
     for i in {0..7}; 
     do 
         cpufreq-set -c $i -g $1; 
     done
}

2

bash 코드 완성을 추가 할 수도 있습니다.

function setgovernor () {
    echo "$1" | sudo tee 
    /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 
}
complete -W "$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors)" setgovernor

2

총재가 우분투 16.04 또는 그보다 최근 (현재 우분투 메이트에 있음) 약 30 초 후에 기본적으로 절전 모드로 돌아 가기 때문에이 설정을 고수 한 방식;

  1. 이 (한 줄의) 코드를 넣으십시오 (이전 답변의 switch87에 감사드립니다)

    sleep 60 && bash -c 'for i in {0..7}; do cpufreq-set -c $i -g performance; done'
    
  2. 디렉토리의 파일에

    /etc/rc.local
    

광산은 "exit 0"위의 주석이며 주석 처리 된 주석 아래에 주석 처리가 없습니다.

모르는 사람들을 위해 "rc.local"은 sudo로 명령을 실행합니다. 주지사 변경을위한 명령은 모두 sudo로 실행해야합니다.

관리자가 60 초 후에 코드를 다시 절전으로 재설정하고 코드를 sudo로 실행하여 성능으로 다시 변경합니다.

"60"(복사 코드에서)을 원하는 시간 (초)으로 변경하십시오 (초 단위 60 = 60 초 = 1 분). 로 변경.

검색 시간과 시간에서 이것보다 더 영구적 인 수정을 찾지 못했습니다. 이것이 내가 찾은 최선의 해결책이라면 절전에 몇 분이 걸리는지 알아 봅니다. 권리.

최선의 수정은 아니지만 전력 절약으로 거의 전환하지 않으면 다소 영구적입니다. 바로 부팅하고 게임이나 다른 것에 뛰어 들기를 원한다면 전원 절약 모드에서 다시 전환하거나 타이밍을 낮추기 위해 넣은 코드를 잠시 기다려야합니다 (시간이 얼마나 걸리는지에 따라 다름) 모든 기능을 시작하여 올바르게 성능으로 다시 전환합니다).

그리고 항상 그렇듯이 기본값으로 되돌리려면 (사람의 PC 과열과 관련된 몇 가지 문제를 보았으므로 처음에는 절전으로 설정했을 수 있습니다) rc.local에서 코드를 제거하고 재부팅하거나 다시 전환하십시오. CPU 아이콘 표시기 스위처를 사용하여 수동으로 실행하거나 실행하십시오.

 sudo /etc/init.d/cpufrequtils restart

터미널에서 다시 부팅하십시오.


1

다음을 실행하여 한 번에 모든 코어에 대해이 작업을 수행 할 수 있습니다

sudo cpupower frequency-set --governor performance

0

switch87의 답변을 바탕으로 간단한 스크립트를 작성 하여 모든 CPU로 cpufreq-set-all다른 cpufreq-set작업 을 수행 할 수 있습니다 .

   #!/bin/bash
   MAX_CPU=$((`nproc --all` - 1))
   for i in $(seq 0 $MAX_CPU); do
       echo "Changing CPU " $i " with parameter "$@;
       cpufreq-set -c $i $@ ;
   done

이제 다음 chmod +x과 같이 (물론 후에 ) 호출 할 수 있습니다 .

cpufreq-set-all -g powersave

또는

cpufreq-set-all -f 800Mhz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.