Gestor de Memória e cache do sistema Windows: paging, page combining e lazy write
Nesta página
Resposta curta
Seção intitulada “Resposta curta”Nesta série foram verificados sete parâmetros de paginação, combinação de páginas idênticas, heaps do kernel e cache de ficheiros. No Windows 11 25H2 foi encontrado o código de leitura de cada um deles. O benefício prático depende do parâmetro e das condições de funcionamento.
DisablePageCombining desativa a combinação de páginas em segundo plano: o gestor de memória deixa de realizar este trabalho, mas o consumo de RAM pode aumentar. DisablePagingExecutive mantém o código paginável dos controladores na memória física; o benefício é geralmente reduzido. Os restantes parâmetros aplicam-se apenas a tarefas específicas do kernel ou dos dispositivos de armazenamento, ou já têm valores predefinidos adequados no 25H2.
O que foi verificado
Seção intitulada “O que foi verificado”Para cada valor foram verificados:
- o caminho exato no Registry e o tipo;
- o valor predefinido definido pelo código do Windows 11 25H2;
- os valores relacionados do mesmo subsistema;
- o código de sistema de leitura e o momento da sua execução;
- as restrições de intervalo, a conversão de valores e as unidades de medida;
- o efeito direto e os limites de aplicabilidade.
Além do código de leitura, verificámos onde o parâmetro é aplicado, que consequências tem a sua alteração e em que cenários pode ser útil. A mera existência do parâmetro não é suficiente para uma recomendação.
Âmbito do estudo e evidências
Seção intitulada “Âmbito do estudo e evidências”- Windows 11 25H2 x64, build
26200.9168. - Os parâmetros do kernel foram comparados com a tabela principal de configuração
ntoskrnl.exee com o código da sua aplicação no Memory Manager e no Cache Manager. - Os acessos durante o funcionamento foram verificados com a traçagem de sistema do Registry. As leituras na fase 0 e no início da fase 1 podem estar ausentes numa traçagem de arranque normal: o controlador de traçagem começa a gravar mais tarde.
- Para os processos de utilizador foi verificada separadamente a leitura do valor em
ntdll.dll. ParaHeapDeCommitFreeBlockThresholdno 25H2 foi encontrada a leitura no kernel, mas os heaps dos processos de utilizador não utilizam este parâmetro. - A análise estática dos componentes do sistema não substitui a repetição num PC físico, noutra build ou noutro tipo de dispositivo de armazenamento.
Parâmetros canónicos
Seção intitulada “Parâmetros canónicos”| Registry path | Value | Type | Default Windows 11 25H2 | Aplicação |
|---|---|---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
DisablePagingExecutive |
REG_DWORD |
0 |
Paginação de código paginável dos controladores de sistema |
| o mesmo caminho | DisablePageCombining |
REG_DWORD |
0 |
Combinação de páginas físicas idênticas em segundo plano |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager |
HeapDeCommitFreeBlockThreshold |
REG_DWORD |
0x1000 (4 KB) para kernel heap |
Limiar de decommit de blocos livres do kernel-mode heap |
| o mesmo caminho | ModifiedWriteMaximum |
REG_DWORD |
1 unidade = 1 MB |
Limite superior do modified page writer após clamp |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
EnableAsyncLazywrite |
REG_DWORD |
2 |
Modo assíncrono do Cache Manager |
| o mesmo caminho | CacheUnmapBehindLengthInMB |
REG_DWORD |
8 MB |
Janela de unmap atrás da leitura sequencial |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel |
SplitLargeCaches |
REG_DWORD |
0 |
Representação da cache topology entre processor groups |
DisablePagingExecutive
Seção intitulada “DisablePagingExecutive”O que faz
Seção intitulada “O que faz”Com 0, o gestor de memória do Windows pode paginar para armazenamento de reserva as secções de código de sistema e de controladores que o permitam. Com 1, o código paginável dos controladores de sistema é mantido na memória física.
O código de leitura foi encontrado em ntoskrnl.exe numa fase inicial da inicialização do kernel. O valor é utilizado em MmResetDriverPaging, MmPageEntireDriver e ao carregar imagens de sistema. É aplicado antes de começar a traçagem normal do Registry pelo utilizador. Para aplicar o novo estado é necessário reiniciar.
Valores e restrições
Seção intitulada “Valores e restrições”0: estado normal do Windows, paginação permitida.1: as secções pagináveis dos controladores de sistema são mantidas na RAM.- A definição consome RAM para reduzir os carregamentos subsequentes de código de sistema de volta para a memória; o disco em si não fica mais rápido.
Utilidade
Seção intitulada “Utilidade”A definição impede a paginação e o carregamento subsequentes dessas secções dos controladores. Não desativa nenhum thread de CPU permanente de verificação. Num sistema moderno com RAM suficiente, o benefício é geralmente muito reduzido: o código pode permanecer muito tempo na memória mesmo sem a definição. Com RAM insuficiente, a sua retenção forçada agrava a escassez de memória.
A leitura do parâmetro e a direção do efeito de sistema foram confirmadas pelo código ntoskrnl.exe.
DisablePageCombining
Seção intitulada “DisablePageCombining”O que faz
Seção intitulada “O que faz”Com 0, o gestor de memória inicia uma tarefa em segundo plano que procura e combina páginas físicas idênticas. Com 1, esta tarefa não realiza a combinação.
Em ntoskrnl.exe foi encontrado o código de combinação de páginas em segundo plano com a pool tag MmCb, o que confirma a existência do mecanismo.
Valores e restrições
Seção intitulada “Valores e restrições”0: combinação de páginas permitida, estado normal do Windows.1: combinação desativada.- A desativação reduz o trabalho em segundo plano do gestor de memória, mas pode aumentar o consumo de RAM.
Utilidade
Seção intitulada “Utilidade”A desativação é útil se a combinação de páginas criar uma carga em segundo plano notória e o sistema tiver RAM livre. Normalmente esta tarefa é pouco ativa, pelo que o efeito é muito reduzido. Com volume de memória limitado, a poupança de RAM da combinação é mais útil do que o tempo de processador poupado.
O código de leitura e da tarefa em segundo plano foi confirmado em ntoskrnl.exe. A Microsoft descreve a combinação de páginas e o compromisso entre trabalho do processador e poupança de RAM.
HeapDeCommitFreeBlockThreshold
Seção intitulada “HeapDeCommitFreeBlockThreshold”O que faz
Seção intitulada “O que faz”O valor define o limiar de libertação de memória alocada (decommit) para um bloco livre do heap do kernel. Com um limiar maior, estas operações para blocos livres grandes ocorrem com menos frequência.
No Windows 11 25H2, o código de leitura encontra-se em ntoskrnl.exe, e a aplicação do parâmetro está associada à função de kernel RtlCreateHeap. Em ntdll.dll não foi encontrado o código de leitura correspondente para os heaps dos processos normais.
Valores e restrições
Seção intitulada “Valores e restrições”- Valor predefinido no código para o heap do kernel:
0x1000(4 KB). 0x40000(256 KB) é um limiar admissível para o heap do kernel.- Documentos históricos da Microsoft descreviam um cenário user-mode com o mesmo nome de versões antigas do Windows, pelo que não pode ser automaticamente transposto para o Windows 11 25H2.
Utilidade
Seção intitulada “Utilidade”Para as aplicações normais, praticamente não há benefício: os seus heaps não utilizam este valor. O parâmetro só pode alterar a frequência de libertação de memória no heap do kernel. Sem um problema medido precisamente nesse heap, o efeito esperado é muito reduzido.
A leitura em modo kernel foi confirmada em ntoskrnl.exe. O efeito para os processos de utilizador no 25H2 não foi confirmado.
ModifiedWriteMaximum
Seção intitulada “ModifiedWriteMaximum”O que faz
Seção intitulada “O que faz”O parâmetro define o limite superior para o mecanismo de escrita de páginas modificadas (modified page writer). No código são utilizadas unidades de 256 páginas, ou seja, uma unidade é igual a 1 MB.
Normalização no Windows 11 25H2:
0é convertido em1unidade, ou seja, 1 MB;- os valores superiores a
0x40são limitados a0x40; - o limite efetivo máximo é de 64 MB, ou 16 384 páginas.
O mecanismo começa a escrita ativa aproximadamente ao atingir um quarto do limite definido. Aumentar o limite altera o momento de início da escrita e o volume de páginas modificadas acumuladas. A velocidade do próprio disco não aumenta com isso.
Utilidade
Seção intitulada “Utilidade”Com um limite maior, acumulam-se mais páginas modificadas antes do início da escrita ativa. A escrita pode iniciar-se com menos frequência, mas o volume de dados ainda não guardados e o tamanho da porção seguinte de escrita aumentam. Se não houver um problema concreto com a escrita, mantenha o valor predefinido. O limite efetivo está restringido a 64 MB.
O código de leitura, as unidades de medida e a restrição de intervalo foram confirmados em ntoskrnl.exe. O parâmetro com o mesmo nome dos documentos antigos da Microsoft sobre o BitLocker pertence a outro subsistema; esses documentos não são utilizados aqui como fonte.
EnableAsyncLazywrite e valores relacionados
Seção intitulada “EnableAsyncLazywrite e valores relacionados”O que faz
Seção intitulada “O que faz”EnableAsyncLazywrite controla a escrita assíncrona diferida do Cache Manager. No código do 25H2 está definido o valor predefinido 2: este modo já está ativado.
Valores relacionados do mesmo subsistema:
| Value | Default 25H2 | Papel |
|---|---|---|
EnableAsyncLazywrite |
2 |
Modo geral async lazy-write |
EnableAsyncLazywriteMulti |
2 |
Modo multi-volume adjacente |
EnablePerVolumeLazyWriter |
2 |
Per-volume lazy writer |
0 desativa a escrita assíncrona diferida. Para 1 é necessário o modo de processador de escrita diferida separado em cada volume. 2 ativa o modo assíncrono sem este requisito. O Cache Manager relê os valores ao trabalhar com a configuração de volumes.
Utilidade
Seção intitulada “Utilidade”A escrita explícita de 2 repete a configuração normal do Windows 11 25H2 e não melhora nada adicionalmente. A definição é adequada sobretudo para diagnóstico: o valor 0 permite desativar o mecanismo ativo por predefinição.
A leitura foi observada na traçagem de sistema e confirmada em ntoskrnl.exe. O valor predefinido 2 foi confirmado pelo código e por uma descrição independente dos parâmetros do Registry, elaborada com base em resultados de engenharia inversa.
CacheUnmapBehindLengthInMB
Seção intitulada “CacheUnmapBehindLengthInMB”O que faz
Seção intitulada “O que faz”O parâmetro define a distância em megabytes após a qual o Cache Manager liberta as vistas em cache que ficaram atrás da posição atual de leitura sequencial.
O código de leitura e de aplicação do parâmetro encontra-se em ntoskrnl.exe e é chamado ao mapear e ler a cache. O parâmetro refere-se à leitura sequencial de ficheiros grandes; não desativa toda a cache de ficheiros.
Valores e clamp
Seção intitulada “Valores e clamp”0ou um valor superior a128é substituído pelo código por8.- Intervalo de funcionamento:
1..128MB. - Default no código:
8MB. - As unidades do Registry value são precisamente MB, e não bytes.
Utilidade
Seção intitulada “Utilidade”O parâmetro só faz sentido para tarefas especializadas de leitura sequencial de ficheiros grandes. Com uma janela maior, o mapeamento da cache atrás da posição atual mantém-se durante mais tempo; com uma janela menor, é libertado mais cedo. Para o funcionamento normal, o valor predefinido 8 MB é adequado; o benefício da definição manual é geralmente reduzido.
O código de leitura, de aplicação e de restrição de intervalo foi confirmado em ntoskrnl.exe. Não foi encontrada documentação pública moderna da Microsoft para este parâmetro interno.
SplitLargeCaches
Seção intitulada “SplitLargeCaches”O que faz
Seção intitulada “O que faz”Com 0, a API de descrição da topologia de cache devolve uma única entrada para a estrutura correspondente que abrange vários grupos de processadores. Com 1, as entradas são separadas por grupos de processadores.
O código de leitura encontra-se em ntoskrnl.exe. O parâmetro é utilizado no processamento da relação RelationCache em KeQueryLogicalProcessorRelationship.
Apenas muda a descrição da topologia que a API de sistema devolve. Os blocos físicos de memória alocados não são separados, e a probabilidade de escassez de um bloco contíguo não diminui por si só.
Valores e restrições
Seção intitulada “Valores e restrições”0: valor predefinido.1: separar as entradas de topologia por grupos de processadores.- O efeito prático é possível sobretudo em sistemas com vários grupos de processadores, normalmente com mais de 64 processadores lógicos.
- Num sistema normal de um único grupo, o efeito está ausente.
Utilidade
Seção intitulada “Utilidade”O parâmetro só é necessário para programas que consultam a topologia de cache numa máquina com vários grupos de processadores. Não altera o funcionamento da cache nem a alocação de memória. Para um computador de secretária normal, não há benefício.
O código de leitura e de aplicação foi confirmado em ntoskrnl.exe. O valor e a finalidade foram verificados com a descrição pública de engenharia inversa KiSplitLargeCaches.
Utilidade geral
Seção intitulada “Utilidade geral”| Parâmetro | Avaliação prática |
|---|---|
DisablePagingExecutive |
Geralmente dá um benefício muito reduzido, mantendo mais código na RAM |
DisablePageCombining |
Útil com uma carga confirmada de combinação de páginas em segundo plano e uma grande reserva de RAM |
HeapDeCommitFreeBlockThreshold |
Atua apenas no kernel; para as aplicações normais não há benefício prático |
ModifiedWriteMaximum |
Altera as condições de escrita das páginas modificadas; sem um problema identificado, mantenha o valor predefinido |
EnableAsyncLazywrite |
O valor predefinido 2 já ativa o mecanismo; a escrita repetida não melhora nada |
CacheUnmapBehindLengthInMB |
Definição de leitura sequencial; os 8 MB predefinidos são adequados para o funcionamento normal |
SplitLargeCaches |
Altera a descrição da topologia para vários grupos de processadores; num sistema normal não há efeito |
O que foi confirmado e o que não foi medido
Seção intitulada “O que foi confirmado e o que não foi medido”Foram confirmados os caminhos, tipos, valores predefinidos, código e momento de leitura dos parâmetros acima indicados, bem como as restrições de intervalos. Os resultados referem-se ao Windows 11 25H2 build 26200.9168. O comportamento pode ser diferente com outra atualização do Windows, volume de RAM, tipo de dispositivo de armazenamento ou topologia de CPU.
Para saber como repetir a parte dinâmica das observações — consulte Como verificar por si mesmo.
Restauro do estado
Seção intitulada “Restauro do estado”Para reverter, reponha os valores predefinidos dos parâmetros ou elimine as entradas opcionais. Alguns valores são aplicados no arranque seguinte do Windows.
O estudo e as ferramentas nele 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 neste artigo; as conclusões podem ser verificadas com os dados abertos e as fontes públicas indicadas abaixo.
Fontes públicas
Seção intitulada “Fontes públicas”- Memory combining, Microsoft Learn: finalidade do page combining e trade-off CPU/RAM, verificado em 2026-09-01.
- Registry key that controls device driver and system code pagination to disk, Microsoft archive: semântica de
DisablePagingExecutive, verificado em 2026-09-01. - HeapDeCommitFreeBlockThreshold, KB315407, documentação histórica da Microsoft: antigo cenário user-mode e limiar de 256 KB, verificado em 2026-09-01.
- Windows system configuration descriptions, descrição pública de RE
SplitLargeCaches, verificado em 2026-09-01.
As afirmações sobre o código foram verificadas por análise estática dos componentes do sistema do Windows 11 25H2. O código descompilado, os deslocamentos, as traçagens originais e os materiais internos não são publicados.
Fontes públicas verificadas: 2026-09-02.
Histórico de alterações
Seção intitulada “Histórico de alterações”- 2026-09-20: adicionado o aviso de conflito de interesses e a ligação para a verificação autónoma das observações dinâmicas na metodologia.
- 2026-09-02: primeira publicação; confirmados os caminhos, defaults, clamps e o código de leitura dos parâmetros, adicionados os limites do benefício prático.
