Through below query you are able to find out the CPU Utilization history in SQL Server with in one minute intervals.
DECLARE
@ts_now BIGINT = ( SELECT cpu_ticks / ( cpu_ticks / ms_ticks )
FROM sys.dm_os_sys_info) ;
SELECT TOP ( 60 )SQLProcessUtilization AS [SQL_Server_Process_CPU_Utilization] ,SystemIdle AS [System_Idle_Process] ,
100 - SystemIdle - SQLProcessUtilization AS [Other_Process_CPU_Utilization] ,DATEADD(ms, -1 * ( @ts_now - [timestamp] ),
GETDATE()) AS [Event Time]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 N'%<SystemHealth>%') AS x) AS y
ORDER BY record_id DESC ;
you will get the output like below:-
