Pular para o conteúdo

MMCSS, DWM e perfil Games no Windows 11 25H2

Nesta página

O MMCSS dá às time-sensitive multimedia tasks acesso prioritário ao CPU, sem as transformar em realtime absoluto. Os perfis Window Manager e Games influenciam a classificação apenas dos threads registados sob o nome de tarefa correspondente. Remover os valores predefinidos não restaura o perfil: ativa valores de fallback mais baixos provenientes do código.

Verificou-se como o MMCSS lê os perfis Window Manager e Games, que valores se aplicam na ausência de entradas e o que altera a mudança de prioridades e do lazy mode.

Windows 11 25H2 build 26200.9168, mmcss.sys e observação em boot-time. O workload concreto, o driver GPU e a latência física não foram medidos.

Análise de mmcss.sys, observação da leitura dos perfis no bootlog e verificação da normalização e dos valores de fallback.

Caminho raiz:

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile

Perfil DWM:

...\Tasks\Window Manager

Perfil de jogos:

...\Tasks\Games

Value Type Window Manager em 25H2 Games em 25H2 Papel confirmado
Scheduling Category REG_SZ Medium Medium Categoria scheduler policy
Priority REG_DWORD 5 2 Prioridade da tarefa no intervalo 1..8
Priority When Yielded REG_DWORD ausente, fallback 16 ausente, fallback 16 Teto após cedência de CPU

Valores da raiz SystemProfile:

Value Type Estado em 25H2 Papel confirmado
LazyModeTimeout REG_DWORD ausente, fallback 1000000 Temporizador do lazy mode em unidades de 100 ns
NoLazyMode REG_DWORD ausente, fallback 0 Desativação do idle detector

mmcss.sys lê Scheduling Category, Priority e Priority When Yielded durante a inicialização dos perfis. Faixas de categorias ativas documentadas: Low — 8..15, Medium — 16..22, High — 23..26. Para High, o valor Priority na faixa ativa é sempre interpretado como 2, pelo que a entrada 6 ou 8 não eleva o perfil High como o número sugere.

No estado limpo da build estudada, o perfil Games tinha Medium/2, e Window Manager — Medium/5. Priority When Yielded estava ausente em ambos, pelo que se aplicava o fallback 16. As combinações High/6/13 e High/8/13 são configurações alteradas, e não Windows defaults. O valor 13 reforça a demotion após cedência de CPU relativamente ao fallback 16.

Utilidade: o perfil descreve a scheduler policy para threads classificados. A própria elevação da categoria não prova uma melhoria do workload final; pode aumentar a competição pelo CPU.

LazyModeTimeout é medido em unidades de 100 ns. O fallback 1000000 é igual a 100 ms; 10000 é igual a 1 ms. O zero é substituído pelo fallback, não existe clamp superior no reader verificado. NoLazyMode é booleano: 0 mantém o idle detector ativo, qualquer valor não nulo desativa-o. Com NoLazyMode ativo, o caminho LazyModeTimeout é praticamente inatingível, pelo que estas definições não podem ser avaliadas de forma independente.

Utilidade: reduzir o timeout acelera o período do lazy scheduler, mas não aumenta a prioridade dos threads ativos. NoLazyMode=1 remove o idle-demotion path, mas não anula Priority When Yielded e mantém o MMCSS no ciclo completo, aumentando a atividade em segundo plano.

mmcss.sys lê o root e os task profiles no arranque do serviço/driver. No bootlog observaram-se acessos a NoLazyMode e aos perfis; para os valores ausentes registava-se NAME NOT FOUND, após o que se aplicava o default do código. Esta é a forma normal de funcionamento da configuração do Registry.

  • Valores Medium/5 para Window Manager e Medium/2 para Games na configuração limpa do 25H2.
  • Fallback Low/1 na ausência de Scheduling Category e Priority, bem como 16 para Priority When Yielded.
  • Limites das categorias e interpretação de Priority para High.
  • Unidades e fallback LazyModeTimeout, comportamento booleano de NoLazyMode.
  • O impacto dos perfis nos FPS, frametime e latência física.
  • A utilidade de alterar prioridades para jogos e aplicações concretos.

Para um sistema normal, mantenha os Medium/5 e Medium/2 predefinidos. Para um regresso exato, não se podem remover Scheduling Category e Priority: o fallback na ausência é igual a Low/1, ou seja, o perfil ficará mais fraco do que o predefinido. O regresso é feito escrevendo explicitamente o par predefinido e removendo o Priority When Yielded opcional.

O resultado refere-se ao Windows 11 25H2 build 26200.9168; o workload concreto, o GPU driver e a latência física não foram medidos neste artigo.

Para saber como repetir a parte dinâmica das observações — ver Como verificar por conta própria.

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: adicionado o aviso sobre o 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; confirmadas a leitura dos perfis, os defaults e os valores de fallback, adicionados os limites do efeito prático.