Inspired by Rahul’s post, here are 2 more scripts that can help in detecting CPU pressure
select top 50
sum(qs.total_worker_time) as total_cpu_time,
sum(qs.execution_count) as total_execution_count,
count(*) as number_of_statements,
group by qs.plan_handle
order by sum(qs.total_worker_time) desc
The above query gives you a high-level view of which currently cached batches or procedures are using the most CPU.
The following query gives you time spent by workers in RUNNABLE state.
SELECT SUM(signal_wait_time_ms)/1000 as [Wait time in Sec]
You can use the value of above query and compare with your baseline to see if there is any major difference. In fact, you can build a trend analysis on this value.
Hope this helps. Note: There are many such queries you can find here;