Commit bff7a06e authored by JooHan Hong's avatar JooHan Hong

cpu 전력관리 추가

parent e619c297
Pipeline #5722 passed with stages
in 1 minute and 10 seconds
[![logo](https://www.hongsnet.net/images/logo.gif)](https://www.hongsnet.net)
# Overview
Intel CPU 기반의 전력관리 기술은 다음과 같이 두 가지가 존재 한다.
* **C-State** (C1E, Idle Status)
* **P-State** (SpeedStep, SpeedShift, Active Status)
## SpeedStep
CPU의 전력 소모에 따라 자동으로 Clock을 조절해주는 기술이며, **주요 통제권은 OS**가 가지고 있다.
## SpeedShift
Intel을 기준으로 `Skylake` 아키텍처 CPU 이후 부터 SpeedStep을 `Hareware 단에 적용한 기술` 이다. CPU Clock의 제어 속도가 SpeedStep 보다 최대 50% 이상의 빠른 변속을 보여주는 것으로 알려져 있다. [SpeedShift 성능 테스트 참고 URL](https://www.anandtech.com/show/9751/examining-intel-skylake-speed-shift-more-responsive-processors)
다음과 같이 OS에서 활성화(`HWP enabled`)를 확인할 수 있다.
```bash
# dmesg |grep pstate
[ 2.578708] intel_pstate: Intel P-state driver initializing
[ 2.579763] intel_pstate: HWP enabled
```
# 참고: intel_pstate 모듈 비활성
CPU 전략관리 모듈을 비활성화 할 경우 성능에 어떤 영향이 발생되는지를 검증
> 결과적으로 CPU 성능이 저하되기 때문에 기본 설정(활성화)이 권장
* [ STEP 1 ] GRUB 부트로더에 intel_pstate 모듈의 비활성(`intel_pstate=disable`) 설정을 진행한다.
```bash
# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto spectre_v2=retpoline rhgb quiet intel_pstate=disable"
GRUB_DISABLE_RECOVERY="true"
```
* [ STEP 2 ] intel_pstate=disable 설정을 커널 이미지에 적용하고, 리부팅을 진행
```bash
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1160.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-bf7b5f2da6be4f7fb70b35e636a5ccf1
Found initrd image: /boot/initramfs-0-rescue-bf7b5f2da6be4f7fb70b35e636a5ccf1.img
done
# sync; sync; init 6
```
* [ STEP 3 ] CPU Clock의 상태를 확인한다.
```bash
# grep -E '^model name|^cpu MHz' /proc/cpuinfo
model name : Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz
cpu MHz : 2100.000
model name : Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz
cpu MHz : 2100.000
model name : Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz
cpu MHz : 2100.000
model name : Intel(R) Xeon(R) Silver 4110 CPU @ 2.10GHz
cpu MHz : 2100.000
...중략
```
> 다음과 같이 Clock을 더 상승시킬 수 있는 상태(2.1 -> 2.4GHz)에서 CPU Clock이 고정되었기 때문에 성능이 저하된 것으로 판단 된다.
```bash
# cpupower frequency-info
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: Cannot determine or is not supported.
hardware limits: 800 MHz - 3.00 GHz
available cpufreq governors: performance powersave
current policy: frequency should be within 800 MHz and 3.00 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency: 2.40 GHz (asserted by call to hardware)
boost state support:
Supported: yes
Active: yes
```
또한 tuned 프로파일의 경우도 변동이 없는 것을 확인할 수 있다.
```bash
# tuned-adm active
Current active profile: throughput-performance
```
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment