Kernel-4.18.0-80.el8_cppc_sysfs

Collaborative Processor Performance Control (CPPC)

CPPC defined in the ACPI spec describes a mechanism for the OS to manage the
performance of a logical processor on a contigious and abstract performance
scale. CPPC exposes a set of registers to describe abstract performance scale,
to request performance levels and to measure per-cpu delivered performance.

For more details on CPPC please refer to the ACPI specification at:

http://uefi.org/specifications

Some of the CPPC registers are exposed via sysfs under:

/sys/devices/system/cpu/cpuX/acpi_cppc/

for each cpu X


$ 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


  • highest_perf : Highest performance of this processor (abstract scale).

  • nominal_perf : Highest sustained performance of this processor (abstract scale).

  • lowest_nonlinear_perf : Lowest performance of this processor with nonlinear
    power savings (abstract scale).

  • lowest_perf : Lowest performance of this processor (abstract scale).

  • lowest_freq : CPU frequency corresponding to lowest_perf (in MHz).

  • nominal_freq : CPU frequency corresponding to nominal_perf (in MHz).
    The above frequencies should only be used to report processor performance in
    freqency instead of abstract scale. These values should not be used for any
    functional decisions.

  • feedback_ctrs : Includes both Reference and delivered performance counter.
    Reference counter ticks up proportional to processor’s reference performance.
    Delivered counter ticks up proportional to processor’s delivered performance.

  • wraparound_time: Minimum time for the feedback counters to wraparound (seconds).

  • reference_perf : Performance level at which reference performance counter
    accumulates (abstract scale).


    Computing Average Delivered Performance

Below describes the steps to compute the average performance delivered by taking
two different snapshots of feedback counters at time T1 and 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 = (refernce_perf x delivered_counter_delta) / reference_counter_delta