← Documents Documentation/admin-guide/acpi/cppc_sysfs.rst GitHub 원문 ↗

Linux 6.18.37 · Administration / ACPI

Collaborative Processor Performance Control (CPPC)

ACPI CPPC의 추상 성능 척도, CPU별 sysfs register와 feedback counter를 이용한 평균 delivered performance 계산을 설명합니다.

Source pathDocumentation/admin-guide/acpi/cppc_sysfs.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

Abstract performance model

cppc_sysfs.rst:1-24

운영체제가 logical CPU 성능을 연속적인 추상 척도로 요청하고 측정합니다.

sysfs register set

cppc_sysfs.rst:25-60

성능 한계·frequency·feedback attribute의 의미와 용도를 구분합니다.

Delivered performance

cppc_sysfs.rst:61-78

T1/T2 counter delta와 reference_perf로 평균 전달 성능을 계산합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 .. SPDX-License-Identifier: GPL-2.0
2
3 ==================================================
4 Collaborative Processor Performance Control (CPPC)
5 ==================================================
6
7 .. _cppc_sysfs:
8
9 CPPC
10 ====
11
12 CPPC defined in the ACPI spec describes a mechanism for the OS to manage the
13 performance of a logical processor on a contiguous and abstract performance
14 scale. CPPC exposes a set of registers to describe abstract performance scale,
15 to request performance levels and to measure per-cpu delivered performance.
16
17 For more details on CPPC please refer to the ACPI specification at:
18
19 http://uefi.org/specifications
20
21 Some of the CPPC registers are exposed via sysfs under::
22
23 /sys/devices/system/cpu/cpuX/acpi_cppc/
24
25 for each cpu X::
26
27 $ ls -lR /sys/devices/system/cpu/cpu0/acpi_cppc/
28 /sys/devices/system/cpu/cpu0/acpi_cppc/:
29 total 0
30 -r--r--r-- 1 root root 65536 Mar 5 19:38 feedback_ctrs
31 -r--r--r-- 1 root root 65536 Mar 5 19:38 highest_perf
32 -r--r--r-- 1 root root 65536 Mar 5 19:38 lowest_freq
33 -r--r--r-- 1 root root 65536 Mar 5 19:38 lowest_nonlinear_perf
34 -r--r--r-- 1 root root 65536 Mar 5 19:38 lowest_perf
35 -r--r--r-- 1 root root 65536 Mar 5 19:38 nominal_freq
36 -r--r--r-- 1 root root 65536 Mar 5 19:38 nominal_perf
37 -r--r--r-- 1 root root 65536 Mar 5 19:38 reference_perf
38 -r--r--r-- 1 root root 65536 Mar 5 19:38 wraparound_time
39
40 * highest_perf : Highest performance of this processor (abstract scale).
41 * nominal_perf : Highest sustained performance of this processor
42 (abstract scale).
43 * lowest_nonlinear_perf : Lowest performance of this processor with nonlinear
44 power savings (abstract scale).
45 * lowest_perf : Lowest performance of this processor (abstract scale).
46
47 * lowest_freq : CPU frequency corresponding to lowest_perf (in MHz).
48 * nominal_freq : CPU frequency corresponding to nominal_perf (in MHz).
49 The above frequencies should only be used to report processor performance in
50 frequency instead of abstract scale. These values should not be used for any
51 functional decisions.
52
53 * feedback_ctrs : Includes both Reference and delivered performance counter.
54 Reference counter ticks up proportional to processor's reference performance.
55 Delivered counter ticks up proportional to processor's delivered performance.
56 * wraparound_time: Minimum time for the feedback counters to wraparound
57 (seconds).
58 * reference_perf : Performance level at which reference performance counter
59 accumulates (abstract scale).
60
61
62 Computing Average Delivered Performance
63 =======================================
64
65 Below describes the steps to compute the average performance delivered by
66 taking two different snapshots of feedback counters at time T1 and T2.
67
68 T1: Read feedback_ctrs as fbc_t1
69 Wait or run some workload
70
71 T2: Read feedback_ctrs as fbc_t2
72
73 ::
74
75 delivered_counter_delta = fbc_t2[del] - fbc_t1[del]
76 reference_counter_delta = fbc_t2[ref] - fbc_t1[ref]
77
78 delivered_perf = (reference_perf x delivered_counter_delta) / reference_counter_delta
79

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

CPPC의 추상 성능 모델

1-24

이 GPL-2.0 문서는 ACPI Collaborative Processor Performance Control(CPPC)을 설명합니다. ACPI 명세의 CPPC는 운영체제가 연속적인 추상 성능 척도로 logical processor 성능을 관리하는 mechanism입니다.

CPPC는 추상 성능 척도를 기술하고, 성능 level을 요청하며, CPU별 delivered performance를 측정하는 register 집합을 노출합니다. 자세한 규격은 `http://uefi.org/specifications`의 ACPI specification을 참조합니다.

일부 CPPC register는 CPU X마다 `/sys/devices/system/cpu/cpuX/acpi_cppc/` 아래 sysfs attribute로 노출됩니다.

  /sys/devices/system/cpu/cpuX/acpi_cppc/
CPPC control and feedback
ACPI abstract performance scaleOS requests a performance levelLogical CPU delivers workFeedback counters measure delivery

추상 성능 요청과 실제 전달 성능 측정의 관계입니다.

CPPC sysfs register

25-60

CPU 0의 `acpi_cppc` directory에는 다음과 같이 read-only attribute가 나타납니다.

  $ ls -lR  /sys/devices/system/cpu/cpu0/acpi_cppc/
  /sys/devices/system/cpu/cpu0/acpi_cppc/:
  total 0
  -r--r--r-- 1 root root 65536 Mar  5 19:38 feedback_ctrs
  -r--r--r-- 1 root root 65536 Mar  5 19:38 highest_perf
  -r--r--r-- 1 root root 65536 Mar  5 19:38 lowest_freq
  -r--r--r-- 1 root root 65536 Mar  5 19:38 lowest_nonlinear_perf
  -r--r--r-- 1 root root 65536 Mar  5 19:38 lowest_perf
  -r--r--r-- 1 root root 65536 Mar  5 19:38 nominal_freq
  -r--r--r-- 1 root root 65536 Mar  5 19:38 nominal_perf
  -r--r--r-- 1 root root 65536 Mar  5 19:38 reference_perf
  -r--r--r-- 1 root root 65536 Mar  5 19:38 wraparound_time
CPPC sysfs attributes
AttributeMeaning
highest_perfProcessor의 최고 성능, abstract scale
nominal_perfProcessor가 지속할 수 있는 최고 성능, abstract scale
lowest_nonlinear_perfNonlinear power saving을 적용할 수 있는 최저 성능, abstract scale
lowest_perfProcessor의 최저 성능, abstract scale
lowest_freq`lowest_perf`에 해당하는 CPU frequency, MHz
nominal_freq`nominal_perf`에 해당하는 CPU frequency, MHz
feedback_ctrsReference performance counter와 delivered performance counter
wraparound_timeFeedback counter가 wraparound하는 최소 시간, seconds
reference_perfReference counter가 누적되는 성능 level, abstract scale
undefinedundefined
undefinedundefined

추상 성능 한계, frequency 표현과 feedback counter를 구분합니다.

`feedback_ctrs`의 reference counter는 processor reference performance에 비례해 증가하고 delivered counter는 실제 delivered performance에 비례해 증가합니다.

평균 delivered performance 계산

61-78

T1과 T2에서 feedback counter snapshot을 두 번 읽어 평균 delivered performance를 계산합니다. T1에서 `feedback_ctrs`를 `fbc_t1`으로 읽은 뒤 기다리거나 workload를 실행하고, T2에서 `fbc_t2`를 읽습니다.

  T1: Read feedback_ctrs as fbc_t1
      Wait or run some workload

  T2: Read feedback_ctrs as fbc_t2

::

  delivered_counter_delta = fbc_t2[del] - fbc_t1[del]
  reference_counter_delta = fbc_t2[ref] - fbc_t1[ref]

  delivered_perf = (reference_perf x delivered_counter_delta) / reference_counter_delta

Delivered counter 증가량을 reference counter 증가량으로 나눈 비율에 `reference_perf`를 곱하면 두 snapshot 사이의 평균 delivered performance가 됩니다.

Average delivered performance
Read fbc_t1 at T1Wait or run workloadRead fbc_t2 at T2Compute delivered and reference deltasScale delta ratio by reference_perf

두 counter snapshot에서 평균 성능을 구하는 계산 순서입니다.