What is '/Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization' telling me? I am trying to use dm_os_ring_buffers in order to get an approximation of CPU usage. I've found a few of queries online which get values from /Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization but I'm not sure what this value means. When I run it against one of my servers I'm getting 1, can someone explain this value?

Here's a sample from the query I'm using for context:

WITH SQLProcessCPU
AS(
   SELECT TOP(30) SQLProcessUtilization AS 'CPU_Usage', ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS 'row_number'
   FROM ( 
         SELECT 
           record.value('(./Record/@id)[1]', 'int') AS record_id,
           record.value('(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]', 'int') AS [SystemIdle],
           record.value('(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]', 'int') AS [SQLProcessUtilization], 
           [timestamp] 
         FROM ( 
              SELECT [timestamp], CONVERT(xml, record) AS [record] 
              FROM sys.dm_os_ring_buffers 
              WHERE ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR' 
              AND record LIKE '%&lt;SystemHealth&gt;%'
              ) AS x 
        ) AS y
) 


Thanks!
Here is a sample output of XML from sys.dm_os_ring_buffers where WHERE ring_buffer_type = N'RING_BUFFER_SCHEDULER_MONITOR'. I will explain each item from this XML.

&lt;Record id = "38446" type ="RING_BUFFER_SCHEDULER_MONITOR" time ="2313297649"&gt;
&lt;SchedulerMonitorEvent&gt;
    &lt;SystemHealth&gt;
        &lt;ProcessUtilization&gt;2&lt;/ProcessUtilization&gt;
        &lt;SystemIdle&gt;91&lt;/SystemIdle&gt;
        &lt;UserModeTime&gt;310468750&lt;/UserModeTime&gt;
        &lt;KernelModeTime&gt;35781250&lt;/KernelModeTime&gt;
        &lt;PageFaults&gt;7004&lt;/PageFaults&gt;
        &lt;WorkingSetDelta&gt;0&lt;/WorkingSetDelta&gt;
        &lt;MemoryUtilization&gt;100&lt;/MemoryUtilization&gt;
    &lt;/SystemHealth&gt;
&lt;/SchedulerMonitorEvent&gt;





ProcessUtilization Indicates the amount of CPU SQL Server was using at the time of the snapshot.
SystemIdle Amount of Idle CPU that nothing is using. Available for any process that requires CPU.
(100-ProcessUtilization-System Idle) CPU being used by processes other than SQL Server.
UserModeTime Indicates the amount of CPU worker thread (Running in user mode) used during the period it did not yield. You need to divide this value by 10,000 to get time in milliseconds
KernelModeTime Indicates the amount of CPU worker thread (Running in Windows kernel) used during the period it did not yield. You need to divide this value by 10,000 to get time in milliseconds.
PageFaults - Number of page faults at the time of the snapshot. A page fault occurs when a program requests an address on a page that is not in the current set of memory-resident pages.
WorkingSetDelta Difference in working set between last and current snapshot.
MemoryUtilization Indicates the percentage of memory SQL Server is using based on max server memory (MB) setting. 100% is normal in this case as SQL OS is based on a greedy algorithm. It will consume all memory unless it is forced to give up memory due to external factors. 



  When I run it against one of my servers I'm getting 1, can someone
  explain this value?


Means you are using 1% of total CPU (guessing all core are visible to SQL operating system) at the time of the snapshot. You want to collect this for over a period of time and set your baseline.  That way at any time you know if your running high or low compare to your baseline.

Some additional resource:


One of the best article by Denzi Ribeiro about troubleshooting high CPU issue using sys.dm_os_ring_buffers
How to understand the RING_BUFFER_SCHEDULE_MONITOR by Jack Vambas