2008년 12월 25일 목요일

데비안 절전

리눅스에서 CPU 절전

  • CPU 속도를 조절하여 절전을 합니다.
    이러한 절전은 governor <-> CPU Frequency Driver를 거쳐 CPU절전을 합니다.

  • 즉, CPU의 성능(최대속도, 최소속도등)을 CPU Frequency Driver가 인식하고 governor에게 알려주며, 이 governor가 다시 사용자에게 알려주어 CPU상태를 알 수 있습니다.
    반대로 사용자가 CPU 속도를 최대로 할 것인지, 또는 최소로하여 절전을 할지를 governor에게 정해주면, 이 governor가 다시 CPU Frequency Driver에 전달하여 CPU 속도를 조절하게 됩니다.

  • Debian Lenny에서 부터는 cpufrequtils를 설치하여 CPU Frequency Driver와 governor를 설정합니다.

    데스크탑 환경을 선택하고 설치하면 acpi와 acpid가 설치되며, 또한 cpufrequtils가 설치되면서 CPU Frequency Driver와 kernel governor가 맞게 설정됩니다.
    그러나 초기 설치시에 데스크탑 환경을 설택하지 않고 표준 시스템만 설치하면 acpi와 acpid은 설치되나, cpufrequtils는 설치되지 않습니다. CPU 절전을 하려면 cpufrequtils을 설치합니다.

    # apt-get install cpufrequtils
    설치된 후 이제 다시 부팅하면 시스템에 알맞은 CPU Frequency Driver와 governor가 실행됩니다.
cpufrequtils의 대해서...
  • cpufrequtils를 설치하면 /etc/init.d/loadcpufreq가 설치됩니다.
    loadcpufreq는 부팅할 때 실행되는 script로 시스템에 알맞은 cpu driver를 메모리에 올려줍니다.

    커널에서 지원하는 CPU Frequency Driver를 알아보려면,
    # modinfo /lib/modules/$(uname -r)/kernel/arch/*/kernel/cpu/cpufreq/* | grep "^[fd]"

    사용자가 직접 CPU Frequency Driver를 메모리에 올리려면 이전의 방법 (# modprobe -v powernow-k8) 대신에 /etc/default/loadcpufreq에 저장하면 됩니다.

  • 또한 cpufrequtils를 설치하면 /etc/init.d/cpufrequtils가 설치되어, 부팅할 때 알맞은 governor를 실행시켜 줍니다.

    사용가능한 governer를 보려면
    $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

    커널에서 사용할 수 있는 커널 governor를 보려면
    $ ls /lib/modules/$(uname -r)/kernel/drivers/cpufreq/
    다음과 같이 보입니다.
    cpufreq_conservative.ko cpufreq_powersave.ko cpufreq_userspace.ko
    cpufreq_ondemand.ko cpufreq_stats.ko freq_table.ko

    각각의 커널 governor는 다음과 같이 작동합니다.
    performance (cpufreq_performance) CPU 클럭을 최고 주파수 상태로 유지합니다.
    powersave (cpufreq_powersave) CPU 클럭을 최저 주파수 상태로 유지합니다.
    ondemand (cpufreq_ondemand) 최저 주파수 상태로 있다가 필요할 때에 곧바로 최고 주파수로 바뀝니다.
    conservative (cpufreq_conservative) ondemand와 비슷하나 필요할 때에 최고 주파수로 점차 올라갑니다. 노트북에 알맞습니다.
    userspace (cpufreq_userspace) 사용자가 CPU 클럭 주파수 변경합니다.

    사용자가 부팅시에 특정 governor를 실행되도록 하려면/etc/default/cpufrequtils에 기록하면 됩니다.

    커널 governor말고 사용자 governor(cpufreqd, cpudyn, powersaved, powernowd ...)는 특별한 경우가 아니고는 필요하지 않습니다.

    또한 /etc/default/cpufrequtils에서 CPU의 frequency의 한도를 직접 정할 수 도 있습니다.
    참고로 사용하는 CPU의 frequency의 한도를 보려면
    $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
  • 추가로 cpufrequtils를 설치하면 /usr/bin/cpufreq-info와 /usr/bin/cpufreq-set가 설치되어 cpu frequency 정보를 알아보거나 직접 정할 수 있습니다.
모니터링
  • CPU frequency를 보려면
    $ cpufreq-info
  • 또는 Gnome에서 패널에 애플릿(CPU 클럭 스케일 정보)을 추가합니다.
모니터 절전
  • apt-get install xscreensaver

댓글 없음: