저전력 시스템 설정은 임베디드 시스템에서 매우 중요한 주제이다. Yocto 프로젝트에는 저전력 시스템을 효과적으로 설정하고 관리할 수 있는 다양한 도구와 기법이 포함되어 있다. 이 섹션에서는 저전력 시스템을 설정하는 방법에 대해 다루겠다.
전원 관리 기본 설정
저전력 시스템 설정의 첫 번째 단계는 전원 관리를 위한 기본 설정을 확인하고 조정하는 것이다. CONFIG_PM
은 전원 관리를 위한 커널 설정이다.
커널 구성
bitbake -c menuconfig virtual/kernel
메뉴 구성에서 다음 설정을 활성화해야한다.
- Power Management support (CONFIG_PM): 전원 관리 기능을 지원하도록 커널을 구성한다.
- CPU Frequency scaling (CONFIG_CPU_FREQ): 프로세서의 클럭 속도를 조절하여 전력 소비를 관리한다.
- Suspend to RAM / Standby (CONFIG_SUSPEND): 시스템을 대기 모드로 설정하여 전력을 절약한다.
- Hibernation (aka ‘suspend to disk’) (CONFIG_HIBERNATION): 시스템 상태를 디스크에 저장하고 전원 꺼짐 후 복원할 수 있다.
디바이스 트리 설정
전원 관리와 관련된 일부 설정은 디바이스 트리에서 처리해야 한다. 이를 위해 디바이스 트리 파일을 수정하여 필요한 전원 관리 속성을 추가한다.
예제 코드:
&cpu0 {
operating-points = <
/* kHz uV */
1000000 1100000
800000 1000000
>;
clock-latency = <300000>; /* unit: nanoseconds */
};
전력 효율적인 소프트웨어 구성
전력 효율성을 극대화하기 위해 소프트웨어 구성도 중요하다. 다음은 소프트웨어 측면에서 고려해야 할 사항들이다.
사용자 공간 전원 관리 도구
전원 관리 도구들은 런타임 동안 전력 소비를 제어하는 데 도움이 된다.
- powertop: 전력 소비 분석 및 튜닝 도구이다.
sh bitbake powertop
- cpufrequtils: CPU 프리퀀시 스케일링 제어 도구이다.
sh bitbake cpufrequtils
자동화된 전력 관리 스크립트
사용자 공간에서 자동화된 스크립트를 사용하여 전력 관리 작업을 자동화할 수 있다. 예를 들어, 특정 시간이 지나면 시스템을 대기 모드로 전환하는 스크립트를 작성할 수 있다.
예제 스크립트:
#!/bin/sh
sleep 300
echo mem > /sys/power/state
이 스크립트를 crontab을 통해 주기적으로 실행하도록 설정할 수 있다.
전력 관리 최적화 기법
저전력 시스템 설정을 위해 최적화할 수 있는 몇 가지 기법이 있다.
CPU 제어
cpu idle state를 적극 활용하여 전력 소비를 줄일 수 있다. 이를 위해 cpufreq
및 cpuidle
드라이버를 활용한다.
echo powersave > /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
디바이스 전원 관리
불필요한 디바이스를 비활성화하여 전력 소비를 줄일 수 있다.
echo 1 > /sys/class/net/eth0/device/power/wakeup
echo auto > /sys/class/net/eth0/device/power/control