Skip to content
/ pcm Public
forked from intel/pcm

Processor Counter Monitor

License

BSD-3-Clause, Unknown licenses found

Licenses found

BSD-3-Clause
LICENSE
Unknown
license.txt
Notifications You must be signed in to change notification settings

henrikand/pcm

This branch is 1577 commits behind intel/pcm:master.

Folders and files

NameName
Last commit message
Last commit date
Oct 20, 2021
May 3, 2020
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Apr 25, 2021
Sep 27, 2021
Oct 29, 2021
Apr 25, 2021
Sep 20, 2021
Oct 20, 2021
Sep 28, 2021
Oct 28, 2021
Oct 20, 2017
May 25, 2021
Oct 31, 2016
Apr 12, 2021
Sep 24, 2021
Oct 31, 2016
Oct 31, 2016
Apr 30, 2020
Feb 20, 2021
Sep 3, 2021
Dec 2, 2020
Sep 24, 2021
May 29, 2020
Feb 19, 2020
Apr 25, 2021
Mar 7, 2021
Feb 20, 2021
Oct 20, 2021
Oct 23, 2021
Aug 27, 2020
Feb 2, 2017
Feb 2, 2017
Mar 4, 2020
Aug 27, 2020
May 15, 2017
Sep 24, 2021
May 4, 2021
Mar 3, 2021
Oct 20, 2021
Oct 31, 2021
Oct 23, 2021
Nov 23, 2018
Apr 25, 2021
Apr 25, 2021
Sep 26, 2021
Sep 24, 2021
Oct 20, 2021
Jan 2, 2021
Oct 28, 2021
Oct 28, 2021
Mar 26, 2021
Mar 26, 2021
Mar 26, 2021
Jun 23, 2020
Sep 26, 2021
Apr 25, 2021
Apr 1, 2020
Feb 2, 2017
May 15, 2021
Mar 27, 2021
Sep 28, 2021
Sep 20, 2021
Sep 28, 2021
Jun 23, 2020
Apr 25, 2021
Jun 23, 2020
Jun 15, 2021
Jun 15, 2021
Apr 25, 2021
Sep 28, 2021
Jun 23, 2020
Aug 25, 2020
Sep 26, 2019
Oct 28, 2021
Jul 27, 2020
Sep 26, 2021
Oct 28, 2021
Sep 26, 2021
Oct 28, 2021
Jun 23, 2020
Jun 23, 2020
Oct 28, 2021
Jun 23, 2020
Sep 26, 2021
Sep 26, 2021
Oct 28, 2021
Oct 28, 2021
Sep 26, 2021
Jun 23, 2020
Oct 28, 2021
Oct 29, 2021
Jul 23, 2021
Nov 1, 2021
Mar 27, 2021
Oct 31, 2016
Mar 27, 2021
Dec 22, 2020
Dec 21, 2020
Oct 21, 2019
Sep 24, 2021
Oct 20, 2021
Jun 23, 2020
Jun 23, 2020
Jun 23, 2020
Mar 18, 2021
Oct 19, 2021
Oct 8, 2021
Oct 8, 2021
Sep 3, 2021
Apr 25, 2021

Repository files navigation


Processor Counter Monitor (PCM)

PCM Tools | Building PCM | Downloading Pre-Compiled PCM | FAQ | API Documentation | Environment Variables | Compilation Options

Processor Counter Monitor (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, Mac OS X, FreeBSD and DragonFlyBSD operating systems.

Github repository statistics: Custom badge Custom badge Custom badge

Code quality: Language grade: C/C++ Language grade: Python


Current Build Status

  • Linux and OSX: Build Status
  • Windows: Build status
  • FreeBSD: Build Status
  • Docker Hub: Build status pulls

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 output
  • 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
  • pcm-memory : monitor memory bandwidth (per-channel and per-DRAM DIMM rank) pcm-memory output
  • 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 device pcm-iio output
  • 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-bw-histogram: collect memory bandwidth utilization histogram

Graphical front ends:

  • pcm Grafana dashboard : front-end for Grafana (in grafana directory) pcm grafana output
  • pcm-sensor : front-end for KDE KSysGuard
  • pcm-service : front-end for Windows perfmon

There are also utilities for reading/writing model specific registers (pcm-msr), PCI configuration registers (pcm-pcicfg) and memory mapped registers (pcm-mmio) supported on Linux, Windows, Mac OS X and FreeBSD.

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

  • Linux: just type 'make'. You will get all the utilities (pcm.x, pcm-memory.x, etc) built in the main PCM directory.
  • FreeBSD/DragonFlyBSD: just type 'gmake'. You will get all the utilities (pcm.x, pcm-memory.x, etc) built in the main PCM directory. If the 'gmake' command is not available, you need to install GNU make from ports (for example with 'pkg install gmake').
  • Windows: follow the steps in WINDOWS_HOWTO.md (will need to build or download additional drivers).
  • Mac OS X: follow instructions in MAC_HOWTO.txt

Downloading Pre-Compiled PCM Tools


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

About

Processor Counter Monitor

Resources

License

BSD-3-Clause, Unknown licenses found

Licenses found

BSD-3-Clause
LICENSE
Unknown
license.txt

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 92.4%
  • C 6.1%
  • Makefile 0.8%
  • Shell 0.4%
  • Python 0.3%
  • Batchfile 0.0%