Monitorando Alta CPU através da RING BUFFER

Monitorando Alta CPU através da RING BUFFER

  • Comments 2

Alto consumo de CPU, como monitorar? Recentemente, li um comentário interessante postado pelo Fernando Garcia no post Como Monitorar com Ring Buffer. Ele mencionou o uso do RING BUFFER para diagnosticar alto consumo de CPU. Isso é algo fantástico para um DBA que não tem acesso remoto ao servidor, ou seja, não pode abrir o Task Manager para ver o gráfico dos processadores.

Coloquei o script para rodar em produção e é fantástico, ele funciona muito bem! Fiz algumas alterações para otimizar sua performance. No final, ficou assim:

WITH ScheduleMonitorResults AS
(
    SELECT 
      DATEADD(ms, 
        (select [ms_ticks]-[timestamp] from sys.dm_os_sys_info), 
        GETDATE())          AS 'EventDateTime', 
      CAST(record AS xml)   AS 'record'
    FROM sys.dm_os_ring_buffers
    WHERE ring_buffer_type = 'RING_BUFFER_SCHEDULER_MONITOR' 
    AND    [timestamp] > 
               (select [ms_ticks] - 10*60000  -- Last 10 minutes
                                  - 100       -- Round up 
                from sys.dm_os_sys_info)
)
SELECT 
    CONVERT (varchar, EventDateTime, 126) AS EventTime, 
    SysHealth.value('ProcessUtilization[1]','int') AS 'CPU (SQL Server)',
    100 - SysHealth.value('SystemIdle[1]','int') AS 'CPU (All Processes)'
FROM ScheduleMonitorResults CROSS APPLY 
    record.nodes('/Record/SchedulerMonitorEvent/SystemHealth') T(SysHealth)
ORDER BY EventDateTime DESC

O resultado fornece o histórico do consumo de CPU nos últimos 10 minutos.

image

Isso mostra que o consumo de CPU da máquina variou entre 5-25%, apesar do processo do SQL Server não consumir nada.

  • Mais uma vez um Excelente artigo Fabricio . Obs : Acredito que 1º query o correto seria [timestamp]-[ms_ticks] .

  • Correto. Os campos da primeira query devem ser invertidos, [timestamp] - [ms_ticks]. Assim que der, farei a mudança no post... no momento, o editor não está funcionando (!!!). Muito obrigado por encontrar esse erro.

Page 1 of 1 (2 items)
Leave a Comment
  • Please add 1 and 5 and type the answer here:
  • Post