Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
1246
Assunto : SQL Server
Titulo: Identificando pressão na CPU

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon


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]
from sys.dm_os_wait_stats
where wait_time_ms >0
order by [percent] desc

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:

select scheduler_id,current_tasks_count,runnable_tasks_count
from sys.dm_os_schedulers
where scheduler_id<255


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:

SELECT TOP 20 
total_worker_time/execution_count AS AvgCPU 
, total_worker_time AS TotalCPU 
, total_elapsed_time/execution_count AS AvgDuration 
, total_elapsed_time AS TotalDuration 
, (total_logical_reads+total_physical_reads)/execution_count AS AvgReads 
, (total_logical_reads+total_physical_reads) AS TotalReads 
, execution_count 
, SUBSTRING(st.TEXT, (qs.statement_start_offset/2)+1 
, ((CASE qs.statement_end_offset WHEN -1 THEN datalength(st.TEXT) 
ELSE qs.statement_end_offset 
END - qs.statement_start_offset)/2) + 1) AS txt 
, query_plan 
FROM sys.dm_exec_query_stats AS qs 
cross apply sys.dm_exec_sql_text(qs.sql_handle) AS st 
cross apply sys.dm_exec_query_plan (qs.plan_handle) AS qp 
ORDER BY TotalCpu DESC 

Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
Nenhum comentário foi realizado ainda. Seja o primeiro !
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br