Published on

October 28, 2010

Comprendiendo la presión de la CPU en SQL Server

En una publicación de blog anterior, discutimos cómo verificar la presión de la CPU en SQL Server utilizando el DMV wait_stats. Sin embargo, para obtener una imagen completa de la presión de la CPU, necesitamos utilizar otro DMV llamado sys.dm_os_schedulers.

¿Por qué necesitamos la ayuda de sys.dm_os_schedulers? El DMV wait_stats captura el tiempo de espera para un grupo de tipos de espera. Rastrea el tiempo de espera de recursos experimentado por un proceso y lo refleja en el DMV. Sin embargo, hay escenarios en los que un proceso no experimenta ninguna espera de recursos y solo tiene una espera de CPU o de señal. En tales casos, el tiempo de espera no se captura en el DMV wait_stats y no refleja la presión de la CPU experimentada en absoluto.

Aquí es donde entra en juego sys.dm_os_schedulers. Al utilizar este DMV, podemos detectar la presión de la CPU incluso cuando no hay espera de recursos. La siguiente consulta se puede utilizar para recuperar información de sys.dm_os_schedulers:

SELECT scheduler_id, cpu_id, current_tasks_count, runnable_tasks_count, current_workers_count, active_workers_count, work_queue_count
FROM sys.dm_os_schedulers
WHERE scheduler_id < 255;

Esta consulta simple devuelve una fila por CPU y proporciona información importante como el número de tareas en espera en la cola ejecutable (runnable_tasks_count). Si el valor de runnable_tasks_count no es cero, indica presión de la CPU y requiere un monitoreo cercano.

Es importante tener en cuenta que sys.dm_os_schedulers no mantiene datos históricos desde el último reinicio, a diferencia del DMV wait_stats. Por lo tanto, es necesario consultar más frecuentemente, tal vez cada 5 minutos, si es necesario.

En resumen, monitorear la CPU en SQL Server implica tres partes:

  1. Verificar directamente la CPU utilizando el DMV sys.os_ring_buffers
  2. Verificar el DMV wait_stats
  3. Verificar sys.dm_os_schedulers

Al utilizar estos tres métodos, puede monitorear y gestionar eficazmente la presión de la CPU en su entorno de SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.