본문 바로가기

개발

[우분투] 별도 설치없이 CPU 클럭(frequency) 조절하기 - cpupower

오늘은 홈서버에 우분투를 깔고 세팅하는 과정에서 얻은 사소한 팁을 공유해보고자 합니다.

 

바로 우분투 환경에서 CPU 클럭(주파수)를 조절하는 방법입니다.

 

윈도우에서는 제어판의 전원 옵션을 통해 쉽게 CPU 클럭을 조절할수 있고,
만약 추가적으로 세부적인 세팅을 원한다면 별도의 툴(RyzenController, UXTU(Universal x86 Tuning Utility))을 설치해사용하기도 합니다.

 

우분투에서는 대표적으로 cpufrequtils, auto-cpufreq, tlp 등의 별도의 외부 프로그램을 설치해서 사용하곤 합니다.

하지만, 이러한 추가적인 설치 과정이 번거롭기도하고 그냥 정말로 간단하게 주파수 조절만하고싶다! 라는 생각이 들었습니다.

그래서 이번 글에서는 이러한 외부 프로그램 설치 없이 우분투 기본 환경에서 CPU클럭을 조절하는 방법을 알아보도록 하겠습니다.

 

 

1. cpupower이란?

cpupower리눅스 전력 관리 도구 중 하나로 CPU 전력 관리와 성능 상태를 확인 및 제어할 수 있는 명령줄 도구입니다.

주로 CPU주파수 확인, 모니터링, 제한, 정책 설정 등의 작업에 사용됩니다.

 

linux kernel source tree에 포함되어 tools/power/cpupower 경로에서 관리되고 있는 공식 도구 중 하나입니다.

아래 링크에서 실제 소스코드를 확인하실 수 있습니다.

 

https://github.com/torvalds/linux/tree/master/tools/power/cpupower

 

linux/tools/power/cpupower at master · torvalds/linux

Linux kernel source tree. Contribute to torvalds/linux development by creating an account on GitHub.

github.com

 

Ubuntu에서는 이러한 커널 내의 tools들을 linux-tools-common, linux-tools-generic, linux-tools-리눅스커널버전-generic로 나누어 관리합니다.

 

조금만 더 자세히 설명하자면, linux-tools-common은 공통진입점, wrapper 역할의 파일과 man page등을 제공하며,

linux-tools-generic은 위의 linux-tools-common에 있는 도구를 설치할 때, 현재 커널에 맞는 linux-tools-리눅스커널버전-generic 패키지를 가져오는 등 의존성을 관리하는 역할을 하며,

이러한 의존성을 바탕으로 linux-tools-리눅스커널버전-generic이란 특정한 커널 버전에 맞는 도구를 가져옵니다.

즉 이곳에 실제 도구의 실행파일이 들어있다고 보면 됩니다.
(예를들면, /usr/lib/linux-tools/6.8.0-31-generic/cpupower 경로에 실제 cpupower 실행파일이 위치합니다.)

2. cpupower 설치법

분명 설치 안해도 사용이 된다고 했는데 왜 설치법이 나오냐고 당황하신 분이 있으시겠지만,
혹여나 어떠한 문제로 우분투에서 linux-tools가 제대로 설치가 되지 않은 경우 설치가 필요할 수 있어 남깁니다.

 

아래 명령은 패키지 저장소의 최신 정보를 가져와 갱신한 뒤, linux-tools-common, linux-tools-generic, linux-tools-커널버전-generic 설치하는 명령어입니다.

sudo apt update 
sudo apt install linux-tools-common linux-tools-generic linux-tools-$(uname -r)

3. cpupower 명령어

3-a. cpupower help <command> : 해당 명령어 사용법

cpupower help <command> : 해당 명령어에서 어떤 옵션들이 있는지, 어떻게 사용하는지 기본적으로 확인이 가능합니다.

cpupower help <command>

//예시
cpupower help monitor

3-b. cpupower monitor : CPU 클럭(주파수) 정보 등 CPU 통계 확인 

현재 CPU의 클럭(주파수) 등을 포함한 여러 정보를 출력해주는 명령입니다.

짧막하게 설명하자면 Mperf의 경우, C0 | Cx | Freq 이 3가지 열로 나뉩니다.

C0은 CPU의 active 비율, Cx는 CPU가 idle인 상태 비율을 나타냅니다.

아래 이미지에서 CPU 0은 4.37만큼 일하고 95.63의 비율만큼 쉬었음을 확인가능하며 이때 평균 클럭은 2233MHz(=2.2GHz)라고 볼 수 있습니다.

 

다음으로 RAPL의 경우,

Running Average Power Limit의 약자로, 특정 CPU의 전력 사용량을 보는 통계입니다.

packCPU전체 단위의 전력을 나타내며, core은 실제 각 CPU 코어들이 소비하는 전력을 의미합니다.

 

마지막으로 Idle_Stats의 경우,

Idle 상태의 세부통계를 보여줍니다.해당 CPU가 Idle 상태였을 때, 얼마나 깊은 상태에 있었는지 나타냅니다.

C1,C2,C3 으로 숫자가 높아질수록 더 깊은 절전 상태라고 볼 수 있습니다.

POLL은 일반적인 절전상태라기보단 CPU가 잠깐 대기하는 짧은 시간을 의미합니다.

 

 

sudo cpupower monitor 명령 실행 결과
sudo cpupower monitor 명령 실행 결과

3-c. cpupower frequency-info : 현재 CPU에서 지원되는 클럭 및 정보 제공 

현재 CPU에서 지원되는 클럭(주파수)의 범위, 현재 설정된 클럭 범위, CPU governor 설정, 그리고 각종 정보를 보여주는 명령입니다.

sudo cpupower frequency-info

 

sudo cpupower frequency-info 명령 실행 결과
sudo cpupower frequency-info 명령 실행 결과

3-d. cpupower frequency-set : CPU 클럭(주파수) 정책 및 클럭 설정

CPU governor을 performance/powersave로 변경하는 명령입니다.
performance는 성능 우선 정책이며, CPU가 높은 주파수로 동작하도록 유도합니다.
powersave는 절전 우선 정책이며, CPU가 낮은 주파수로 동작하도록 유도합니다.


-g 옵션은 governor을 지정할 때 사용합니다.

sudo cpupower frequency-set -g performance
sudo cpupower frequency-set -g powersave

 

 

또한, -d로 최소클럭, -u 옵션으로 최대 클럭을 지정가능합니다

sudo cpupower frequency-set -d 1.2GHz //최소 클럭을 1.2로 지정
sudo cpupower frequency-set -u 3.0GHz //최대 클럭을 3.0으로 지정

 

 

오늘은 이렇게 우분투에서 별도 설치 없이 기본제공되는 전력관리 도구인 cpupower에 대해 알아보았습니다.

cpupower에는 위에서 알려드린 명령어 말고도 다른 명령어와 각 명령어마다 많은 옵션이 있습니다.

 

생각보다 내용이 많아 주로 사용하는 것만 담다보니 일부는 담지 못했습니다.

혹여나 더 알고싶으시다면 참고란과 3-a의 help명령을 적극 활용해주시면 감사하겠습니다.

 

마지막으로 추가적으로 궁금하신 사항이 있으시거나 잘못된 정보가 있다면 언제든지 자유롭게 댓글로 남겨주시면 감사하겠습니다!

확인하는대로 아는 선에서 성심성의껏 답변 드리도록 하겠습니다!

4. 참조

https://ubuntu.com/server/docs/explanation/performance/perf-tune-cpupower/

 

The cpupower tool

This page is about the cpupower tool, which can be handy to inspect and manage the CPU power settings. This is mostly controlled via CPU Power states which are important to be understood before tak...

ubuntu.com

 

https://wiki.archlinux.org/title/CPU_frequency_scaling

 

CPU frequency scaling - ArchWiki

CPU performance scaling enables the operating system to scale the CPU frequency up or down in order to save power or improve performance. Scaling can be done automatically in response to system load, adjust itself in response to ACPI events, or be manually

wiki.archlinux.org

 

https://github.com/torvalds/linux/tree/master/tools/power/cpupower

 

linux/tools/power/cpupower at master · torvalds/linux

Linux kernel source tree. Contribute to torvalds/linux development by creating an account on GitHub.

github.com