TopGit tracks intel/pcm on GitHub as part of the Developer Tools family. The project has 3.4k stars. Intel® Performance Counter Monitor (Intel® PCM)
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
PCM Tools | Building PCM | Downloading Pre-Compiled PCM | FAQ | API Documentation | Environment Variables | Compilation Options
Intel® Performance Counter Monitor (Intel® PCM) is an application programming interface (API) and a set of tools based on the API to monitor performance and energy metrics of Intel® Core™, Xeon®, Atom™ and Xeon Phi™ processors. PCM works on Linux, Windows, FreeBSD, DragonFlyBSD and ChromeOS operating systems.
Github repository statistics:
We welcome bug reports and enhancement requests, which can be submitted via the "Issues" section on GitHub. For those interested in contributing to the code, please refer to the guidelines outlined in the CONTRIBUTING.md file.
Current Build Status
Linux:
Windows:
FreeBSD:
Docker container:
PCM Tools
PCM provides a number of command-line utilities for real-time monitoring:
pcm : basic processor monitoring utility (instructions per cycle, core frequency (including Intel(r) Turbo Boost Technology), memory and Intel(r) Quick Path Interconnect bandwidth, local and remote memory bandwidth, cache misses, core and CPU package sleep C-state residency, core and CPU package thermal headroom, cache utilization, CPU and memory energy consumption)
pcm-sensor-server : pcm collector exposing metrics over http in JSON or Prometheus (exporter text based) format (how-to). Also available as a docker container. More info about Global PCM events is here.
pcm-memory : monitor memory bandwidth (per-channel and per-DRAM DIMM rank)
pcm-latency : monitor L1 cache miss and DDR/PMM memory latency
pcm-pcie : monitor PCIe bandwidth per-socket
pcm-iio : monitor PCIe bandwidth per PCIe bus/device
pcm-numa : monitor local and remote memory accesses
pcm-power : monitor sleep and energy states of processor, Intel(r) Quick Path Interconnect, DRAM memory, reasons of CPU frequency throttling and other energy-related metrics
pcm-tsx: monitor performance metrics for Intel(r) Transactional Synchronization Extensions
pcm-core and pmu-query: query and monitor arbitrary processor core events
pcm-raw: program arbitrary core and uncore events by specifying raw register event ID encoding
pcm Grafana dashboard : front-end for Grafana (in scripts/grafana directory). Full Grafana Readme is here
pcm-service : front-end for Windows perfmon
There are also utilities for reading/writing model specific registers (pcm-msr), PCI configuration registers (pcm-pcicfg), memory mapped registers (pcm-mmio) and TPMI registers (pcm-tpmi) supported on Linux, Windows, FreeBSD and DragonFlyBSD.
And finally a daemon that stores core, memory and QPI counters in shared memory that can be be accessed by non-root users.
Building PCM Tools
Clone PCM repository with submodules:
git clone --recursive https://github.com/intel/pcm
cd pcm
or clone the repository first, and then update submodules with:
git submodule update --init --recursive
Install cmake (and libasan on Linux) then compile:
Choose one of the following build methods:
Incremental Build (Fastest): if you have a previous build to reuse the existing build directory and preserve previous build artifacts, go straight to the cd build step.
Clean Build (From Scratch): Run cmake -E rm -rf build && cmake -E make_directory build for your first build, or for a full rebuild to ensure a "clean state" by deleting all previous build data.
cd build
cmake ..
cmake --build .
You will get all the utilities (pcm, pcm-memory, etc) in build/bin directory.
'--parallel' can be used for faster building:
cmake --build . --parallel
Debug is default on Windows. Specify config to build Release:
cmake --build . --config Release
On Windows additional drivers and steps are required. Please find instructions here: WINDOWS_HOWTO.md.
FreeBSD/DragonFlyBSD-specific details can be found in FREEBSD_HOWTO.txt
Downloading Pre-Compiled PCM Tools
Linux:
Ubuntu/Debian: sudo apt install pcm
openSUSE: sudo zypper install pcm
RHEL8.5 or later: sudo dnf install pcm
Fedora: sudo yum install pcm
RPMs and DEBs with the latest PCM version for RHEL/SLE/Ubuntu/Debian/openSUSE/etc distributions (binary and source) are available here
Windows: download PCM binaries as appveyor build service artifacts and required Visual C++ Redistributable from www.microsoft.com. Additional steps and drivers are required, see WINDOWS_HOWTO.md.
Docker: see instructions on how to use pcm-sensor-server pre-compiled container from docker hub.
Executing PCM tools under non-root user on Linux
Executing PCM tools under an unprivileged user on a Linux operating system is feasible. However, there are certain prerequisites that need to be met, such as having Linux perf_event support for your processor in the Linux kernel version you are currently running. To successfully run the PCM tools, you need to set the /proc/sys/kernel/perf_event_paranoid setting to -1 as root once:
echo -1 > /proc/sys/kernel/perf_event_paranoid
and configure two specific environment variables when running the tools under a non-root user:
Please keep in mind that when executing PCM tools under an unprivileged user on Linux, certain PCM metrics may be unavailable. This limitation specifically affects metrics that rely solely on direct MSR (Model-Specific Register) register access. Due to the restricted privileges of the user, accessing these registers is not permitted, resulting in the absence of corresponding metrics.
Frequently Asked Questions (FAQ)
PCM's frequently asked questions (FAQ) are located here.
PCM API documentation
PCM API documentation is embedded in the source code and can be generated into html format from source using Doxygen (www.doxygen.org).
PCM environment variables
The list of PCM environment variables is located here
Custom compilation options
The list of custom compilation options is located here
Packaging
Packaging with CPack is supported on Debian and Redhat/SUSE system families.
To create DEB of RPM package need to call cpack after building in build folder:
cd build
cpack
This creates package:
"pcm-VERSION-Linux.deb" on Debian family systems;
"pcm-VERSION-Linux.rpm" on Redhat/SUSE-family systems.
Packages contain pcm-* binaries and required for usage opCode-* files.
No homepage URL was recorded for intel/pcm in TopGit's last sync. The README tab above frequently contains screenshots and demo links, or check the repository description on GitHub.
How active is development on intel/pcm?
The most recent commit recorded on intel/pcm was 23 days ago, based on the GitHub push timestamp. The repository has 532 forks — one of the better signals of community interest.
Is intel/pcm open source?
Yes — intel/pcm ships under the BSD-3-Clause license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/intel/pcm.
What license does intel/pcm use?
intel/pcm is released under the BSD-3-Clause license. Always verify the LICENSE file directly on GitHub for the authoritative terms — license strings can be edited out of sync with a project's actual stance.
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/intel/pcm is the definitive source.
Read full README in the tab above.
Still deciding about pcm?
One click hands the question to an AI along with this page — see what it says about pcm.