Pular para o conteúdo

DPC e workers do Kernel Executive no Windows 11 25H2

Nesta página

O grupo DpcQueueDepth, os worker limits e os parâmetros de watchdog costumam ser vistos como um conjunto de latency tweaks universais. Na prática, são limites internos e mecanismos de proteção do kernel. Seu efeito só se manifesta diante de uma fila DPC específica, de uma determinada quantidade de processadores, de um tipo de driver ou de um erro de worker.

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

Windows 11 25H2 build 26200.9168, branches Session Manager\Kernel e Session Manager\Executive. Funções dependentes de hardware e drivers específicos não fizeram parte das medições.

Análise estática de ntoskrnl.exe: busca de readers e consumidores, verificação de faixas e normalização de valores; conferência 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 pesquisada soft budget acumulado
PassiveWatchdogTimeout REG_DWORD 300 segundos watchdog de passive-level em KD
ForceIdleGracePeriod REG_DWORD 5 segundos force-idle grace period
PerfIsoEnabled REG_DWORD 0 performance isolation
CacheIsoBitmap REG_DWORD 0 máscara Intel CAT L3
SchedulerAssistThreadFlagOverride REG_DWORD 0 override do scheduler assist
VpThreadSystemWorkPriority REG_DWORD 30, faixa 1..31 prioridade de trabalho do virtual processor
AlwaysTrackIoBoosting REG_DWORD 0 rastreamento 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 workers críticos 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 branches de configuração diferentes. Para cada valor, importa o caminho que o reader do kernel abre nessa build.

O kernel usa 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; regravar esses números não muda nada.

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

ThreadDpcEnable=1 habilita a infraestrutura de threaded-DPC, 0 devolve o trabalho ao caminho DIRQL normal e pode alongar as janelas de interrupt-off. MaximumKernelWorkerThreads limita o pool geral de kernel workers. AdditionalCriticalWorkerThreads e AdditionalDelayedWorkerThreads são somados aos pools base: no Windows cliente, são respectivamente 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 de fato adiciona delayed workers, mas não há ganho universal medido.

DpcCumulativeSoftTimeout limita o tempo acumulado de DPC. DpcWatchdogPeriod=0 é aceitável e desliga esse watchdog; qualquer valor diferente de zero abaixo de 2000 torna-se 2000 ms. PassiveWatchdogTimeout é usado apenas com o kernel debugger habilitado, portanto em um sistema comum esse timer não fica ativo mesmo com os 300 segundos padrão. WorkerThreadTimeoutInSeconds limita o travamento de uma worker operation.

DpcCumulativeSoftTimeout tem 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 a faixa de 60..3600 segundos; gravar 0 não desliga o timeout, mas leva ao valor mínimo.

Desligar 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 faz parte do mecanismo de detecção de drivers defeituosos.

ForceEnableMutantAutoboost está no branch Executive, enquanto ForceIdleGracePeriod, PerfIsoEnabled, CacheIsoBitmap, SchedulerAssistThreadFlagOverride, VpThreadSystemWorkPriority e AlwaysTrackIoBoosting são lidos do branch Kernel. Essa diferença é crítica: uma entrada de mesmo nome na subchave vizinha não é aplicada.

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

Utilidade: sem um consumidor confirmado, o efeito geralmente está ausente ou é pequeno demais para uma decisão prática. Tais valores são úteis como objeto de um diagnóstico de kernel separado, 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 iguais a zero por padrão, o limite superior de kernel workers é 4096 com faixa 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 branches Kernel e Executive não são intercambiáveis.

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

Não altere esses parâmetros às cegas: sem uma traço ETW/WPR, a causa do backlog não pode ser determinada. Para um sistema em uso, mantenha o watchdog ativado e use os parâmetros para diagnóstico, não como um conjunto de otimização.

Retorne os valores padrão ou remova as entradas opcionais. Os parâmetros de kernel são aplicados na próxima inicialização do Windows.

Readers e consumers foram verificados em ntoskrnl.exe Windows 11 25H2 build 26200.9168. Offsets ou pseudocódigo não são publicados. Métricas finais de usuário não fizeram parte desta série.

Para saber como reproduzir a parte dinâmica das observações, consulte Como verificar por conta própria.

A pesquisa e as ferramentas utilizadas pertencem ao desenvolvedor do BoosterX, portanto o desenvolvedor tem interesse direto nos resultados. A metodologia e os limites de aplicabilidade estão descritos acima, e as conclusões podem ser verificadas pelos dados abertos e pelas fontes públicas listadas.

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

  • 2026-09-20: a seção «Resultados» foi movida para o local obrigatório antes de «Restauração do estado»; adicionados o aviso de conflito de interesses e o link 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.