DPC e Kernel Executive workers no Windows 11 25H2
Nesta página
Resposta curta
Seção intitulada “Resposta curta”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.
O que foi verificado
Seção intitulada “O que foi verificado”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.
Âmbito do estudo
Seção intitulada “Âmbito do estudo”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.
Metodologia
Seção intitulada “Metodologia”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 canónico e valores
Seção intitulada “Caminho canónico e valores”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.
DPC queue e rates
Seção intitulada “DPC queue e rates”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.
Thread DPC e worker limits
Seção intitulada “Thread DPC e worker limits”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.
Watchdog e timeout
Seção intitulada “Watchdog e timeout”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.
Kernel Executive policy
Seção intitulada “Kernel Executive policy”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.
Resultados
Seção intitulada “Resultados”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.
O que foi confirmado
Seção intitulada “O que foi confirmado”- Readers e consumidores dos parâmetros em
ntoskrnl.exeda build estudada. - Valores por defeito e limites de normalização, incluindo dependências entre parâmetros de watchdog.
- Separação dos ramos
KerneleExecutive: uma entrada com o mesmo nome numa subchave vizinha não é aplicada.
O que não foi confirmado
Seção intitulada “O que não foi confirmado”- 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.
Conclusão prática
Seção intitulada “Conclusão prática”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.
Restauro do estado
Seção intitulada “Restauro do estado”Reponha os valores padrão ou elimine as entradas opcionais. Os parâmetros do kernel são aplicados no arranque seguinte do Windows.
Fontes e limitações
Seção intitulada “Fontes e limitações”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.
- DPCs and threads, Microsoft Learn, verificado em 2026-09-01.
- Bug checks 0x133 DPC_WATCHDOG_VIOLATION, Microsoft Learn, verificado em 2026-09-01.
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.
Histórico de alterações
Seção intitulada “Histórico de alterações”- 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.
