CPU shown in SQL PI for an instance differs from the OS CPU Utilization for the SQL Server process.
SQL PI Waits Collection:
SQL PI asks SQL Server for active requests and wait stats every second. This collection uses an internal query, gathering what SQL is waiting for right now (locks, I/O, etc.) to show how SQL Server spends its time waiting for resources.
OS CPU Utilization Collection:
Foglight collects CPU usage directly from the Windows operating system using performance counters. These queries measure overall CPU load for the Windows server and for the SQL Server process.
SQL PI Waits show where SQL is waiting (internal SQL metrics, every second. The “Resource Breakdown” percentages show how much SQL Server time is spent waiting (for locks, I/O, etc.). Foglight gets this data by checking SQL’s active requests and wait types every second.
OS CPU Utilization shows how hard your server or SQL process is working (external OS metrics). The “CPU Utilization (%)” numbers are collected separately, using Windows system queries. These measure how busy the entire server or just the SQL process is, based on operating system performance counters.
Since these metrics come from different measurement methods (wait stats vs. OS metrics) and are gathered at different intervals, their percentages may not neatly add together to 100% or match when viewed side by side.
For the most accurate picture and to understand any gaps, it’s best to check the detailed metrics directly in the topology views (like Infrastructure or SQL agent dashboards), where you can see both SQL-level waits and OS-level CPU usage.