Pular para o conteúdo

DPC e Kernel Executive workers no Windows 11 25H2

Nesta página

O grupo DpcQueueDepth, os worker limits e os parâmetros de watchdog são frequentemente vistos como um conjunto de latency tweaks universais. Na realidade, são limites internos e mecanismos de proteção do kernel. O seu efeito manifesta-se apenas numa fila DPC concreta, num determinado número de processadores, num tipo de driver ou num erro de worker.

Verificou-se quais os limites de DPC, worker threads e watchdog que o kernel lê, como os valores são normalizados e onde estes mecanismos são realmente aplicados.

Windows 11 25H2 build 26200.9168, ramos Session Manager\Kernel e Session Manager\Executive. Funções dependentes de hardware e drivers concretos não foram incluídos nas medições.

Análise estática de ntoskrnl.exe: procura de readers e consumidores, verificação de intervalos e normalização de valores; confronto com a documentação pública da Microsoft.

Caminho de DPC e watchdog:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel

Value Type Default/normalization O que controla
DpcQueueDepth REG_DWORD 4 profundidade da DPC queue
MinimumDpcRate REG_DWORD 3 frequência mínima de processamento de DPC
IdealDpcRate REG_DWORD 20 DPC rate alvo
AdjustDpcThreshold REG_DWORD 20 limiar de adaptação da DPC policy
ThreadDpcEnable REG_DWORD 1 processamento de thread-DPC
DpcWatchdogPeriod REG_DWORD 120000 período do DPC watchdog
DpcCumulativeSoftTimeout REG_DWORD 120000 na build estudada soft budget acumulado
PassiveWatchdogTimeout REG_DWORD 300 segundos watchdog de nível passivo em KD
ForceIdleGracePeriod REG_DWORD 5 segundos período de graça de force-idle
PerfIsoEnabled REG_DWORD 0 isolamento de desempenho
CacheIsoBitmap REG_DWORD 0 máscara Intel CAT L3
SchedulerAssistThreadFlagOverride REG_DWORD 0 override do scheduler assist
VpThreadSystemWorkPriority REG_DWORD 30, intervalo 1..31 prioridade de trabalho do processador virtual
AlwaysTrackIoBoosting REG_DWORD 0 rastreio diagnóstico de I/O boost

Caminho dos Kernel Executive workers:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Executive

Value Type Default/normalization O que controla
AdditionalCriticalWorkerThreads REG_DWORD 0, clamp 0..100 critical workers adicionais
AdditionalDelayedWorkerThreads REG_DWORD 0, clamp 0..100 delayed workers
MaximumKernelWorkerThreads REG_DWORD 4096, 32..16384 limite superior de kernel workers
ForceEnableMutantAutoboost REG_DWORD 0 mutant autoboost
WorkerThreadTimeoutInSeconds REG_DWORD 600, 60..3600 worker timeout

Session Manager\Kernel e Session Manager\Executive são ramos de configuração diferentes. Para cada valor é importante o caminho que o reader do kernel abre nesta build.

O kernel utiliza DpcQueueDepth, MinimumDpcRate, IdealDpcRate e AdjustDpcThreshold para controlar a fila e a adaptação do processamento de DPC. Os defaults verificados 4/3/20/20 já coincidem com o estado padrão do Windows 11 25H2; reescrever estes números não altera nada.

Utilidade: estes parâmetros podem ser úteis na análise de um DPC backlog concreto, mas sem uma traço ETW/WPR a alteração às cegas não diagnostica a causa. Uma fila maior pode adiar o processamento e aumentar a cauda da latência.

ThreadDpcEnable=1 ativa a infraestrutura threaded-DPC, 0 devolve o trabalho ao caminho DIRQL normal e pode alongar as janelas de interrupt-off. MaximumKernelWorkerThreads limita o pool global de kernel workers. AdditionalCriticalWorkerThreads e AdditionalDelayedWorkerThreads são adicionados aos pools base: no Windows cliente são, respetivamente, 5 critical e 7 delayed workers antes da aplicação do override.

Mais threads não significa menos latência: workers adicionais consomem stack, tempo de scheduler e recursos de cache, e a fila pode estar limitada por outro componente. AdditionalDelayedWorkerThreads=32 acrescenta efetivamente delayed workers, mas não há um ganho universal medido.

DpcCumulativeSoftTimeout limita o tempo acumulado de DPC. DpcWatchdogPeriod=0 é admissível e desativa este watchdog; qualquer valor não nulo abaixo de 2000 torna-se 2000 ms. PassiveWatchdogTimeout só é utilizado com o kernel debugger ativo, pelo que num sistema normal este timer não está ativo mesmo com os 300 segundos padrão. WorkerThreadTimeoutInSeconds limita o bloqueio de uma worker operation.

DpcCumulativeSoftTimeout tem um limite inferior de 2000 ms e não pode exceder DpcWatchdogPeriod. Para obter o valor 240000, o watchdog period também deve ser 240000. WorkerThreadTimeoutInSeconds é normalizado para o intervalo 60..3600 segundos; escrever 0 não desativa o timeout, mas conduz ao valor mínimo.

Desativar o timeout de proteção remove o diagnóstico, mas não corrige a causa do bloqueio. Para um sistema de produção, o watchdog é parte do mecanismo de deteção de drivers defeituosos.

ForceEnableMutantAutoboost encontra-se no ramo Executive, enquanto ForceIdleGracePeriod, PerfIsoEnabled, CacheIsoBitmap, SchedulerAssistThreadFlagOverride, VpThreadSystemWorkPriority e AlwaysTrackIoBoosting são lidos do ramo Kernel. Esta distinção é crítica: uma entrada com o mesmo nome numa subchave vizinha não é aplicada.

CacheIsoBitmap só é utilizado com suporte Intel Resource Director/CAT; sem CAT o valor não cria isolamento. SchedulerAssistThreadFlagOverride=0 e 1 mantêm a ativação automática, 2 desativa forçadamente o ramo. VpThreadSystemWorkPriority admite 1..31, caso contrário é reposto para 1; o default é 30, e 31 é apenas o limite superior. AlwaysTrackIoBoosting=1 ativa allocation e stack-capture diagnósticos nos boost paths, e não mantém a I/O priority elevada.

Utilidade: sem um consumer confirmado, o efeito é habitualmente ausente ou demasiado pequeno para uma decisão prática. Tais valores são úteis como objeto de diagnóstico de kernel específico, e não como um conjunto geral de otimização.

Os defaults verificados 4/3/20/20 coincidem com o estado padrão do Windows 11 25H2. Os workers adicionais são zero por defeito, o limite superior de kernel workers é 4096 com um intervalo de 32..16384. Os parâmetros de watchdog são normalizados: um valor abaixo de 2000 ms torna-se 2000, e DpcCumulativeSoftTimeout não excede o período do watchdog. Os ramos Kernel e Executive não são intercambiáveis.

  • Readers e consumidores dos parâmetros em ntoskrnl.exe da build estudada.
  • Valores por defeito e limites de normalização, incluindo dependências entre parâmetros de watchdog.
  • Separação dos ramos Kernel e Executive: uma entrada com o mesmo nome numa subchave vizinha não é aplicada.
  • O impacto da alteração dos parâmetros nos FPS, na latência ou na capacidade de resposta.
  • A utilidade de alterar os limites sem um problema confirmado na fila DPC ou numa worker.

Não altere estes parâmetros às cegas: sem uma traço ETW/WPR não é possível determinar a causa do backlog. Para um sistema em produção, mantenha o watchdog ativo e utilize os parâmetros para diagnóstico, e não como um conjunto de otimização.

Reponha os valores padrão ou elimine as entradas opcionais. Os parâmetros do kernel são aplicados no arranque seguinte do Windows.

Os readers e consumers foram verificados em ntoskrnl.exe Windows 11 25H2 build 26200.9168. Não são publicados offsets nem pseudocódigo. As métricas finais de utilizador não fizeram parte desta série.

Para saber como repetir a parte dinâmica das observações, consulte Como verificar por si mesmo.

O estudo e as ferramentas utilizadas pertencem ao desenvolvedor do BoosterX, pelo que o desenvolvedor tem um interesse direto nos resultados. A metodologia e os limites de aplicabilidade estão descritos acima, e as conclusões podem ser verificadas através dos dados abertos e das fontes públicas enumeradas.

Fontes públicas verificadas: 2026-09-02.

  • 2026-09-20: a secção «Resultados» foi movida para o local obrigatório antes de «Restauro do estado»; adicionados o aviso de conflito de interesses e a ligação para a verificação independente das observações dinâmicas na metodologia.
  • 2026-09-02: primeira publicação; confirmados readers, defaults e clamps, adicionados os limites de utilidade prática.