cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

cppc_sysfs.rst (3008B)


      1.. SPDX-License-Identifier: GPL-2.0
      2
      3==================================================
      4Collaborative Processor Performance Control (CPPC)
      5==================================================
      6
      7.. _cppc_sysfs:
      8
      9CPPC
     10====
     11
     12CPPC defined in the ACPI spec describes a mechanism for the OS to manage the
     13performance of a logical processor on a contiguous and abstract performance
     14scale. CPPC exposes a set of registers to describe abstract performance scale,
     15to request performance levels and to measure per-cpu delivered performance.
     16
     17For more details on CPPC please refer to the ACPI specification at:
     18
     19http://uefi.org/specifications
     20
     21Some of the CPPC registers are exposed via sysfs under::
     22
     23  /sys/devices/system/cpu/cpuX/acpi_cppc/
     24
     25for 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
     62Computing Average Delivered Performance
     63=======================================
     64
     65Below describes the steps to compute the average performance delivered by
     66taking 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 = (refernce_perf x delivered_counter_delta) / reference_counter_delta