운영체제 전력 관리와 Power-Aware Scheduling
Green Computing 관점에서 ACPI, DVFS, 전력 인지 스케줄링, 메모리·스토리지 전력 관리와 데이터센터 PUE를 정리한다.
2026-08-14 · 최초 발행 2026-01-19
전력은 운영체제가 조율하는 자원이다
데이터센터와 모바일 디바이스가 늘면서 컴퓨팅 시스템의 에너지 소비는 환경 문제이자 운영 비용 문제가 됐다. 운영체제는 하드웨어의 전력 상태와 애플리케이션의 실행 요구를 연결하며, 부하에 맞춰 전력 사용을 조정한다.
전력 효율은 같은 작업을 더 적은 에너지로 처리하는 데서 출발한다. Performance per Watt를 높이고, 유휴 컴포넌트의 소비 전력을 줄이며, 부하 변화에 맞춰 전력 상태를 바꾸는 방식이다. 발열을 낮춰 냉각 비용을 줄이는 일도 이 범위에 들어간다.
컴퓨팅 환경별로도 조건은 다르다.
- 데이터센터는 전 세계 전력 소비의 약 2%를 차지하며 연간 200TWh 이상을 사용한다.
- 수십억 대의 스마트폰과 태블릿에서는 배터리 수명이 사용자 경험을 좌우한다.
- 수백억 개의 IoT 센서와 임베디드 시스템은 배터리 또는 에너지 하베스팅에 의존한다.
- 엑사스케일 HPC 시스템의 전력 소비 목표는 20-30MW다.
CPU 상태 전환이 만드는 전력 여유
ACPI(Advanced Configuration and Power Interface)는 시스템과 프로세서의 전력 상태를 정의하는 표준이다. 전역 상태인 G-states에서는 G0(S0)가 작동 상태이며, G1(S1-S4)은 S1 스탠바이부터 S4 하이버네이션까지의 슬립 상태를 가리킨다. G2(S5)는 소프트 오프, G3는 기계적 오프 상태다.
프로세서의 C-states는 유휴 상태의 깊이를 나타낸다. C0는 실행 상태이고, C1은 캐시를 유지한 채 명령어 실행을 멈춘 Halt 상태다. C2는 클록을 멈추는 Stop-Clock 상태로 복구 시간이 더 길다. C3는 캐시를 플러시하는 Deep Sleep이며, C6는 코어 전원을 끄는 Deep Power Down이다. C7/C8은 패키지 수준의 저전력 상태에 해당한다.
성능 상태인 P-states는 주파수와 전압의 수준을 나타낸다. P0는 최대 성능과 최대 전력 상태이며, P1-Pn으로 갈수록 주파수와 전압이 낮아진다.
DVFS(Dynamic Voltage and Frequency Scaling)는 이 P-state 제어의 핵심 기법이다. 전력은 전압² × 주파수 × 용량으로 표현되므로, 전압과 주파수를 함께 낮춰 소비 전력을 줄인다. ondemand, conservative, performance, powersave 같은 스케일링 정책은 리눅스 CPUfreq 서브시스템에서 다룬다.
# CPUfreq 거버너 확인
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# 사용 가능한 주파수 확인
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
# 주파수 범위 설정
echo 1000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
echo 3000000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
Intel Speed Shift Technology는 HWP(Hardware P-states)를 통해 OS가 매번 개입하지 않아도 CPU가 P-state를 전환하게 한다. 마이크로초 단위의 빠른 응답과 성능·전력 절약 균형을 조절하는 에너지 성능 편향(EPB)이 여기에 포함된다.
Turbo Boost와 Precision Boost는 TDP 여유와 온도 제한, 특정 코어의 부하 조건 안에서 일시적으로 성능을 높인다. 유휴 코어의 전력을 활성 코어로 재분배하되, 패키지 전체 전력 한도 안에서 동작한다.
부하를 어디에 둘지 결정하는 스케줄러
전력 인지 스케줄링은 단순히 태스크를 공정하게 배분하는 일을 넘어선다. 낮은 부하에서는 태스크를 적은 수의 코어에 모아 나머지 코어를 슬립 상태로 보낼 수 있다. 반대로 발열 관리가 중요하면 부하를 여러 코어로 분산한다. 실제 정책은 부하 수준에 따라 집중과 분산을 동적으로 선택한다.
리눅스 Completely Fair Scheduler(CFS)에서는 Small Task Packing으로 작은 태스크를 특정 코어에 패킹할 수 있다. CPU Capacity Awareness는 big.LITTLE처럼 코어별 성능 용량을 고려하며, Energy Aware Scheduling(EAS)은 에너지 모델을 근거로 스케줄링 결정을 내린다.
실시간 작업에서는 마감 시간과 전력 관리가 함께 걸린다. DVFS와 EDF(Earliest Deadline First)를 결합하면 마감 시간을 지키는 범위에서 가능한 최저 주파수를 사용할 수 있다. Slack Reclamation은 예상보다 빨리 끝난 태스크의 여유 시간을 활용하고, Dynamic Priority Adjustment는 전력 상태 전환 비용까지 고려한다.
코어와 캐시를 필요한 만큼만 켠다
big.LITTLE 아키텍처는 고성능 코어와 저전력 코어를 함께 둔다. big 코어는 복잡한 작업과 높은 성능 요구를 처리하고, LITTLE 코어는 백그라운드 작업과 배터리 절약에 적합하다. Global Task Scheduling(GTS)은 전체 코어 풀에서 태스크를 스케줄링하며, CPU Migration은 부하에 따라 태스크를 big-LITTLE 사이에서 이동시킨다.
Per-Core Power Gating은 사용하지 않는 코어의 전원을 완전히 차단한다. Clock Gating은 클록 신호만 차단해 더 빠른 복구를 노린다. 어느 방식을 택할지는 전원 차단 깊이와 Wakeup Latency의 트레이드오프에 달려 있다.
캐시도 전력 관리 대상이다. L1/L2 캐시는 코어와 함께 전력 상태를 관리하고, L3/LLC는 공유 캐시 일부를 비활성화할 수 있다. Way Shutdown은 캐시 웨이 단위로 전원을 끈다.
메모리·스토리지·네트워크의 유휴 전력
DRAM에서는 Self-Refresh가 외부 클록 없이 자체 갱신을 수행해 대기 전력을 낮춘다. Partial Array Self-Refresh(PASR)는 사용하지 않는 메모리 영역의 갱신을 멈추며, Deep Power Down은 데이터 손실을 감수하고 전원을 차단한다.
메모리 Rank와 Bank도 제어 단위다. Rank Interleaving은 랭크 사이에 부하를 분산해 전력 피크를 줄이고, Bank Interleaving은 뱅크 활성화를 최소화한다. Page Policy에서는 Open-page와 Closed-page 사이에서 전력과 성능을 선택한다. Zswap은 스왑 전에 압축해 메모리 효율을 높이고, zRAM은 압축 블록 디바이스로 메모리 사용량을 줄인다.
HDD는 Spin Down으로 디스크 회전을 멈춰 수 W를 수백 mW 수준으로 낮출 수 있다. Head Parking은 헤드를 안전 영역으로 옮기며, Idle Timer는 일정 시간 비활성 상태 이후 자동 스핀다운을 수행한다.
NVMe SSD에서는 APST(Autonomous Power State Transition)가 자율적으로 전력 상태를 바꾼다. PCIe의 L1/L2 링크 전력 상태도 절전 대상이며, Host-Managed 방식에서는 호스트 OS가 전력 상태를 명시적으로 제어한다.
NIC에서는 Wake-on-LAN으로 슬립 상태의 시스템을 네트워크 패킷으로 깨울 수 있다. Energy Efficient Ethernet(EEE)은 802.3az에 따라 유휴 시 저전력 모드로 들어가며, Packet Coalescing은 인터럽트 횟수를 줄인다.
운영체제가 제공하는 전력 관리 경로
리눅스의 PM Core는 디바이스 전력 상태를 관리한다. Runtime PM은 사용하지 않는 디바이스를 자동으로 절전시키고, System Sleep은 시스템 전체의 서스펜드와 하이버네이션을 다룬다. PowerTOP은 Intel의 전력 소비 분석 도구다.
# PowerTOP으로 전력 소비 분석
sudo powertop
# TLP를 통한 자동 전력 최적화
sudo tlp-stat
Windows는 Balanced, Power Saver, High Performance와 사용자 정의 전원 계획을 제공한다. Balanced는 성능과 전력의 균형을, Power Saver는 최대 배터리 수명을, High Performance는 최대 성능을 목표로 한다.
macOS에서는 App Nap이 사용하지 않는 앱의 우선순위를 낮추고, Timer Coalescing이 타이머 이벤트를 통합해 웨이크업 횟수를 줄인다. Automatic Graphics Switching은 통합 GPU와 전용 GPU를 자동 전환하며, Power Nap은 슬립 중 백그라운드 업데이트를 수행한다.
데이터센터에서 보는 전력 효율
서버 환경에서는 Dynamic Power Capping으로 실시간 전력 사용량을 제한할 수 있다. Workload Consolidation은 VM을 통합해 유휴 서버를 줄이고, Power-Aware Load Balancing은 전력 효율이 높은 서버로 부하를 보낸다.
PUE(Power Usage Effectiveness)는 데이터센터의 에너지 효율을 보는 지표다.
PUE = 전체 시설 전력 / IT 장비 전력
이상적 PUE는 모든 전력이 IT 장비에 쓰이는 1.0이다. 일반적 PUE는 1.5-2.0이며, 냉각 효율을 개선한 최신 데이터센터는 1.1-1.3 수준이다.
냉각 측면에서는 외부 공기를 활용하는 Free Cooling, 공기 흐름을 정리하는 Hot Aisle / Cold Aisle, 액체 냉각을 사용하는 Liquid Cooling이 있다. 구글의 DeepMind 기반 냉각은 냉각 에너지를 40% 절감했다.
측정 없이 전력 최적화는 판단하기 어렵다
하드웨어 수준에서는 Intel RAPL(Running Average Power Limit)로 MSR을 통해 에너지 소비를 조회할 수 있다. NVIDIA SMI는 GPU 전력을 모니터링하며, 외부 전력계는 더 정밀한 측정에 사용된다.
# RAPL을 통한 CPU 에너지 소비 확인
cat /sys/class/powercap/intel-rapl/intel-rapl:0/energy_uj
# nvidia-smi로 GPU 전력 모니터링
nvidia-smi --query-gpu=power.draw --format=csv -l 1
애플리케이션 수준에서는 perf가 RAPL 이벤트를 수집하고, PowerAPI는 소프트웨어 전력 소비를 추정한다. Intel VTune은 CPU 에너지 핫스팟 분석에 사용된다.
전력 최적화는 DVFS, big.LITTLE, Runtime PM 같은 기능을 개별적으로 켜는 것으로 끝나지 않는다. CPU와 주변 컴포넌트의 상태 전환, 스케줄링 정책, 실제 전력 측정을 함께 놓고 성능과 에너지 소비의 균형점을 찾아야 한다.