- CPU의 최고 성능은 peak performance에 맞추어져 있음
- 최고 성능이 필요한 경우는 매우 짧은 시간
-> 따라서 CPU 최고 성능은 평균 workload throughput에 비해 훨씬 높음
- CPU의 동작 전압을 Frequency에 따라 변동시킴
- 에너지가 f^2에 비례하므로, frequency를 변경하여 에너지 절감
- Power = Dynamic Power + Static Power
- Dynamic Power = ActiveGateRatio Capacitance Voltage^2 * Frequency
- Static Power = Voltage * LeakageCurrent
-> V = voltage, P = power, E = energy
- DVFS: CPUFreq(Performance state)
- DPM: CPUIdle(Idle state)
- CPU Scheduler
- Rebooting 없이 동적으로 CPU(or core)를 enable/disable 할 수 있는 기능
- 사용중인 CPU의 경우 불가능
- cpu0은 offline 불가능
- CPU의 clock speed를 정해진 rule에 따라 on-the-fly로 조절 할 수 있는 Linux subsystem
- Governor
-> CPU의 Frequency를 조정하는 Policy- ARM CPU의 두가지 case
-> 모든 코어에 같은 governor 적용
-> 코어마다 다른 governor 적용
1. Performance
- 가장 높은 Frequency 로 고정
2. Powersave
- 가장 낮은 frequency 로 고정
3. Userspace
- 사용자가 frequency 고정
4. Ondemand
- 현재 시스템의 부하에 따라 frequenct 조정
- 부하가 높으면 max, 낮으면 min으로 설정
5. Conservative
- Ondemand와 유사하나 점진적으로 상향/하향
6. Schedutil
- 커널의 스케줄러와 협력하여 frequency 조정
- 스케줄링과 관계없이 커널 타이머로 CPU utilization을 측정, frequency를 변경
-> 작업의 성격과 관계 없이 시스템 성능을 변경
- 스케줄러가 frequency 변경 시점을 결정
- Utilization이 아닌 평균 부하(load average)로 다음 frequency 결정