Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
40804a8
Update message in pcm-pcie
Mar 29, 2026
2255fd3
Factor out event resolver logic from pcm raw
Mar 29, 2026
a952e95
Add metric config reader class
Mar 30, 2026
7def3a2
Add table render class
Mar 30, 2026
a7b74a5
Add layout support
Mar 30, 2026
d2a26e1
Add metrics validator
Mar 30, 2026
1acfbb5
Add initial set of metrics for ICX
Mar 31, 2026
72a1062
Add pcm-io
Mar 31, 2026
1c25944
Trying to add support for any PMU type
Apr 1, 2026
776c4c7
Add parsing for local events
Apr 1, 2026
78b2d4a
Show available metrics in help info
Apr 1, 2026
8c5f164
Add PerfmonEventResolver::findPerfmonPath()
Apr 7, 2026
f40a913
Update pcm-raw to use PerfmonEventResolver::findPerfmonPath()
Apr 7, 2026
f9b9417
Fix loadPMUDeclarations() function
Apr 7, 2026
a0abd4b
Return quotes back
Apr 7, 2026
a49fd05
Add multi-grouping for data collection
Apr 8, 2026
499177d
Show title at the top of table
Apr 8, 2026
73c5c3d
Properly display mix of metrics if they have different aggregations
Apr 9, 2026
ddb7835
Add handling for new scheme in metrics.json
Apr 9, 2026
f1f850e
Add draft for ICX metrics.json
Apr 9, 2026
e4756d7
address top type conversion warnings
rdementi Apr 10, 2026
5411809
Split loadPerfmonEvents() on several functions
Apr 17, 2026
7666b62
Add schedulling mechanism
Apr 17, 2026
8344ca9
Update metrics.json for ICX
Apr 17, 2026
e6a67c0
Add multiplexing coefficient
Apr 19, 2026
0da352f
Add description for metrics
Apr 19, 2026
ef7866f
Add help for metrics.json
Apr 19, 2026
5352fcb
Return exit_failure if validate returned false
Apr 19, 2026
6e7b133
Fix display for csv
Apr 20, 2026
4703a7a
Fix --no-layout option
Apr 20, 2026
de57a04
Return fallback with getInstallPathPrefix() back
Apr 20, 2026
f7f7037
Fix messaging for -ep option
Apr 20, 2026
97c1276
Search mapfile in CWD
Apr 20, 2026
0f523a8
Address review comments
Apr 21, 2026
ffcc0be
Add displaying standalone system wide metrics
Apr 21, 2026
83218ba
Address review comments
Apr 21, 2026
13bf109
Address review comments
Apr 21, 2026
027e25c
Fix build issue on windows
Apr 21, 2026
d4e891b
tests: add functional test for pcm-sensor-server using curl
Copilot Apr 22, 2026
b7a6a53
tests: capture curl exit code into variable for robust check
Copilot Apr 22, 2026
3caaca9
Fix buffer overflow in basic_socketbuf::overflow() - CWE-787
rdementi Apr 22, 2026
69a7379
Update src/pcm-sensor-server.cpp
rdementi Apr 22, 2026
3a542a9
Update src/pcm-sensor-server.cpp
rdementi Apr 22, 2026
b4680d0
Add CI regression test reproducing basic_socketbuf::overflow() OOB write
Copilot Apr 22, 2026
fbba546
Apply suggestions from code review
rdementi Apr 22, 2026
572ad3f
address review feedback
rdementi Apr 22, 2026
9d0bcf0
Rename pmu-events folder to metrics
Apr 28, 2026
f169c8d
Rename src/metrics/icelake-sp/metrics.json -> src/metrics/icelake-sp/…
Apr 28, 2026
9bd35d8
Merge branch 'main' into uid_aantonov_pcm_io
antonovalexnn Apr 28, 2026
e9e333a
Mitigate Slowloris thread-pool exhaustion in pcm-sensor-server (CWE-7…
Copilot May 11, 2026
0937582
update to intel-innersource/applications.security.monitoring.cas@v2.1.1
rdementi Jun 1, 2026
972299b
update to intel-innersource/applications.security.monitoring.cas@v3.0.2
rdementi Jun 1, 2026
9f62819
update Intel-PMT
rdementi Jun 1, 2026
f70e5d3
update to ntel-innersource/applications.security.monitoring.cas@v3.0.2
rdementi Jun 1, 2026
54f315e
add itsf credentials
rdementi Jun 1, 2026
180c1cd
Remove macOS/OSX support including the MacMSRDriver
Copilot Jun 2, 2026
f4547d9
Drop deleted MacMSRDriver file from cppcheck ignore list
Copilot Jun 2, 2026
91dfce1
Report fatal error in CMake when building on macOS/OSX
Copilot Jun 2, 2026
3303cfb
Potential fix for pull request finding
rdementi Jun 2, 2026
5f79e94
Potential fix for pull request finding
rdementi Jun 2, 2026
383ea30
Consolidate pcm-sensor-server metric docs into PCM-EXPORTER guide (#952)
Copilot Jun 2, 2026
f9b7f4b
add CWF support
rdementi Jun 3, 2026
a62c5d9
Remove pcm-sensor (KSysGuard plugin) and drop realtime async-counter …
Copilot Jun 3, 2026
45bbcba
Add a security warning into PCM-EXPORTER.md (#953)
rdementi Jun 3, 2026
c5ac8e4
Merge pull request #936 from intel-innersource/uid_aantonov_pcm_io
rdementi Jun 12, 2026
ea7f27a
update perfmon version
rdementi Jun 15, 2026
da378d2
Annotate DDRConfig latency events with official perfmon names
rdementi Jun 15, 2026
eb3273d
Add GNR/GNR-D/SRF/CWF support to programServerUncoreLatencyMetrics
rdementi Jun 15, 2026
c3be63f
Refactor latency-metrics CPU-family branching into a switch
rdementi Jun 15, 2026
fa36910
Replace magic event encodings in pcm-latency with named constexpr
rdementi Jun 15, 2026
79f962d
Enable core L1 latency metrics on GNR/GNR-D
rdementi Jun 15, 2026
2883988
Support DDR-only latency on parts without core L1 metrics (SRF/CWF)
rdementi Jun 15, 2026
5fa1b29
Fix wrong WPQ occupancy event for ICX/SPR/EMR latency metrics
rdementi Jun 15, 2026
84d051a
Address review: guard verbose socket indexing, handle latency program…
Copilot Jun 15, 2026
184d29a
Merge origin/main into copilot/remove-osx-support
Copilot Jun 16, 2026
a1b3eaf
Merge pull request #946 from intel-innersource/copilot/remove-osx-sup…
rdementi Jun 16, 2026
620c664
update Intel-PMT
rdementi Jun 16, 2026
5c58667
Fix /persecond/30 unsatisfiable-wait DoS in pcm-sensor-server
Copilot Jun 2, 2026
aa27b21
Remove useless pcm-sensor-server-persecond unit test
Copilot Jun 2, 2026
5b54d9a
Fix three issues from code review: exception handler, data race, stou…
Copilot Jun 2, 2026
e8a9248
Bound HTTP header count in pcm-sensor-server request parser (#949)
Copilot Jun 19, 2026
8071593
Merge tag '2026-07-08' into push-2026-07-08.1
rdementi Jul 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .github/workflows/ci-cas-security-dockerfile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ jobs:
python-version: '3.11'

- name: CAS Security Orchestrator (Source Only)
uses: intel-innersource/applications.security.monitoring.cas@v2
uses: intel-innersource/applications.security.monitoring.cas@v3.0.2
with:
itsf-username: ${{ secrets.ITSF_USERNAME }}
itsf-password: ${{ secrets.ITSF_PASSWORD }}
sdl-api-key: ${{ secrets.SDL_API_KEY }}
sdl-project-id: ${{ secrets.SDL_PROJECT_ID }}
sdl-idsid-value: ${{ secrets.SDL_IDSID_VALUE }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci-cas-security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
pip install -r Intel-PMT/tools/docker/requirements.txt || true

- name: CAS Security Orchestrator (Source Only)
uses: intel-innersource/applications.security.monitoring.cas@v2
uses: intel-innersource/applications.security.monitoring.cas@v3.0.2
with:
sdl-api-key: ${{ secrets.SDL_API_KEY }}
sdl-project-id: ${{ secrets.SDL_PROJECT_ID }}
Expand Down
47 changes: 0 additions & 47 deletions .github/workflows/macos-scan-build.yml

This file was deleted.

43 changes: 0 additions & 43 deletions .github/workflows/macosx_build.yml

This file was deleted.

11 changes: 5 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ if(PCM_X_ARTIFACTS)
endif()

message(STATUS "System: ${CMAKE_SYSTEM}")
if(APPLE)
message(FATAL_ERROR "macOS/OSX is not supported.")
endif()
if(UNIX AND NOT APPLE)
if(${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
set(FREE_BSD TRUE)
Expand All @@ -54,7 +57,7 @@ if(UNIX AND NOT APPLE)
endif()
endif()

if(UNIX) # APPLE, LINUX, FREE_BSD
if(UNIX) # LINUX, FREE_BSD
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type (default Release)" FORCE)
endif()
Expand Down Expand Up @@ -101,10 +104,6 @@ if(UNIX) # APPLE, LINUX, FREE_BSD
elseif()
set (PCM_DYNAMIC "")
endif()
if(APPLE)
set(PCM_NO_ASAN ON)
message(STATUS "AddressSanitizer is currently disabled on MacOS")
endif()
if(PCM_NO_ASAN)
message(STATUS "AddressSanitizer is disabled")
set(PCM_ASAN "")
Expand Down Expand Up @@ -226,7 +225,7 @@ if(UNIX)
Intel(r) Performance Counter Monitor (Intel(r) PCM) is an application programming\n\
interface (API) and a set of tools based on the API to monitor\n\
performance and energy metrics of Intel(r) Core(tm), Xeon(r), Atom(tm)\n\
and Xeon Phi(tm) processors. PCM works on Linux, Windows, Mac OS X,\n\
and Xeon Phi(tm) processors. PCM works on Linux, Windows,\n\
FreeBSD and DragonFlyBSD operating systems.")
set(CPACK_RPM_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION})

Expand Down
8 changes: 3 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Intel® Performance Counter Monitor (Intel® PCM)

[PCM Tools](#pcm-tools) | [Building PCM](#building-pcm-tools) | [Downloading Pre-Compiled PCM](#downloading-pre-compiled-pcm-tools) | [FAQ](#frequently-asked-questions-faq) | [API Documentation](#pcm-api-documentation) | [Environment Variables](#pcm-environment-variables) | [Compilation Options](#custom-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, Mac OS X, FreeBSD, DragonFlyBSD and ChromeOS operating systems.
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:* ![Custom badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fhetthbszh0.execute-api.us-east-2.amazonaws.com%2Fdefault%2Fpcm-clones) ![Custom badge](https://img.shields.io/endpoint?url=https%3A%2F%2F5urjfrshcd.execute-api.us-east-2.amazonaws.com%2Fdefault%2Fpcm-yesterday-clones) ![Custom badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fcsqqh18g3l.execute-api.us-east-2.amazonaws.com%2Fdefault%2Fpcm-today-clones)

Expand All @@ -21,7 +21,6 @@ Current Build Status
- Linux: [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/intel/pcm/linux_make.yml?branch=master)](https://github.com/intel/pcm/actions/workflows/linux_make.yml?query=branch%3Amaster)
- Windows: [![Build status](https://ci.appveyor.com/api/projects/status/github/intel/pcm?branch=master&svg=true)](https://ci.appveyor.com/project/opcm/pcm)
- FreeBSD: [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/intel/pcm/freebsd_build.yml?branch=master)](https://github.com/intel/pcm/actions/workflows/freebsd_build.yml?query=branch%3Amaster)
- OS X: [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/intel/pcm/macosx_build.yml?branch=master)](https://github.com/intel/pcm/actions/workflows/macosx_build.yml?query=branch%3Amaster)
- Docker container: [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/intel/pcm/docker.yml?branch=master)](doc/DOCKER_README.md)

--------------------------------------------------------------------------------
Expand Down Expand Up @@ -55,10 +54,9 @@ PCM provides a number of command-line utilities for real-time monitoring:
Graphical front ends:
- **pcm Grafana dashboard** : front-end for Grafana (in [scripts/grafana](scripts/grafana) directory). Full Grafana Readme is [here](scripts/grafana/README.md)
![pcm grafana output](https://raw.githubusercontent.com/wiki/intel/pcm/pcm-dashboard.png)
- **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**), memory mapped registers (**pcm-mmio**) and TPMI registers (**pcm-tpmi**) supported on Linux, Windows, Mac OS X and FreeBSD.
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.

Expand Down Expand Up @@ -98,7 +96,7 @@ Debug is default on Windows. Specify config to build Release:
```
cmake --build . --config Release
```
On Windows and MacOs additional drivers and steps are required. Please find instructions here: [WINDOWS_HOWTO.md](doc/WINDOWS_HOWTO.md) and [MAC_HOWTO.txt](doc/MAC_HOWTO.txt).
On Windows additional drivers and steps are required. Please find instructions here: [WINDOWS_HOWTO.md](doc/WINDOWS_HOWTO.md).

FreeBSD/DragonFlyBSD-specific details can be found in [FREEBSD_HOWTO.txt](doc/FREEBSD_HOWTO.txt)

Expand Down
64 changes: 0 additions & 64 deletions doc/MAC_HOWTO.txt

This file was deleted.

5 changes: 0 additions & 5 deletions doc/NUMA_NODE_API.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,6 @@ if (numa_node >= 0) {
- -1 if NUMA is disabled, not supported, or device affinity information unavailable
- **Note**: FreeBSD doesn't have a standardized sysctl path for PCI device NUMA affinity across all versions

### macOS

- **Method**: Returns -1 (macOS typically doesn't expose NUMA for PCI devices)
- **Return**: -1 (not applicable)

## Use Cases

1. **Performance Optimization**: Place processing threads on the same NUMA node as the device
Expand Down
2 changes: 1 addition & 1 deletion doc/PCM-EXPORTER.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ $ ./pcm-sensor-server --help
Usage: ./pcm-sensor-server [OPTION]

Valid Options:
-d : Run in the background (Linux/macOS only)
-d : Run in the background (non-Windows)
-p portnumber : Run on port <portnumber> (default port is 9738)
-l|--listen address : Listen on IP address <address> (default: all interfaces)
-r|--reset : Reset programming of the performance counters.
Expand Down
6 changes: 2 additions & 4 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ if(UNIX)
target_link_libraries(c_example_shlib PUBLIC PCM_SHARED PRIVATE Threads::Threads)

# numa_to_socket_example
if(NOT APPLE)
add_executable(numa_to_socket_example numa_to_socket_example.cpp)
target_link_libraries(numa_to_socket_example PUBLIC PCM_SHARED PRIVATE Threads::Threads)
endif()
add_executable(numa_to_socket_example numa_to_socket_example.cpp)
target_link_libraries(numa_to_socket_example PUBLIC PCM_SHARED PRIVATE Threads::Threads)
endif(UNIX)
1 change: 0 additions & 1 deletion examples/numa_node_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ int main()
// On Linux: uses /proc/bus/pci/ or PciHandleMM for memory-mapped access
// On Windows: uses Windows driver
// On FreeBSD: uses /dev/pci
// On macOS: uses PCIDriver
PciHandleType handle(segment, bus, device, function);

std::cout << "Successfully opened PCI device "
Expand Down
1 change: 0 additions & 1 deletion examples/numa_to_socket_example.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ int main()
std::cout << "\nNote: This is normal on:\n";
std::cout << " - Single-socket systems\n";
std::cout << " - Systems without NUMA support\n";
std::cout << " - macOS (not implemented)\n";
std::cout << " - FreeBSD without NUMA enabled (vm.ndomains <= 1)\n";
}

Expand Down
3 changes: 1 addition & 2 deletions pcm.spec
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ BuildRequires: libasan

%description

Intel(r) Performance Counter Monitor (Intel(r) PCM) is an application programming interface (API) and a set of tools based on the API to monitor performance and energy metrics of Intel(r) Core(tm), Xeon(r), Atom(tm) and Xeon Phi(tm) processors. PCM works on Linux, Windows, Mac OS X, FreeBSD and DragonFlyBSD operating systems.
Intel(r) Performance Counter Monitor (Intel(r) PCM) is an application programming interface (API) and a set of tools based on the API to monitor performance and energy metrics of Intel(r) Core(tm), Xeon(r), Atom(tm) and Xeon Phi(tm) processors. PCM works on Linux, Windows, FreeBSD and DragonFlyBSD operating systems.

%prep
%setup -n pcm-master
Expand Down Expand Up @@ -81,7 +81,6 @@ rm -rf $RPM_BUILD_ROOT
%{_sbindir}/pcm-accel
%{_sbindir}/pcm-pcie
%{_sbindir}/pcm-power
%{_sbindir}/pcm-sensor
%{_sbindir}/pcm-sensor-server
%{_sbindir}/pcm-tsx
%{_sbindir}/pcm-raw
Expand Down
2 changes: 1 addition & 1 deletion scripts/cppcheck.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

cppcheck $1 --force --enable=warning --inline-suppr -iPCMService.cpp -isimdjson -ipugixml -iPcmMsrDriver_info.c -igoogletest -DTEXT -j $2 2> cppcheck.out
cppcheck $1 --force --enable=warning --inline-suppr -iPCMService.cpp -isimdjson -ipugixml -igoogletest -DTEXT -j $2 2> cppcheck.out

if [ -s cppcheck.out ]
then
Expand Down
Loading
Loading