우분투 10.04에서 cpufrequtils을 사용하여 CPU 클럭 스케일링 조절하기

이것은 제가 우분투 10.04를 사용하다가 알게된 팁 입니다.
우선 드릴 말씀은, 저는 우분투를 사용한지 얼마 되지 않은 초보자 이므로
지금 제가 알려드리는 방법이 꼭 맞다거나 혹은 유용하지 않을 수도 있습니다.
(정정 사항이 있을 경우 덧글로 알려 주세요. ^^)
하지만 어쩌면 저와 비슷한 고민을 하셨던 분이 계시다면 참고가 되었으면 하는 마음에 글을 작성합니다.

고민의 시작.

자. 우분투를 설치했습니다. 기뻐서 이것저것 살펴보는 과정에서 패널에 이것저것 추가할 수 있는 것을 알았습니다.

그 중에 보니 cpu 클럭 스케일링 감시… 라는 것이 있네요. 그래서 이것도 한번 추가해 봤습니다.

엇. 그랬더니 cpu 모양 아이콘과 옆에 클럭 수가 표시되는데… 음? 내 컴퓨터 클럭은 2.83GHz 인데 2GHz에 맞춰져 있네?

그럼 현재 2GHz에 맞춰져 있으니 그만큼만 사용할 수 있다는 것인가?

그래서 클릭해 봤더니 2.83GHz와 2GHz의 두가지 선택지가 보입니다. (이것은 사용자의 컴퓨터 cpu에 따라 다를 수 있습니다.)

아. 그럼 나는 컴퓨터의 성능을 모두 끌어내어 쓰고 싶으니 2.83GHz에 맞춰 쓰자. 했습니다.

그런데 여기서 문제가 생겼습니다. 클럭 수를 바꾸는 것은 문제가 안되는데,

컴퓨터를 켰다가 끄면 다시 2GHz로 설정이 돌아가 있는 것입니다.

응? 어떻게 하면 2.83GHz를 기본 설정으로 할 수 있는 거지?

아니 그 전에 cpu 클럭 스케일링이란 기능은 왜 있는 걸까?

조사 시작.

일단 모르는게 있으면 우분투 포럼부터 살펴봅니다.

아. 대강의 글들을 읽어보니 cpu 클럭 스케일링은 우분투가 판올림 하는 도중 들어온 기능으로

이것을 통해 cpu 클럭을 조절하여 배터리를 아끼거나 혹은 노트북 열을 낮출 수 있구나. 라고 대강 이해했습니다.

그런데 이전 버전의 우분투에서는 gconf-editor에서 관련 항목 조절 부분이 있다고 하는데

10.04에서는 찾을 수가 없었습니다. 음… 뭔가 판올림 하면서 설정 부분이 바뀐건가?

그럴 수도 있겠거니 하면서 조금 더 조사를 해 보았습니다.

포럼에서 맘에 드는 답을 찾지 못했으니 이번에는 구글신님 입니다.

결국 원하는 답을 찾았습니다. 바로 cpufrequtils 입니다.

cpufrequtils에 관하여.

cpufrequtils은 크게 주로 두개의 프로그램으로 이루어져 있습니다.

[quote:3nd2ggkp]/usr/bin/cpufreq-info

/usr/bin/cpufreq-set
[/quote:3nd2ggkp]

이 두가지가 그것인데요, 위의 cpufreq-info 명령어의 경우, 터미널에 들어가서 이 명령어를 치면

현재 본인의 cpu 관련 정보를 주르륵… 하면서 보여줍니다. 이른바 인포 명령입니다.

이제 이것을 확인하고 세팅하는 명령어가 cpufreq-set 입니다. 대강의 사용법은 다음과 같습니다.

(더 자세한 것은 man cpufreq-set 으로 검색해 보세요. ^^)

[quote:3nd2ggkp]-d minimum frequency,

-u maximum frequency,

-f specific frequency (userspace governor must be set first) and

-g governor on a

-c specific CPU.
[/quote:3nd2ggkp]

-d 옵션은 cpu 클럭이 최저로 내려갈 수 있는 한계를 설정하는 값이고

-u 옵션은 cpu 클럭이 최고로 올라갈 수 있는 한계를 성정하는 값입니다.

그러므로 예를 들어 다음과 같은 명령을 내린다면

[quote:3nd2ggkp]sudo cpufreq-set -u 1.6Ghz[/quote:3nd2ggkp]

이것은 cpu가 최고로 올라갈 수 있는 클럭을 1.6 Ghz로 한계지은 것입니다.

즉 이 컴퓨터의 cpu는 아무리 애를 써도 1.6 Ghz 이상 올라가지 않는다는 것이죠.

문제 해결

자 이제 그래서 저는 이 명령어를 통해 제게 닥친 고민을 해결할 수 있었습니다.

우선 cpufrequtils을 설치해야겠죠? 터미널에서 다음과 같이 명령하여 설치할 수 있습니다.

[quote:3nd2ggkp]sudo apt-get install cpufrequtils[/quote:3nd2ggkp]

설치가 되었다면 이제 클럭을 조절해 봅시다.

저는 컴퓨터가 항상 2.83Ghz로 작동하길 원합니다. 그래서 다음과 같은 명령을 주었습니다.

[quote:3nd2ggkp]sudo cpufreq-set -d 2.83Ghz[/quote:3nd2ggkp]

이 명령어는 cpu의 클럭이 내려갈 수 있는 최저치를 2.83Ghz에 고정시켜 버린 것이지요.

결국 결론적으로 cpu 클럭은 항상 최고치인 2.83Ghz에 고정됩니다.

그런데 제가 사용하는 cpu는 쿼드 코어입니다;;

그러므로 각각의 설정을 따로 해줘야 합니다. 이는 -c 옵션으로 cpu를 지정하면서 해결할 수 있습니다.

[quote:3nd2ggkp]sudo cpufreq-set -c 0 -d 2.83Ghz

sudo cpufreq-set -c 1 -d 2.83Ghz

sudo cpufreq-set -c 2 -d 2.83Ghz

sudo cpufreq-set -c 3 -d 2.83Ghz[/quote:3nd2ggkp]

이상으로 문제가 모두 해결되었습니다.

덧붙이는 말

각각의 cpu에는 그것이 가지는 hardware limits과 available frequency steps가 있는 듯 합니다.

이것은 cpufreq-info 명령을 통해 확인해 볼 수 있습니다.

아래는 제 cpu info 중 일부입니다.

[quote:3nd2ggkp]$ cpufreq-info

cpufrequtils 006: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 160 us.
[color=#FF0000:3nd2ggkp] hardware limits: 2.00 GHz - 2.83 GHz
available frequency steps: 2.83 GHz, 2.00 GHz[/color:3nd2ggkp]
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 2.83 GHz and 2.83 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 2.83 GHz.
cpufreq stats: 2.83 GHz:88.83%, 2.00 GHz:11.17% (30)
[/quote:3nd2ggkp]

hardware limits이 2.0~2.83 Ghz이며 available frequency steps이 2.0Ghz와 2.83Ghz 두가지 이므로

혹여 문제가 생길지 몰라서 저는 2.0Ghz와 2.83Ghz 만을 선택해서 적용해 보았습니다.

2.0과 2.83 사이의 값을 설정하는 것은 문제가 없을지 몰라도 하드웨어 한계값 밖에서 설정하는 것은

어떤 문제를 초래할지 몰라서 저는 건드려 보지 않았습니다.

클럭을 조절하시기 전에 우선 cpufreq-info 명령을 통해 자신의 cpu의 hardware limits을 확인하시기 바랍니다.

^^

덧붙입니다.

한번 이렇게 설정해주면 계속 그 설정이 유지될 줄 알았는데,

리부팅을 하니 다시 원래 설정으로 돌아가 버리는 것을 확인했습니다.

(끝까지 확인 안하고 글을 포스팅 해서 죄송합니다. ㅠㅠ)

어떻게 하면 항상 이 설정을 고정시킬 수 있을지 찾아봤지만 아직까지는 방법을 못찾았습니다.

그래서 프로그램이 시작될 때 마다 앞선 명령을 자동으로 실행되게 하는 방법을 찾아보았습니다만

sudo 명령이 있는 경우 '시스템 > 기본설정 > 시작 응용 프로그램’에 써 넣어도

암호 문제 때문인지 작동하지를 않습니다.

여기서 Draco님이 점심 식사 하러 가기 전, 트위터로 단비와 같은 가르침을 내려 주셨습니다.

[quote:beqsrdyw]echo 명령으로 패스워드를 전달하면 됩니다. echo ‘패스워드’ | sudo -S 필요명령. sudo 에 -S옵션 필수.[/quote:beqsrdyw]

아. 그렇구나.

하지만 저의 경우, 위와 같은 방식으로 시작 응용 프로그램에 등록해도 자동 실행이 되지 않았습니다. 음. 왜일까요.

그러다가 문득 떠오른 생각이, 아 시작 응용 프로그램에 터미널이 등록되어 있으니

터미널의 .bashrc 에 이 명령을 등록해 두면 되겠구나… 였습니다.

결국 이러한 우회 방식으로 세팅을 마쳤습니다.

처음에는 와. 이런걸 알았어. 다른 사람에게도 알려야지. 라는 마음에 글을 적었는데

점점 시간이 지날수록 드러나는 자신의 짧은 지식에 좌절하게 되는 오늘입니다. ㅠㅠ

어찌어찌 돌려서 부팅시 명령이 실행되게는 했습니다만 혹시 더 좋은 방법을 알고 계시는 분이 계신다면

단비와도 같은 가르침을 내려 주십시오. 꾸벅. ㅠㅠ

좋은 팁 감사합니다.

저는 발열과 시스템 불안정 때문에 좀 클럭을 낮추고 싶었었는데 참고하겠습니다.

[quote="anemosonfoto":egfor0in]
여기서 Draco님이 점심 식사 하러 가기 전, 트위터로 단비와 같은 가르침을 내려 주셨습니다.

Quote:
echo 명령으로 패스워드를 전달하면 됩니다. echo ‘패스워드’ | sudo -S 필요명령. sudo 에 -S옵션 필수.

아. 그렇구나.[/quote:egfor0in]

이런 방법도 있군요… :o

무언가를 일반 유저 권한으로 실행되도록 할 때 .bashrc에 넣으면 되듯,
root권한으로 시작되도록 하려면 /etc/bash.bashrc에 넣으시면 됩니다.

아니면, 시스템 데몬식으로 시작되길 원하신다면
/etc/init.d/ 에 적당한 이름으로 명령어들 파일안에 넣어 두신 후

sudo vim /etc/init.d/yourcommand
sudo chmod +x /etc/init.d/yourcommand

그리고 sudo update-rc.d yourcommand defaults
하시면 됩니다.

정기적으로 실행되길 원하신다면
sudo crontab -e를 쓰시면 되겠구요.

참고하시길…

설정을 하니 좀 더 빨라진 듯한 느낌은 기분 탓 일까요?
두 분 덕분에 팁을 몇가지 더 얻었네요. :P

CPU의 리밋 조정은 시스템이 부팅할 때 한번만 조정하면 되는 작업이므로

[code:26doozly]
/etc/rc.local
[/code:26doozly]
에 추가하시면 됩니다. 없으면 만드시면 됩니다.

참고로

/etc/bash.bashrc는 모든 사용자쉘(명령행이 /bin/bash일 경우)이 실행될 때마다 한번씩 실행되는 파일입니다.

.bashrc에 비밀번호까지 넣어서 하는 작업은 위험합니다. .bashrc파일을 누군가 보게되면 비밀번호가 노출되면서 내컴퓨터가 내컴퓨터가 아닌 사태가 벌어질 수 있습니다.

오호 이거 안그래도 찾아보고 있었는데++)
덕분에 AWN 삭제했습니다+
+) (이거 빼고 등록해놓은 게 없었다능-_-:wink: