리눅스데브코스 [9주차 - 4(2)]<ARM 프로세서 코어와 리눅스 커널(3)>

심우열·2023년 6월 1일
0

1. CPU 전력 관리

1. 전력 관리의 전제 조건

  • CPU의 최고 성능은 peak performance에 맞추어져 있음
  • 최고 성능이 필요한 경우는 매우 짧은 시간
    -> 따라서 CPU 최고 성능은 평균 workload throughput에 비해 훨씬 높음

2. DVFS(Dynamic Voltage-Frequency Scaling)

  • CPU의 동작 전압을 Frequency에 따라 변동시킴
  • 에너지가 f^2에 비례하므로, frequency를 변경하여 에너지 절감

3. Power

  • Power = Dynamic Power + Static Power
  • Dynamic Power = ActiveGateRatio Capacitance Voltage^2 * Frequency
  • Static Power = Voltage * LeakageCurrent
    -> V = voltage, P = power, E = energy

2. 리눅스의 CPU 파워 관리

  • DVFS: CPUFreq(Performance state)
  • DPM: CPUIdle(Idle state)
  • CPU Scheduler

1. CPU Idle(Hotplug)

  • Rebooting 없이 동적으로 CPU(or core)를 enable/disable 할 수 있는 기능
  • 사용중인 CPU의 경우 불가능
  • cpu0은 offline 불가능

2. CPU Freq

  • CPU의 clock speed를 정해진 rule에 따라 on-the-fly로 조절 할 수 있는 Linux subsystem
  • Governor
    -> CPU의 Frequency를 조정하는 Policy
  • ARM CPU의 두가지 case
    -> 모든 코어에 같은 governor 적용
    -> 코어마다 다른 governor 적용

1. CPU Freq Governors 의 종류

1. Performance

  • 가장 높은 Frequency 로 고정

2. Powersave

  • 가장 낮은 frequency 로 고정

3. Userspace

  • 사용자가 frequency 고정

4. Ondemand

  • 현재 시스템의 부하에 따라 frequenct 조정
  • 부하가 높으면 max, 낮으면 min으로 설정

5. Conservative

  • Ondemand와 유사하나 점진적으로 상향/하향

6. Schedutil

  • 커널의 스케줄러와 협력하여 frequency 조정

2. Schedutil

1. Ondemand, Conservative의 문제점

  • 스케줄링과 관계없이 커널 타이머로 CPU utilization을 측정, frequency를 변경
    -> 작업의 성격과 관계 없이 시스템 성능을 변경

2. Schedutil의 차이점

  • 스케줄러가 frequency 변경 시점을 결정
  • Utilization이 아닌 평균 부하(load average)로 다음 frequency 결정
profile
Dev Ops, "Git, Linux, Docker, Kubernetes, ansible, " .

0개의 댓글