Usando SQL Server 2012 Enterprise Edition SP1 em execução no Windows Server 2008 R2 SP1 Para cada núcleo de processador lógico no SQLOS tem um agendador atribuído a ele. Esses agendadores podem ser vistos como status “VISÍVEL ONLINE” emsys.dm_os_schedulers
Os threads de trabalho (tarefas) podem ser executados em um agendador e esses threads (tarefas) podem ter vários status, como baseados em uma fila de espera, por exemplo
a) suspenso em uma fila de espera para que o recurso esteja disponível
b) fila executável (principalmente FIFO, a menos que seja controlada pelo Resource Governor) ou
c) atualmente em execução em um agendador.
Minha pergunta é, por exemplo, uma tarefa ( SELECT
consulta neste caso) primeiro vai para um agendador (vamos chamá-lo de agendador A), mas descobriu que precisa esperar até que as páginas sejam trazidas para a memória (Operação IO), agora é colocada na fila de espera no estado suspenso, uma vez que o IO é concluído, aquele segmento de trabalho específico (tarefas) é sinalizado e colocado na fila executável na ordem em que chegou a essa fila.
A tarefa sempre precisa ir para o agendador A para terminar seu quantum ou pode alternar seu contexto e agora pode ser executada em qualquer agendador ocioso (vamos chamá-lo de agendador B ) sem tarefas executáveis? Se houver uma mudança de contexto, qual é o seu efeito?
Tem que esperar no escalonador Uma fila executável, não há troca de tarefas para escalonadores alternativos. O tempo acumulado esperando que o escalonador esteja disponível é chamado de espera de sinal.
Isso é diferente e separado do tempo acumulado
Suspended
na lista de espera.A relação das sessões com os agendadores é mapeada como:
Sessão -> Tarefa -> Thread -> Agendador -> CPU Lógica
Depois que um thread é alocado para um agendador, ele permanece nesse agendador até que seja concluído. Ele pode se mover repetidamente entre as filas
Running
,Suspended
eRunnable
mas permanecerá atribuído a um agendador.É claro que uma sessão pode ser composta por várias tarefas e threads que são distribuídos por vários escalonadores como resultado de um plano de execução paralelo.