Identificando pressão na CPU - Búfalo Informática
Dica No : 1246
Titulo: Identificando pressão na CPU
Podemos utilizar um dos campos existentes na DMV 'sys.dm_os_wait_stats para identificar a existência de pressão na CPU. Essa DMV possui um campo chamado signal_wait_time_ms. Esse tempo representa o tempo em que a tarefa sendo realizada teve que esperar por um core disponível para execução após o wait ter sido liberado.
Por exemplo, digamos que o wait stats represente a ocorrência de um lock. A tarefa não pode continuar até que o lock seja liberado, portanto o wait é registrado. Porém, após a liberação do lock, é necessário aguardar um core de processador (que o SQL Server representa como scheduler) disponível para que a tarefa seja concluida. O tempo entre a liberação do lock e a disponibilidade do scheduler é registrado no campo signal_wait_time_ms.
Portanto, se o valor de signal_wait_time_ms estiver alto, por exemplo, 20% ou mais do valor de wait_time_ms, isso significa que está ocorrendo pressão no processador, ele não está dando conta do excesso de processamento.
Podemos identificar essa pressão no processador utilizando a seguinte query:
select wait_type,wait_time_ms,signal_wait_time_ms,
100*signal_wait_time_ms/wait_time_ms as [percent]
where wait_time_ms >0
Uma 2a forma de identificar que existe pressão do processador é checando a DMV sys.dm_os_schedulers. Nela encontramos um campo indicando quantas tarefas estão prontas para ser executadas e aguardando a disponibilidade do scheduler. Se esse número for maior que 2 dígitos, temos um problema:
Isso não significa necessariamente que exista um problema com o hardware. Existem vários problemas em queries que podem causar uma maior pressão no processador, entre eles problemas de indexação. Podemos checar o cache de planos de execução para identificar quais queries estão causando maior pressão no processador. Basta utilizar a seguinte query: