Gerenciador de Memória e cache do sistema do 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 arquivos. 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 operação.
DisablePageCombining desativa a combinação de páginas em segundo plano: o gerenciador de memória deixa de executar esse trabalho, mas o consumo de RAM pode aumentar. DisablePagingExecutive mantém o código paginável de drivers na memória física; o benefício geralmente é pequeno. Os demais parâmetros se aplicam apenas a tarefas específicas do kernel ou de unidades de armazenamento, ou já têm valores padrão adequados no 25H2.
O que foi verificado
Seção intitulada “O que foi verificado”Para cada valor, foram verificados:
- o caminho exato no Registro e o tipo;
- o valor padrão definido pelo código do Windows 11 25H2;
- os valores relacionados do mesmo subsistema;
- o código de sistema de leitura e o momento de sua execução;
- as restrições de faixa, 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, verificamos onde o parâmetro é aplicado, quais consequências sua alteração tem e em quais cenários ela pode ser útil. A mera existência do parâmetro não é suficiente para uma recomendação.
Escopo da pesquisa e evidências
Seção intitulada “Escopo da pesquisa 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 de sua aplicação no Memory Manager e no Cache Manager. - Os acessos durante a execução foram verificados por rastreamento de sistema do Registro. As leituras na fase 0 e no início da fase 1 podem estar ausentes em um rastreamento de inicialização comum: o driver de rastreamento começa a gravar mais tarde.
- Para processos de usuário, a leitura do valor foi verificada separadamente em
ntdll.dll. ParaHeapDeCommitFreeBlockThresholdno 25H2, foi encontrada a leitura no kernel, mas os heaps de processos de usuário não usam esse parâmetro. - A análise estática de componentes do sistema não substitui a repetição em um PC físico, em outro build ou em outro tipo de unidade de armazenamento.
Parâmetros canônicos
Seção intitulada “Parâmetros canônicos”| Registry path | Value | Type | Default Windows 11 25H2 | Применение |
|---|---|---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
DisablePagingExecutive |
REG_DWORD |
0 |
Paginação de código paginável de drivers de sistema |
| тот же путь | DisablePageCombining |
REG_DWORD |
0 |
Combinação em segundo plano de páginas físicas idênticas |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager |
HeapDeCommitFreeBlockThreshold |
REG_DWORD |
0x1000 (4 KB) para kernel heap |
Limite de decommit de blocos livres do kernel-mode heap |
| тот же путь | ModifiedWriteMaximum |
REG_DWORD |
1 unidade = 1 MB |
Limite superior do modified page writer após o clamp |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
EnableAsyncLazywrite |
REG_DWORD |
2 |
Modo assíncrono do Cache Manager |
| тот же путь | 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 gerenciador de memória do Windows pode paginar para o armazenamento de reserva as seções de código de sistema e de drivers que permitem isso. Com 1, o código paginável de drivers de sistema é mantido na memória física.
O código de leitura foi encontrado em ntoskrnl.exe em um estágio inicial da inicialização do kernel. O valor é usado em MmResetDriverPaging, MmPageEntireDriver e ao carregar imagens de sistema. Ele é aplicado antes de começar o rastreamento comum de Registro de processos de usuário. Para aplicar o novo estado, é necessário reiniciar.
Valores e restrições
Seção intitulada “Valores e restrições”0: estado padrão do Windows, a paginação é permitida.1: as seções pagináveis de drivers de sistema são mantidas na RAM.- A configuração consome RAM para reduzir carregamentos posteriores de código de sistema de volta à memória; o disco em si não fica mais rápido.
Utilidade
Seção intitulada “Utilidade”A configuração impede a paginação e o carregamento posteriores dessas seções de drivers. Ela não desativa nenhum thread de CPU verificador permanente separado. Em um sistema moderno com RAM suficiente, o benefício geralmente é muito pequeno: o código pode permanecer na memória por muito tempo mesmo sem a configuração. Em caso de falta de RAM, mantê-lo à força agrava a escassez de memória.
A leitura do parâmetro e a direção do efeito no 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 gerenciador de memória inicia uma tarefa em segundo plano que procura e combina páginas físicas idênticas. Com 1, essa 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: a combinação de páginas é permitida, estado padrão do Windows.1: a combinação está desativada.- A desativação reduz o trabalho em segundo plano do gerenciador 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 perceptível e o sistema tiver RAM livre. Normalmente, essa tarefa é pouco ativa, portanto o efeito é muito pequeno. Com volume de memória limitado, a economia de RAM proporcionada pela combinação é mais útil do que o tempo de processador economizado.
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 trade-off entre trabalho de processador e economia de RAM.
HeapDeCommitFreeBlockThreshold
Seção intitulada “HeapDeCommitFreeBlockThreshold”O que faz
Seção intitulada “O que faz”O valor define o limite de liberação de memória alocada (decommit) para um bloco livre do heap do kernel. Com um limite maior, essas operações para blocos livres grandes ocorrem com menos frequência.
No Windows 11 25H2, o código de leitura está em ntoskrnl.exe, e a aplicação do parâmetro está relacionada à função de kernel RtlCreateHeap. Em ntdll.dll, não foi encontrado o código de leitura correspondente para heaps de processos comuns.
Valores e restrições
Seção intitulada “Valores e restrições”- Valor padrão no código para o heap do kernel:
0x1000(4 KB). 0x40000(256 KB) é um limite válido para o heap do kernel.- Documentos históricos da Microsoft descreviam um cenário user-mode de mesmo nome de versões antigas do Windows, portanto ele não pode ser transferido automaticamente para o Windows 11 25H2.
Utilidade
Seção intitulada “Utilidade”Para aplicativos comuns, praticamente não há benefício: seus heaps não usam esse valor. O parâmetro pode alterar a frequência de liberação de memória apenas no heap do kernel. Sem um problema medido especificamente nesse heap, o efeito esperado é muito pequeno.
A leitura em modo kernel foi confirmada em ntoskrnl.exe. O efeito para processos de usuário 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 gravação de páginas modificadas (modified page writer). No código, são usadas unidades de 256 páginas, ou seja, uma unidade equivale a 1 MB.
Normalização no Windows 11 25H2:
0é convertido em1unidade, ou seja, 1 MB;- valores maiores que
0x40são limitados a0x40; - o limite efetivo máximo é de 64 MB, ou 16 384 páginas.
O mecanismo começa a gravação ativa aproximadamente ao atingir um quarto do limite definido. Aumentar o limite altera o momento de início da gravação e o volume de páginas modificadas acumuladas. A velocidade do disco em si não aumenta com isso.
Utilidade
Seção intitulada “Utilidade”Com um limite maior, mais páginas modificadas se acumulam antes do início da gravação ativa. A gravação pode ser iniciada com menos frequência, mas o volume de dados ainda não salvos e o tamanho da próxima leva de gravação aumentam. Se não houver um problema específico de gravação, mantenha o valor padrão. O limite efetivo é restrito a 64 MB.
O código de leitura, as unidades de medida e a restrição de faixa foram confirmados em ntoskrnl.exe. O parâmetro de mesmo nome de documentos antigos da Microsoft sobre BitLocker pertence a outro subsistema; esses documentos não são usados 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 gravação assíncrona adiada do Cache Manager. No código do 25H2, está definido o valor padrão 2: esse modo já está ativado.
Valores relacionados do mesmo subsistema:
| Value | Default 25H2 | Роль |
|---|---|---|
EnableAsyncLazywrite |
2 |
Modo geral de async lazy-write |
EnableAsyncLazywriteMulti |
2 |
Modo multi-volume adjacente |
EnablePerVolumeLazyWriter |
2 |
Lazy writer por volume |
0 desativa a gravação assíncrona adiada. Para 1, é necessário o modo de um manipulador separado de gravação adiada em cada volume. 2 ativa o modo assíncrono sem esse requisito. O Cache Manager relê os valores ao trabalhar com a configuração de volumes.
Utilidade
Seção intitulada “Utilidade”A gravação explícita de 2 repete a configuração padrão do Windows 11 25H2 e não melhora nada adicionalmente. A configuração é adequada principalmente para diagnóstico: o valor 0 permite desativar o mecanismo que funciona por padrão.
A leitura foi observada no rastreamento de sistema e confirmada em ntoskrnl.exe. O valor padrão 2 foi confirmado pelo código e por uma descrição independente dos parâmetros de Registro, elaborada com base em resultados de engenharia reversa.
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 libera as exibições em cache que ficaram para trás da posição atual da leitura sequencial.
O código de leitura e aplicação do parâmetro está em ntoskrnl.exe e é chamado ao mapear e ler o cache. O parâmetro se refere à leitura sequencial de arquivos grandes; ele não desativa todo o cache de arquivos.
Valores e clamp
Seção intitulada “Valores e clamp”0ou um valor maior que128é substituído pelo código por8.- Faixa de operação:
1..128MB. - Default no código:
8MB. - As unidades do Registry value são MB, e não bytes.
Utilidade
Seção intitulada “Utilidade”O parâmetro só faz sentido para tarefas especializadas de leitura sequencial de arquivos grandes. Com uma janela maior, o mapeamento do cache atrás da posição atual é mantido por mais tempo; com uma menor, é liberado mais cedo. Para o uso comum, o valor padrão 8 MB é adequado; o benefício do ajuste manual geralmente é pequeno.
O código de leitura, aplicação e restrição de faixa foi confirmado em ntoskrnl.exe. Não foi encontrada documentação pública moderna da Microsoft para esse 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 retorna 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 está em ntoskrnl.exe. O parâmetro é usado ao processar a relação RelationCache em KeQueryLogicalProcessorRelationship.
Apenas a descrição da topologia retornada pela API do sistema muda. Os blocos físicos de memória alocados não são separados, e a probabilidade de falta de um bloco contíguo não diminui por si só.
Valores e restrições
Seção intitulada “Valores e restrições”0: valor padrão.1: separar as entradas de topologia por grupos de processadores.- O efeito prático é possível principalmente em sistemas com vários grupos de processadores, geralmente com mais de 64 processadores lógicos.
- Em um sistema comum de um único grupo, não há efeito.
Utilidade
Seção intitulada “Utilidade”O parâmetro é necessário apenas para programas que solicitam a topologia de cache em uma máquina com vários grupos de processadores. Ele não altera o funcionamento do cache nem a alocação de memória. Para um computador desktop comum, não há benefício.
O código de leitura e aplicação foi confirmado em ntoskrnl.exe. O valor e a finalidade foram conferidos com a descrição pública da engenharia reversa KiSplitLargeCaches.
Utilidade geral
Seção intitulada “Utilidade geral”| Параметр | Avaliação prática |
|---|---|
DisablePagingExecutive |
Geralmente oferece benefício muito pequeno, mantendo mais código na RAM |
DisablePageCombining |
Útil com carga confirmada de combinação de páginas em segundo plano e grande reserva de RAM |
HeapDeCommitFreeBlockThreshold |
Atua apenas no kernel; para aplicativos comuns, não há benefício prático |
ModifiedWriteMaximum |
Altera as condições de gravação de páginas modificadas; sem um problema identificado, mantenha o valor padrão |
EnableAsyncLazywrite |
O valor padrão 2 já ativa o mecanismo; gravá-lo novamente não melhora nada |
CacheUnmapBehindLengthInMB |
Ajuste de leitura sequencial; os 8 MB padrão são adequados para o uso comum |
SplitLargeCaches |
Altera a descrição da topologia para vários grupos de processadores; em um sistema comum, 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 padrão, código e momento de leitura dos parâmetros indicados acima, bem como as restrições de faixa. Os resultados se referem ao Windows 11 25H2 build 26200.9168. O comportamento pode ser diferente em outra atualização do Windows, volume de RAM, tipo de unidade de armazenamento ou topologia de CPU.
Para saber como repetir a parte dinâmica das observações, consulte Como verificar por conta própria.
Restauração do estado
Seção intitulada “Restauração do estado”Para reverter, restaure os valores padrão dos parâmetros ou exclua as entradas opcionais. Parte dos valores é aplicada na próxima inicialização do Windows.
A pesquisa e as ferramentas usadas nela pertencem ao desenvolvedor do BoosterX, portanto 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 dados abertos e as fontes públicas listadas abaixo.
Fontes públicas
Seção intitulada “Fontes públicas”- Memory combining, Microsoft Learn: finalidade do page combining e trade-off de 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 limite 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 de componentes do sistema do Windows 11 25H2. Código descompilado, offsets, rastreamentos originais e 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 sobre 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 caminhos, defaults, clamps e código de leitura dos parâmetros, adicionados os limites do benefício prático.
