Linux용 CPU 관리 유틸리티 Watt
요약
Watt는 Linux 시스템 전반에 걸쳐 CPU 주파수 및 전력 관리를 최적화하는 저오버헤드 유틸리티입니다. 이 도구는 Rust로 작성되었으며, 강력한 TOML 기반의 DSL을 통해 복잡하고 정교한 전력 관리 규칙을 설정할 수 있습니다. 데몬 모드로 실행되어 시스템 성능과 배터리 수명을 동시에 향상시키는 것이 목표입니다.
핵심 포인트
- Rust 기반으로 낮은 오버헤드와 높은 성능을 보장합니다.
- TOML 기반의 강력한 DSL로 복잡한 전력 관리 규칙 설정이 가능합니다.
- CPU, 장치별(GPU, USB 등) 전원 정책을 통합적으로 제어합니다.
- 데몬 모드로 백그라운드에서 실행되어 시스템 최적화를 수행합니다.
Watt란 무엇인가?
Watt는 Linux 시스템을 위한 현대적이고 오버헤드가 낮은 CPU 주파수 및 전력 관리 유틸리티입니다. 이 도구는 사용자의 CPU, 거버너(governors), 주파수 및 절전 기능을 지능적으로 제어하여 전체적인 성능과 배터리 수명 최적화에 도움을 줍니다.
Watt는 auto-cpufreq와 유사한 도구에서 많은 영감을 받았지만, 효율성, 정확성, 미래 대비(future-proofing)를 강조하며 처음부터 다시 작성되어 더 부드러운 경험을 제공합니다. 실행 시간 비용은 기존 도구의 일부에 불과합니다. 몇 가지 기능은 생략되었으며, auto-cpufreq의 드롭인 대체재는 아니지만, 대부분의 일반적인 사용 사례는 이미 구현되었거나 구현될 예정입니다. 또한 Watt는 매우 강력한 설정 DSL(Domain Specific Language)을 갖추고 있어 시스템에서 가능한 최고의 성능을 얻기 위한 복잡한 전력 관리 규칙을 구성할 수 있도록 합니다.
Watt는 Rust로 작성되었습니다. 그 이유는 "JS나 Python 같은 언어는 시스템 레벨 데몬에 사용되어서는 안 된다" 1 오버헤드가 거의 없으며, 성능은 최대한 높게 유지되어야 하며, 이는 모든 시스템 데몬의 표준이 되어야 합니다.
기능 (Features)
Watt는 작고 가벼운 바이너리이지만 강력한 성능을 자랑합니다. 구체적으로 다음과 같은 기능을 갖추고 있습니다:
- 데몬 모드 (Daemon Mode): 적응형 폴링(adaptive polling)으로 백그라운드에서 실행되어 오버헤드를 최소화합니다.
- 규칙 기반 전원 정책 (Rule-Based Power Policy): 선언적 TOML 규칙을 실시간 시스템 상태와 비교 평가한 후, 가장 높은 우선순위가 일치하는 설정을 적용합니다.
- CPU 관리 (CPU Management): CPU 거버너(governor), 주파수(frequency), 터보 부스트(turbo boost), EPP/EPB, Intel P-State 제한 및 PM QoS 지연 시간 제어 기능을 모니터링하고 제어합니다.
- 장치 전원 제어 (Device Power Controls): 배터리, ACPI 플랫폼 프로필, 디스크, USB 장치, 오디오 코덱, GPU, Intel uncore 주파수 및 VM 메모리 정책에 대한 전력 관련 설정을 조정할 수 있습니다.
- 충돌 감지 (Conflict Detection): 다른 전원 관리 도구와의 충돌을 식별하고 경고합니다.
- 강력한 설정 DSL (Powerful Config DSL): TOML을 기반으로 하며, 조건(condition), 산술 연산(arithmetic), 가용성 확인(availability checks), 대상 선택(target selection) 및 대체 값(fallback values)에 대한 강력한 구성 도메인 특수 언어(DSL)를 제공합니다.
사용법 (Usage)
Watt를 사용하는 것은 매우 간단합니다. 다양한 시스템에서 테스트된 강력한 기본 설정이 포함되어 있어 별도의 조작 없이도 더 나은 성능을 즉시 제공합니다. 사용자가 Watt를 처음부터 구성하고 싶지 않다면, 단순히 Watt 데몬을 시작하고 그대로 두기만 하면 됩니다.
기본 명령어 (Basic Commands)
# 기본 설정으로 백그라운드에서 데몬으로 실행
sudo watt
...
구성 (Configuration)
Watt는 전원 관리 정책을 정의할 수 있는 규칙 기반 TOML 구성 시스템을 사용합니다. 각 [[rule]]은 선택적 조건(optional condition), 고유 우선순위(unique priority) 및 하나 이상의 액션 섹션(action sections)을 가집니다. Watt는 가장 높은 우선순위부터 일치하는 규칙을 평가하며, 더 높은 우선순위의 값이 먼저 모든 설정을 채우고, 낮은 우선순위의 규칙은 설정되지 않은 값만 채웁니다.
구성 위치 (Configuration Locations)
구성 소스는 다음 순서로 적용됩니다:
--config플래그를 통한 사용자 지정 경로.WATT_CONFIG환경 변수를 통한 사용자 지정 경로 (플래그가 지정되지 않은 경우).- 내장 기본 구성 (사용자 지정 경로가 지정되지 않은 경우).
사용자 지정 설정 경로가 제공되지 않으면, Watt는 내장 기본 구성을 사용합니다. 기본 구성은 watt 크레이트에서 찾을 수 있습니다.
<!--markdownlint-enable MD059 -->규칙은 서브시스템이 이름이 지정된 장치를 가진 경우 *.for 선택자를 사용하여 CPU 코어, 전원 공급 장치, Intel uncore 장치, 디스크, USB 장치 및 GPU를 대상으로 할 수 있습니다. vm, audio, disk.alpm, power.platform-profile과 같은 전역 섹션은 폴링 주기당 한 번 적용됩니다.
전체 규칙 구문, 표현식 참조 및 지원되는 모든 작업에 대해서는 Watt 구성하기를 참조하십시오.
예시
[[rule]]
if.all = [ "?discharging", { is-less-than = 0.3, value = "%power-supply-charge" } ]
name = "battery-preservation"
...
문제 해결
권한 문제
대부분의 CPU 관리 명령어는 root 권한을 필요로 합니다. 권한 오류가 발생하면 sudo를 사용하여 실행해 보십시오.
기능 호환성
모든 장치에서 모든 기능이 사용 가능한 것은 아닙니다:
- Turbo boost 제어는 Intel/AMD 부스트 기능을 지원하는 CPU가 필요합니다.
- EPP/EPB 설정은 CPU 드라이버 지원이 필요합니다.
- 플랫폼 프로파일은 하드웨어의 ACPI 플랫폼 프로파일 지원이 필요합니다.
- 디스크 APM 및 스핀다운 설정은
hdparm과 호환되는 드라이브가 필요합니다. - GPU 패널 전력 절약은 호환되는 AMDGPU 패널 sysfs 지원이 필요합니다.
일반적인 문제
- 설정이 적용되지 않음: 다른 전원 관리 도구와의 충돌 여부를 확인하십시오.
- CPU 주파수 변동: 열 스로틀링(thermal throttling) 때문일 수 있습니다.
- CPU 정보 누락: CPU에 대한 커널 모듈 지원을 확인하십시오.
문제를 보고할 때는 시스템 정보와 관련 로그를 포함해 주십시오.
기여하기
Watt에 대한 기여는 언제나 환영합니다! 버그 보고서, 기능 요청 또는 코드 기여 등 어떤 것이든 자유롭게 참여해 주세요.
[!NOTE]
auto-cpufreq의 기능을 재구현하려는 경우, 먼저 이슈를 열어주시고 구상하고 계신 바를 알려주시길 바랍니다. 특정 기능(예: 시스템 트레이)은 의도적으로 무시되거나 현재 코드베이스에 필요하지 않을 수 있습니다. 그러한 기능들은 저희와 먼저 논의해 주세요 :)
설정 (Setup)
시스템에 Cargo와 Rust가 설치되어 있어야 합니다. Rust 1.88 이상 버전이 필요합니다. direnv 사용자의 경우, .envrc 파일이 제공되며 사용을 권장합니다. 특히 Nix 사용자인 경우 더욱 그렇습니다. 또는 Nix를 직접 사용하여 재현 가능한 개발 환경을 구축할 수 있습니다.
# 필요한 의존성을 가진 dev shell에 진입합니다.
$ ext{nix develop}
Nix를 사용하지 않는 사용자는 패키지 관리자나 Rustup 같은 도구를 사용하여 적절한 Cargo 및 Rust 버전을 얻을 수 있습니다.
포맷팅 & 린트 (Formatting & Lints)
모든 코드가 올바르게 포맷되었는지 확인하기 위해 저장소 내에서 최소한 cargo fmt를 실행해 주세요 (TOML 파일을 수정했다면 taplo format도 실행). Nix 코드의 경우 Alejandra를 사용하세요.
Clippy 린트는 현재 필수는 아니지만, 커밋하기 전에 실행하여 가능한 코드상의 문제(code smell)를 초기에 포착하는 좋은 방법입니다.
라이선스 (License)
Watt는 편의상 그리고 저희 비용으로 Mozilla Public License v2.0 하에 제공됩니다. 자세한 내용은 라이선스 파일을 참고해 주세요.
Footnotes
-
asusctl의 작성자로부터 얻은 현명한 조언 ↩
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub ML Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기