Saltar al contenido

¿Cuántos núcleos se utilizan para planes seriales en SQL Server?

Solución:

Su plan de ejecución de consultas puede, según la complejidad, contener componentes en serie y en paralelo.

En SQL Server, su consulta / lote complejo o simple se llama solicitud y como tal se monitorea a través de la vista de administración sys.dm_exec_requests.

Devuelve información sobre cada solicitud que se ejecuta en SQL Server.

Luego, la solicitud se divide en diferentes cargas de trabajo que en SQL Server se representan como un tarea. Una solicitud puede ser una serie de tareas secuenciales o paralelas que pertenecen todas a la misma solicitud. Las tareas se supervisan en la vista de administración sys.dm_os_tasks.

Devuelve una fila para cada tarea que está activa en la instancia de SQL Server. Una tarea es la unidad básica de ejecución en SQL Server.

Las tareas, a su vez, se entregan a hilos de trabajador que son representaciones lógicas de subprocesos del sistema operativo. Un proceso sqlsrvr.exe tendrá varios subprocesos que pueden realizar cálculos en el procesador (núcleo).

Cuando el hilo está esperando, por ejemplo, que se devuelvan los datos, entonces sería mejor si el hilo se pudiera liberar para realizar otra tarea mientras la tarea actual está esperando. Esto es realizado por el planificador cual es …

… también conocido como programador SOS, administra subprocesos de trabajo que requieren tiempo de procesamiento para realizar el trabajo en nombre de las tareas. Cada programador se asigna a un procesador individual (CPU). El tiempo que un trabajador puede permanecer activo en un planificador se denomina cuanto del sistema operativo, con un máximo de 4 ms. Una vez que expira su tiempo cuántico, un trabajador cede su tiempo a otros trabajadores que necesitan acceder a los recursos de la CPU y cambia su estado. Esta cooperación entre trabajadores para maximizar el acceso a los recursos de la CPU se denomina programación cooperativa, también conocida como programación no preventiva. A su vez, el cambio en el estado del trabajador se propaga a la tarea asociada a ese trabajador y a la solicitud asociada a la tarea.

Los subprocesos no están vinculados a un núcleo / procesador específico a menos que se haya activado la afinidad del proceso en el nivel del sistema operativo.

(énfasis mía)

De forma predeterminada, cada instancia de SQL Server inicia cada subproceso y el sistema operativo distribuye subprocesos de instancias de SQL Server entre los procesadores (CPU) en una computadora, según la carga. Si se ha habilitado la afinidad del proceso en el nivel del sistema operativo, el sistema operativo asigna cada subproceso a una CPU específica. Por el contrario, el Motor de base de datos de SQL Server asigna subprocesos de trabajo de SQL Server a programadores que distribuyen los subprocesos de manera uniforme entre las CPU.

Para realizar múltiples tareas, por ejemplo, cuando varias aplicaciones acceden al mismo conjunto de CPU, el sistema operativo a veces mueve subprocesos de trabajo entre diferentes CPU.

Referencia: Guía de arquitectura de subprocesos y tareas (Microsoft | SQL Docs)

Respondiendo tu pregunta

Entonces, mi pregunta es … ¿todos los planes seriales con un costo menor a 55 usarán solo el primer núcleo?

No, sus tareas en serie (no planes) se ejecutarán en cualquier núcleo disponible dependiendo de la carga de trabajo general del sistema.

Un plan en serie se puede “vincular” a cualquier núcleo que esté habilitado (el planificador está EN LÍNEA). No está ligado al primer núcleo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *