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.
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
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 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 Grafana dashboard : front-end for Grafana (in grafana directory)
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.
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).