Feature/granular telemetry#632
Merged
Merged
Conversation
namespace better logging draft 2 draft 3 draft 4 draft 5 draft 6 struct decom voiding draft 7 requestQpc lock
uci first draft uci verbose uci wix install fix uci parsing cleanup
There was a problem hiding this comment.
Pull request overview
This PR refactors PresentMon’s telemetry stack toward fine-grained, per-metric providers with device correlation/routing, removing legacy “monolithic provider + shim” paths and folding adapter enumeration into the existing introspection flow. It also adds UCI runtime packaging support and introduces a per-core CPU temperature metric.
Changes:
- Introduces a new
TelemetryProviderabstraction with aTelemetryCoordinatorthat correlates devices across providers and routes/polls metrics into IPC. - Replaces legacy telemetry/adapters actions & containers (e.g.,
EnumerateAdapters,PowerTelemetryContainer, legacy caps shims) with introspection-driven device/adapter data and a richer metric-use model. - Adds UCI SDK detection + runtime deployment/installer harvesting, and extends the public API/metadata with
PM_METRIC_CPU_CORE_TEMPERATURE.
Reviewed changes
Copilot reviewed 142 out of 143 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| Tools/generate/EnumMetric/metrics.awk | Handle BOM + filter metric rows during enum generation. |
| Reflector/StructDumpers.h.scriban | Generate dumpers for rooted typedefs. |
| IntelPresentMon/PresentMonService/PresentMonSession.h | Remove legacy CPU/power telemetry hooks; include coordinator. |
| IntelPresentMon/PresentMonService/PresentMonSession.cpp | Remove legacy CPU/power telemetry methods. |
| IntelPresentMon/PresentMonService/PresentMonService.vcxproj.filters | Remove legacy telemetry container/actions; add MetricUse header. |
| IntelPresentMon/PresentMonService/PresentMonService.vcxproj | Remove legacy telemetry container/actions; add UCI runtime deploy step. |
| IntelPresentMon/PresentMonService/PresentMon.h | Replace device-usage tracking with metric-level usage snapshot + eventing. |
| IntelPresentMon/PresentMonService/PresentMon.cpp | Remove legacy adapter enumeration path. |
| IntelPresentMon/PresentMonService/PowerTelemetryContainer.h | Delete legacy telemetry container. |
| IntelPresentMon/PresentMonService/PowerTelemetryContainer.cpp | Delete legacy telemetry container implementation. |
| IntelPresentMon/PresentMonService/MetricUse.h | New shared header for metric-use types (service/control-lib). |
| IntelPresentMon/PresentMonService/LogSetup.cpp | Update IGCL error provider include/namespace. |
| IntelPresentMon/PresentMonService/AllActions.h | Remove legacy actions from generated action list. |
| IntelPresentMon/PresentMonService/acts/StopTracking.h | Include ActionExecutionContext explicitly. |
| IntelPresentMon/PresentMonService/acts/StopPlayback.h | Include ActionExecutionContext explicitly; normalize file header. |
| IntelPresentMon/PresentMonService/acts/StartTracking.h | Include ActionExecutionContext explicitly. |
| IntelPresentMon/PresentMonService/acts/StartEtlLogging.h | Include ActionExecutionContext explicitly; normalize file header. |
| IntelPresentMon/PresentMonService/acts/SetTelemetryPeriod.h | Include ActionExecutionContext explicitly; normalize file header. |
| IntelPresentMon/PresentMonService/acts/SetEtwFlushPeriod.h | Include ActionExecutionContext explicitly; normalize file header. |
| IntelPresentMon/PresentMonService/acts/ReportMetricUse.h | Include ActionExecutionContext explicitly. |
| IntelPresentMon/PresentMonService/acts/OpenSession.h | Include ActionExecutionContext explicitly; normalize file header. |
| IntelPresentMon/PresentMonService/acts/GetStaticCpuMetrics.h | Remove legacy static CPU metrics action. |
| IntelPresentMon/PresentMonService/acts/FinishEtlLogging.h | Include ActionExecutionContext explicitly; normalize file header. |
| IntelPresentMon/PresentMonService/acts/EnumerateAdapters.h | Remove legacy adapter enumeration action. |
| IntelPresentMon/PresentMonService/ActionExecutionContext.h | Move MetricUse to shared header; simplify context state. |
| IntelPresentMon/PresentMonService/ActionExecutionContext.cpp | Aggregate per-device metric use into map and publish snapshot. |
| IntelPresentMon/PresentMonMiddleware/Middleware.cpp | Switch to shared svc::MetricUse type. |
| IntelPresentMon/PresentMonAPI2Tests/InterimBroadcasterTests.cpp | Update tests to use shared svc::MetricUse. |
| IntelPresentMon/PresentMonAPI2/PresentMonAPI.h | Bump API minor version; add CPU core temperature metric ID. |
| IntelPresentMon/PMInstallerLib/wix-uci-dist.ps1 | New script to harvest UCI runtime files into WiX fragment. |
| IntelPresentMon/PMInstallerLib/PMInstallerLib.wixproj | Generate/compile harvested UCI fragment; define UciDistDir. |
| IntelPresentMon/PMInstallerLib/Library.wxs | Include UCI harvested component group in installer library. |
| IntelPresentMon/PMInstaller/PMInstaller.wixproj | Propagate PMON_UCI_SDK_DIR into wixlib build. |
| IntelPresentMon/metrics.csv | Update CPU temp description; add CPU core temperature metric row. |
| IntelPresentMon/KernelProcess/KernelProcess.vcxproj.filters | Remove legacy EnumerateAdapters action header entry. |
| IntelPresentMon/KernelProcess/KernelProcess.vcxproj | Remove legacy EnumerateAdapters action header entry; normalize XML header. |
| IntelPresentMon/KernelProcess/KernelProcess.args.json | Update default verbose module to tele_gpu. |
| IntelPresentMon/KernelProcess/kact/Introspect.h | Extend introspection response to include adapters list. |
| IntelPresentMon/KernelProcess/kact/EnumerateAdapters.h | Remove legacy kernel EnumerateAdapters action. |
| IntelPresentMon/KernelProcess/kact/AllActions.h | Remove legacy EnumerateAdapters from kernel action list. |
| IntelPresentMon/Interprocess/source/TelemetryMap.h | Add scalar int support for enum-valued telemetry. |
| IntelPresentMon/Interprocess/source/MetricCapabilitiesShim.h | Remove legacy caps bitset conversion shim. |
| IntelPresentMon/Interprocess/source/MetricCapabilitiesShim.cpp | Remove legacy caps bitset conversion shim implementation. |
| IntelPresentMon/Interprocess/source/MetricCapabilities.cpp | Improve debug string output with metric symbols. |
| IntelPresentMon/Interprocess/source/metadata/MetricList.h | Add CPU core temperature metric metadata. |
| IntelPresentMon/Interprocess/source/IntrospectionPopulators.cpp | Simplify “universal metric” registration using device type metadata. |
| IntelPresentMon/Interprocess/source/IntrospectionCapsLookup.h | Remove legacy caps lookup table. |
| IntelPresentMon/Interprocess/source/Interprocess.h | Remove legacy telemetry includes; normalize file header. |
| IntelPresentMon/Interprocess/Interprocess.vcxproj.filters | Remove legacy shim/lookup files from filters. |
| IntelPresentMon/Interprocess/Interprocess.vcxproj | Remove legacy shim/lookup files from project. |
| IntelPresentMon/Core/source/pmon/PresentMon.h | Remove adapter enumeration API surface. |
| IntelPresentMon/Core/source/pmon/PresentMon.cpp | Remove adapter enumeration impl; adjust default adapter selection. |
| IntelPresentMon/Core/source/pmon/AdapterInfo.h | Remove legacy adapter info struct. |
| IntelPresentMon/Core/source/kernel/Kernel.h | Remove adapter enumeration API surface. |
| IntelPresentMon/Core/source/kernel/Kernel.cpp | Remove adapter enumeration impl. |
| IntelPresentMon/Core/Core.vcxproj.filters | Remove AdapterInfo header from project filters; normalize XML header. |
| IntelPresentMon/Core/Core.vcxproj | Remove AdapterInfo header from project. |
| IntelPresentMon/ControlLib/WmiCpu.h | Remove legacy WMI CPU telemetry class. |
| IntelPresentMon/ControlLib/WmiCpu.cpp | Remove legacy WMI CPU telemetry implementation. |
| IntelPresentMon/ControlLib/wmi/WmiTelemetryProvider.h | New WMI provider implementing TelemetryProvider. |
| IntelPresentMon/ControlLib/wmi/WmiTelemetryProvider.cpp | New WMI provider implementation (CPU name/vendor + counters). |
| IntelPresentMon/ControlLib/Ver.h | Remove legacy IPF version header. |
| IntelPresentMon/ControlLib/uci/UciTelemetryProvider.h | New UCI provider interface and state tracking. |
| IntelPresentMon/ControlLib/uci/UciSdk.h | New compile-time detection wrapper for UCI SDK headers. |
| IntelPresentMon/ControlLib/uci/.gitignore | Ignore UCI dist/external payload directories. |
| IntelPresentMon/ControlLib/TelemetryProvider.h | New provider interface + common metric/value types. |
| IntelPresentMon/ControlLib/TelemetryDeviceFingerprint.h | New device fingerprint + correlation helpers. |
| IntelPresentMon/ControlLib/TelemetryDeviceFingerprint.cpp | Implement fingerprint matching/merge + LUID formatting. |
| IntelPresentMon/ControlLib/TelemetryCoordinator.h | New coordinator that correlates devices and routes metrics. |
| IntelPresentMon/ControlLib/TelemetryCoordinator.cpp | Implement provider construction, routing, polling, IPC population. |
| IntelPresentMon/ControlLib/SignatureComparison.h | Remove legacy NVIDIA signature comparison. |
| IntelPresentMon/ControlLib/SignatureComparison.cpp | Remove legacy NVIDIA signature comparison implementation. |
| IntelPresentMon/ControlLib/PresentMonPowerTelemetry.h | Remove legacy monolithic power telemetry structs/caps. |
| IntelPresentMon/ControlLib/PowerTelemetryProviderFactory.h | Remove legacy provider factory. |
| IntelPresentMon/ControlLib/PowerTelemetryProviderFactory.cpp | Remove legacy provider factory implementation. |
| IntelPresentMon/ControlLib/PowerTelemetryProvider.h | Remove legacy provider interface. |
| IntelPresentMon/ControlLib/PowerTelemetryAdapter.h | Remove legacy adapter interface. |
| IntelPresentMon/ControlLib/PowerTelemetryAdapter.cpp | Remove legacy adapter implementation. |
| IntelPresentMon/ControlLib/nvml/NvmlWrapper.h | Move NVML wrapper to new namespace; add DeviceGetName endpoint. |
| IntelPresentMon/ControlLib/nvml/NvmlWrapper.cpp | Improve NVML init error handling; drop legacy signature code. |
| IntelPresentMon/ControlLib/nvml/NvmlTelemetryProvider.h | New NVML provider (power + memory metrics). |
| IntelPresentMon/ControlLib/nvml/NvmlTelemetryProvider.cpp | New NVML provider implementation. |
| IntelPresentMon/ControlLib/nvml/nvml.h | Add name buffer constant; normalize file header. |
| IntelPresentMon/ControlLib/nvapi/NvapiWrapper.h | Move NVAPI wrapper to new namespace; remove legacy signature struct/method. |
| IntelPresentMon/ControlLib/nvapi/NvapiWrapper.cpp | Improve NVAPI init error handling; remove legacy signature method. |
| IntelPresentMon/ControlLib/nvapi/NvapiTelemetryProvider.h | New NVAPI provider (temps/clocks/utilization/fan). |
| IntelPresentMon/ControlLib/nvapi/nvapi.h | Normalize file header. |
| IntelPresentMon/ControlLib/nvapi/nvapi_interface_table.h | Normalize file header. |
| IntelPresentMon/ControlLib/Logging.h | Update IGCL include path; move to new namespace. |
| IntelPresentMon/ControlLib/ipf_version.h | Remove legacy IPF version header. |
| IntelPresentMon/ControlLib/ipf_sdk_version.h | Remove legacy IPF SDK version header. |
| IntelPresentMon/ControlLib/IntelPowerTelemetryProvider.h | Remove legacy IGCL-based provider wrapper. |
| IntelPresentMon/ControlLib/IntelPowerTelemetryProvider.cpp | Remove legacy IGCL-based provider wrapper implementation. |
| IntelPresentMon/ControlLib/IntelPowerTelemetryAdapter.h | Remove legacy IGCL-based adapter. |
| IntelPresentMon/ControlLib/igcl/IgclTelemetryProvider.h | New IGCL provider interface (metric-level polling). |
| IntelPresentMon/ControlLib/igcl/IgclErrorCodeProvider.h | Move IGCL error provider to new namespace + include path fixes. |
| IntelPresentMon/ControlLib/igcl/IgclErrorCodeProvider.cpp | Move IGCL error provider to new namespace + include path fixes. |
| IntelPresentMon/ControlLib/igcl/igcl_api.h | Normalize file header. |
| IntelPresentMon/ControlLib/igcl/cApiWrapper.cpp | Normalize file header. |
| IntelPresentMon/ControlLib/Exceptions.h | Move telemetry exceptions into pmon::tel and add new exception types. |
| IntelPresentMon/ControlLib/EndpointCache.h | New lightweight endpoint cache keyed by request QPC. |
| IntelPresentMon/ControlLib/DllModule.h | Move DLL loader into pmon::tel; use WinAPI wrapper include. |
| IntelPresentMon/ControlLib/DeviceIdAllocator.h | Remove legacy allocator (device ID now coordinated differently). |
| IntelPresentMon/ControlLib/CpuTelemetryInfo.h | Remove legacy CPU telemetry bitset info struct. |
| IntelPresentMon/ControlLib/CpuTelemetry.h | Remove legacy CPU telemetry class. |
| IntelPresentMon/ControlLib/CpuTelemetry.cpp | Remove legacy CPU telemetry implementation. |
| IntelPresentMon/ControlLib/ControlLib.vcxproj.filters | Reorganize filters; add new provider/coordinator sources; remove legacy telemetry sources. |
| IntelPresentMon/ControlLib/ControlLib.vcxproj | Add UCI include dir + Interprocess reference; add new provider/coordinator sources; remove legacy telemetry sources. |
| IntelPresentMon/ControlLib/AmdPowerTelemetryProvider.h | Remove legacy AMD power telemetry provider. |
| IntelPresentMon/ControlLib/AmdPowerTelemetryProvider.cpp | Remove legacy AMD power telemetry provider implementation. |
| IntelPresentMon/ControlLib/AmdPowerTelemetryAdapter.h | Remove legacy AMD power telemetry adapter. |
| IntelPresentMon/ControlLib/AmdPowerTelemetryAdapter.cpp | Remove legacy AMD power telemetry adapter implementation. |
| IntelPresentMon/ControlLib/adl/AdlTelemetryProvider.h | New ADL provider interface (metric-level polling). |
| IntelPresentMon/ControlLib/adl/Adl2Wrapper.h | Move ADL wrapper to new namespace; add endpoints; fix includes. |
| IntelPresentMon/ControlLib/adl/Adl2Wrapper.cpp | Improve ADL init error handling; fix allocator callback usage. |
| IntelPresentMon/ControlLib/adl/adl_structures.h | Normalize file header. |
| IntelPresentMon/ControlLib/adl/adl_sdk.h | Normalize file header. |
| IntelPresentMon/ControlLib/adl/adl_defines.h | Normalize file header. |
| IntelPresentMon/CommonUtilities/win/com/WbemConnection.h | Add GetServices() accessor for WMI connection. |
| IntelPresentMon/CommonUtilities/win/com/WbemConnection.cpp | Implement GetServices() accessor. |
| IntelPresentMon/CommonUtilities/ref/GeneratedReflectionHelpers.h | Refine array dumping; adjust pointer formatting. |
| IntelPresentMon/CommonUtilities/log/Verbose.h | Add uci verbose module. |
| IntelPresentMon/CommonUtilities/CommonUtilities.vcxproj | Normalize XML header. |
| IntelPresentMon/Common.props | Add UCI SDK dir/include/bin MSBuild properties. |
| IntelPresentMon/AppCef/source/util/KernelActionRegistration.cpp | Remove kernel EnumerateAdapters binding. |
| IntelPresentMon/AppCef/ipm-ui-vue/src/views/DataConfigView.vue | Use introspection store adapters instead of adapters store. |
| IntelPresentMon/AppCef/ipm-ui-vue/src/stores/introspection.ts | Add adapters to introspection store state/load. |
| IntelPresentMon/AppCef/ipm-ui-vue/src/stores/adapters.ts | Remove legacy adapters store (now introspection-backed). |
| IntelPresentMon/AppCef/ipm-ui-vue/src/main.ts | Stop refreshing adapters store at startup. |
| IntelPresentMon/AppCef/ipm-ui-vue/src/core/api.ts | Extend introspection payload with adapters; remove EnumerateAdapters API call. |
| AGENTS.md | Add/clarify coding conventions (casts, structured bindings, namespace qualification). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
2
to
4
| #include <string> | ||
| #include <concepts> | ||
| #include "GeneratedReflection.h" |
Comment on lines
+163
to
+166
| uint64_t NvmlTelemetryProvider::GetLegacyTotalMemoryBytes_(const nvmlMemory_t& memoryInfo) noexcept | ||
| { | ||
| return (uint64_t)memoryInfo.free; | ||
| } |
markgalvan-intel
approved these changes
Jun 1, 2026
Collaborator
markgalvan-intel
left a comment
There was a problem hiding this comment.
Looks great. I love the new direction! Excellent work.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
closes #607
closes #606
closes #616
closes #438
closes #352
closes #579