2008년 06월 06일
CPU 전압을 낮춰서 CPU 온도를 낮추자 II... CPU Undervolt on Hardy
거의 한달만에 포스팅이다. 원래 한번 포스팅 했던 내용에 대해서는 큰 변화가 없으면, 다시 포스팅 하지 않는다는 게 나만의 포스팅 원칙이지만 원하시는 분이 계셔서 짧게 포스팅 한다. Gutsy에서 Hardy로 오면서 PHC 적용에 애를 먹었다. 물론 성공하신 분들이 계신듯 하지만, 몇번 해봤는데 잘 되지 않아서 그냥 커널의 speedstep-centriono.c를 수정하는 방법으로 전압을 조정하였다.
이전에 포스팅 했던 이 글 역시 PHC를 이용한 것이 아닌, speedstep-centriono.c를 수정함으로써 커널 상에서 전압을 고정시키는 방법이다. 주의할 것은 앞으로 진행할 방법은 자신의 CPU의 전압 조절에 대한 충분한 안정성 테스트가 없을 경우, 커널을 읽는 단계 이후로 진행 할 수 없는 문제가 발생할 수 있다. 나의 경우 이미 이 전압으로 노트북을 써온지 1년도 넘었기에 별 문제는 없었다.
① 우선 적절한 디렉토리에 커널 소스를 받는다. 나는 /usr/src에 소스를 받았다. 현재 최신 버전 커널은 2.6.24-18 이다. 앞으로 커널 소스를 /usr/src에 받았다는 가정하에 얘기하겠다.
② speedstep-centrino.c 수정을 통한 클럭/전압 조절한다.
커널 소스의 아래의 디렉토리에 들어가보면 speedstep-centrino.c 라는 파일이 존재하는데, 이 파일을 열게 되면..
아니면 MS Windows용 전압 조절 프로그램인 NHC와 관련해서 자료를 찾거나 해당 노트북 모임(예: nbinside.com) 같은 곳에 가면 적절한 전압을 찾을 수 있을 것이다.
내 CPU에 맞는 클럭/전압 정의는 226번째 줄부터 있는데, 기존에는 다음과 같이 되어 있었다.
③ 커널 컴파일 옵션이 정의된 .config 파일을 새로 받은 커널 소스 디렉토리에 복사한다.
④ CPU 클럭/전압에 관련된 모듈만 컴파일 해준다. /usr/src/linux-2.6.24 디렉토리에서 해야한다.
⑤ 컴파일 된 새로운 모듈을 기존의 커널의 모듈과 바꾸어준다. 문제가 생길 수 있으니 기존의 모듈은 적절한 곳에 복사해두는 것도 좋은 방법이다.
⑥ 여기까지 완료됐다면 재부팅을 해주면 새롭게 설정된 전압과 클럭이 적용되서 부팅이 된다.
내 cpu에만 그런지는 모르겠지만, linux 커널에서 설정된 전압 값이 MS Windows에 적용된 전압값보다 높았다. 때문에 이 undervolt 적용으로 인해 기존의 풀로드 시 90도 넘게까지 치솟았던 cpu의 온도가 60도 초반으로 안정되면서 cpu 팬의 rpm이 줄어서 소음까지 줄어드는 효과도 얻었다. 물론 이런 undervolt가 cpu에 전압이 충분히 공급되지 못해서 cpu의 성능까지 줄인다는 얘기가 있지만, 그 부분에서 체감적으로 느껴지지 않아서 그냥 적용해서 쓰고 있다.
이전에 포스팅 했던 이 글 역시 PHC를 이용한 것이 아닌, speedstep-centriono.c를 수정함으로써 커널 상에서 전압을 고정시키는 방법이다. 주의할 것은 앞으로 진행할 방법은 자신의 CPU의 전압 조절에 대한 충분한 안정성 테스트가 없을 경우, 커널을 읽는 단계 이후로 진행 할 수 없는 문제가 발생할 수 있다. 나의 경우 이미 이 전압으로 노트북을 써온지 1년도 넘었기에 별 문제는 없었다.
① 우선 적절한 디렉토리에 커널 소스를 받는다. 나는 /usr/src에 소스를 받았다. 현재 최신 버전 커널은 2.6.24-18 이다. 앞으로 커널 소스를 /usr/src에 받았다는 가정하에 얘기하겠다.
sudo apt-get source linux-image-2.6.24-18-generic
② speedstep-centrino.c 수정을 통한 클럭/전압 조절한다.
커널 소스의 아래의 디렉토리에 들어가보면 speedstep-centrino.c 라는 파일이 존재하는데, 이 파일을 열게 되면..
/usr/src/linux-2.6.24/arch/x86/kernel/cpu/cpufreq/speedstep-centrino.c90 번째 줄 부터 Intel의 노트북용(모바일) CPU 들에 관한 클럭과 전압이 정의 되어 있다. 이 부분부터 자신의 CPU에해당하는 CPU 부분을 찾아서 전압을 적절히 고쳐주면 된다. 각 CPU에 적용 가능한 최저 전압 정보는 여기를 보면 사용자들이 자신의 사용 전압을 적어놓은 부분이 있는데, 그곳의 수치를 참고해서 수정하면 된다.
아니면 MS Windows용 전압 조절 프로그램인 NHC와 관련해서 자료를 찾거나 해당 노트북 모임(예: nbinside.com) 같은 곳에 가면 적절한 전압을 찾을 수 있을 것이다.
내 CPU에 맞는 클럭/전압 정의는 226번째 줄부터 있는데, 기존에는 다음과 같이 되어 있었다.
/* Intel Pentium M processor 750 / 1.86 GHz (Sonoma) */798Mhz에서 0.988V, 1.064Ghz에서 1.084V.... 이런식이다. 이것을 아래와 같이 바꾸어 준다.
static struct cpufreq_frequency_table sonoma_1862[] =
{
OPEX( 798, 133, 988, 988, 988, 988),
OPEX(1064, 133, 1084, 1080, 1068, 1056),
OPEX(1330, 133, 1180, 1172, 1132, 1124),
OPEX(1596, 133, 1276, 1264, 1196, 1192),
OPEX(1862, 133, 1356, 1356, 1260, 1260),
{ .frequency = CPUFREQ_TABLE_END }
};
/* Intel Pentium M processor 750 / 1.86 GHz (Sonoma) */클럭은 1.197(1.2)Ghz, 1.463(1.46)Ghz, 1.729(1.73)Ghz가 추가되어서 8단계로 클럭이 변하게 되며, 전압도 기존보다 0.3V 가량 낮추었다. 다시 한번 말하지만 이는 충분히 검증된 전압을 적용해 주어야 한다. 가장 중요한 전압은 최하 클럭의 전압과 최고 클럭의 전압이다. 특히 최고 클럭의 전압에서 오랜 시간 풀 로드(Full Load)로 테스트 해 보아야 한다. 그렇지 않을 경우 컴파일 등과 같은 CPU를 많이 쓰는 작업을 할 경우, 어이없게 컴퓨터가 다운될 수도 있다.
static struct cpufreq_frequency_table sonoma_1862[] =
{
OPEX( 798, 133, 700, 988, 988, 988),
OPEX(1064, 133, 780, 1080, 1068, 1056),
OPEX(1197, 133, 828, 1172, 1132, 1124),
OPEX(1330, 133, 876, 1172, 1132, 1124),
OPEX(1463, 133, 924, 1264, 1196, 1192),
OPEX(1596, 133, 972, 1264, 1196, 1192),
OPEX(1729, 133, 1020, 1356, 1260, 1260),
OPEX(1862, 133, 1036, 1356, 1260, 1260),
{ .frequency = CPUFREQ_TABLE_END }
};
③ 커널 컴파일 옵션이 정의된 .config 파일을 새로 받은 커널 소스 디렉토리에 복사한다.
sudo cp /boot/config-2.6.24-18-generic /usr/src/linux-2.6.24/.config
④ CPU 클럭/전압에 관련된 모듈만 컴파일 해준다. /usr/src/linux-2.6.24 디렉토리에서 해야한다.
sudo make oldconfig
sudo make prepare
sudo make scripts
sudo make M=./arch/x86/kernel/cpu/cpufreq
⑤ 컴파일 된 새로운 모듈을 기존의 커널의 모듈과 바꾸어준다. 문제가 생길 수 있으니 기존의 모듈은 적절한 곳에 복사해두는 것도 좋은 방법이다.
sudo cp arch/x86/kernel/cpu/cpufreq/speedstep-centrino.ko /lib/modules/2.6.24-18-generic/kernel/arch/x86/kernel/cpu/cpufreq
⑥ 여기까지 완료됐다면 재부팅을 해주면 새롭게 설정된 전압과 클럭이 적용되서 부팅이 된다.
내 cpu에만 그런지는 모르겠지만, linux 커널에서 설정된 전압 값이 MS Windows에 적용된 전압값보다 높았다. 때문에 이 undervolt 적용으로 인해 기존의 풀로드 시 90도 넘게까지 치솟았던 cpu의 온도가 60도 초반으로 안정되면서 cpu 팬의 rpm이 줄어서 소음까지 줄어드는 효과도 얻었다. 물론 이런 undervolt가 cpu에 전압이 충분히 공급되지 못해서 cpu의 성능까지 줄인다는 얘기가 있지만, 그 부분에서 체감적으로 느껴지지 않아서 그냥 적용해서 쓰고 있다.
# by | 2008/06/06 22:17 | :: C space :: 컴퓨터 | 트랙백 | 핑백(1) | 덧글(10)













☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
... 사쿠라기님의 포스트를 보고 다시 undervolt 를 시도해볼까 하였다. 여름도 다가오고.. 배터리도 윈도때보다 확실히 빨리 닳고 있다는게 보일 정도라서.. 그런데 이전에도 없었지만 사 ... more
내껀 40도에서 열받으면 60도까지 봤는데;;
펜린이 좋아..
=3=333
GUI로 세팅해서 쓸 수 있게 써야 함.