- Author: Artem Bityutskiy dedekind1@gmail.com
- Introduction
- Disclaimer
- Privileges
- Requirements
- Installation
- User Guide
- Man pages
- Helpful resources
- Remote Usage Model
- SUT emulation
- FAQ
pepc, short for "Power, Energy, and Performance Configurator", is a command-line tool designed for
reading and changing power management features. For example, pepc can be used to modify CPU
or uncore frequency limits for all or a subset of CPUs, cores, modules, dies, or packages in the
system.
pepc consolidates power management configuration in one tool with a consistent and convenient
command-line interface instead of using various tools, such as cpupower, rdmsr,
cat /sys/..., etc.
This is not an official Intel product. It is an open-source tool developed by Intel engineers to facilitate power and performance configuration in Linux in lab environments. Please use it at your own risk.
Some pepc read operations may be done without superuser privileges, some require superuser
privileges (root). This depends on the specific operation and the underlying mechanism. For example,
reading CPU frequency limits from sysfs does not need root, therefore pepc pstates info --min-freq
can be run as a normal user. On the other hand, reading an MSR (Model Specific Register) needs
superuser privileges, so something like pepc cstates info --pkg-cstate-limit needs to be run as
root.
pepcrequires Python 3.9 or newer.- Many options need access to MSRs (Model Specific Registers), requiring the
msrkernel driver. Ensure themsrkernel driver is available, as some Linux distributions may disable it by default.
Please refer to the Installation Guide document.
Please refer to the User Guide document.
Here are the manual pages for all pepc features. They are also installed along with pepc and can be
accessed via the man command (e.g., man pepc-cstates).
- CPU C-states: man page
- CPU P-states: man page
- Uncore properties: man page
- PM QoS: man page
- ASPM: man page
- CPU onlining and offlining: man page
- CPU topology: man page
- TPMI: man page
Some features are hardware-agnostic, while others depend on specific hardware capabilities.
- Intel CPU Base Frequency Explained - explains the concept of CPU base frequency and many CPU performance scaling topics.
- Intel C-state namespaces - explains C-state naming conventions.
- Xeon C6P and C6SP Idle States - explains the C6P and C6SP idle states on Intel Xeon platforms.
- Uncore ELC and Frequency Scaling - explains the uncore ELC mechanism.
- MSR scope - explains the concept of MSR scope (per-core, per-module, per-package) and related pitfalls.
The following articles are not directly related to pepc, but may be helpful to understand some of
the features pepc manages.
- Measured CPU Frequency and C-states - explains why measured CPU frequency may be lower than expected when C1E or deeper C-states are enabled.
- TSC, APERF, and MPERF Counters - explains the TSC, APERF, and MPERF counters and their interaction.
Some pepc features (e.g., --pkg-cstate-limit) are implemented only for certain Intel platforms.
This means that we verified the feature on a limited number of platforms, not that it is
unsupported by other platforms. To be on the safe side, we refuse to change the underlying MSR
registers on platforms we did not verify.
If pepc fails with a message like "this feature is not supported on this platform" for you, feel
free to contact the authors with a request. Often this can be resolved by simply adding a CPU ID to the
list of supported platforms, and you may be able to do this yourself and send a pull request.