Ir al contenido

Administrador de memoria y caché del sistema de Windows: paginación, combinación de páginas y escritura diferida

En esta página

En esta serie se comprobaron siete parámetros de paginación, combinación de páginas idénticas, montones del kernel y caché de archivos. En Windows 11 25H2 se encontró el código de lectura de cada uno de ellos. La utilidad práctica depende del parámetro y de las condiciones de funcionamiento.

DisablePageCombining desactiva la combinación de páginas en segundo plano: el administrador de memoria deja de realizar esta tarea, pero el consumo de RAM puede aumentar. DisablePagingExecutive mantiene el código de controladores paginable en la memoria física; la utilidad suele ser escasa. Los demás parámetros solo son aplicables a tareas concretas del kernel o de los dispositivos de almacenamiento, o ya tienen valores predeterminados adecuados en 25H2.

Para cada valor se comprobó:

  1. la ruta exacta en el Registro y el tipo;
  2. el valor predeterminado definido por el código de Windows 11 25H2;
  3. los valores relacionados del mismo subsistema;
  4. el código de lectura del sistema y el momento de su ejecución;
  5. las restricciones de rango, la conversión de valores y las unidades de medida;
  6. el efecto directo y los límites de aplicabilidad.

Además del código de lectura, comprobamos dónde se aplica el parámetro, qué consecuencias tiene su modificación y en qué escenarios puede ser útil. La mera existencia del parámetro no basta para recomendarlo.

  • Windows 11 25H2 x64, build 26200.9168.
  • Los parámetros del kernel se cotejaron con la tabla principal de configuración ntoskrnl.exe y con el código de su aplicación en Memory Manager y Cache Manager.
  • Los accesos durante el funcionamiento se comprobaron mediante el seguimiento del Registro del sistema. Las lecturas en la fase 0 y al inicio de la fase 1 pueden faltar en un seguimiento de arranque normal: el controlador de seguimiento empieza a registrar más tarde.
  • Para los procesos de usuario se comprobó por separado la lectura del valor en ntdll.dll. Para HeapDeCommitFreeBlockThreshold en 25H2 se encontró la lectura en el kernel, pero los montones de los procesos de usuario no usan este parámetro.
  • El análisis estático de los componentes del sistema no sustituye la repetición en un PC físico, otra build u otro tipo de dispositivo de almacenamiento.
Registry path Value Type Default Windows 11 25H2 Применение
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management DisablePagingExecutive REG_DWORD 0 Paginación del código paginable de los controladores del sistema
тот же путь DisablePageCombining REG_DWORD 0 Combinación en 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 Umbral de decommit de bloques libres del kernel-mode heap
тот же путь ModifiedWriteMaximum REG_DWORD 1 unidad = 1 MB Límite superior del modified page writer tras el clamp
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management EnableAsyncLazywrite REG_DWORD 2 Modo asíncrono de Cache Manager
тот же путь CacheUnmapBehindLengthInMB REG_DWORD 8 MB Ventana de unmap por detrás de la lectura secuencial
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel SplitLargeCaches REG_DWORD 0 Representación de la cache topology entre processor groups

Con 0 el administrador de memoria de Windows puede descargar a almacenamiento de reserva las secciones de código del sistema y de controladores que lo permitan. Con 1 el código paginable de los controladores del sistema se mantiene en la memoria física.

El código de lectura se encontró en ntoskrnl.exe en una etapa temprana de la inicialización del kernel. El valor se usa en MmResetDriverPaging, MmPageEntireDriver y al cargar imágenes del sistema. Se aplica antes de que comience el seguimiento normal del Registro por parte del usuario. Para aplicar el nuevo estado se requiere un reinicio.

  • 0: estado estándar de Windows, la paginación está permitida.
  • 1: las secciones paginables de los controladores del sistema se mantienen en la RAM.
  • El ajuste consume RAM para reducir las cargas posteriores del código del sistema de vuelta a la memoria; el disco en sí no se vuelve más rápido.

El ajuste evita la descarga y carga posteriores de estas secciones de controladores. No desactiva ningún hilo de CPU comprobador permanente independiente. En un sistema moderno con suficiente volumen de RAM la utilidad suele ser muy escasa: el código puede permanecer mucho tiempo en memoria incluso sin el ajuste. Cuando falta RAM, su retención forzada agrava el déficit de memoria.

La lectura del parámetro y la dirección del efecto del sistema están confirmadas por el código de ntoskrnl.exe.

Con 0 el administrador de memoria inicia una tarea en segundo plano que busca y combina páginas físicas idénticas. Con 1 esta tarea no realiza la combinación.

En ntoskrnl.exe se encontró el código de combinación de páginas en segundo plano con la etiqueta de pool MmCb, lo que confirma la existencia del mecanismo.

  • 0: la combinación de páginas está permitida, estado estándar de Windows.
  • 1: la combinación está desactivada.
  • La desactivación reduce el trabajo en segundo plano del administrador de memoria, pero puede aumentar el consumo de RAM.

La desactivación es útil si la combinación de páginas crea una carga en segundo plano notable y el sistema tiene RAM libre. Normalmente esta tarea es poco activa, por lo que el efecto es muy pequeño. Con un volumen de memoria limitado, el ahorro de RAM de la combinación es más útil que el tiempo de procesador ahorrado.

El código de lectura y de la tarea en segundo plano está confirmado en ntoskrnl.exe. Microsoft describe la combinación de páginas y el compromiso entre el trabajo del procesador y el ahorro de RAM.

El valor define el umbral de liberación de memoria asignada (decommit) para un bloque libre del montón del kernel. Con un umbral mayor, estas operaciones para bloques libres grandes ocurren con menos frecuencia.

En Windows 11 25H2 el código de lectura se encuentra en ntoskrnl.exe, y la aplicación del parámetro está relacionada con la función del kernel RtlCreateHeap. En ntdll.dll no se encontró el código de lectura correspondiente para los montones de procesos normales.

  • Valor predeterminado en el código para el montón del kernel: 0x1000 (4 KB).
  • 0x40000 (256 KB) es un umbral admisible para el montón del kernel.
  • Documentos históricos de Microsoft describían un escenario user-mode del mismo nombre de versiones antiguas de Windows, por lo que no se puede trasladar automáticamente a Windows 11 25H2.

Para las aplicaciones normales prácticamente no hay utilidad: sus montones no usan este valor. El parámetro solo puede cambiar la frecuencia de liberación de memoria en el montón del kernel. Sin un problema medido precisamente con él, el efecto esperado es muy pequeño.

La lectura en modo kernel está confirmada en ntoskrnl.exe. El efecto para los procesos de usuario en 25H2 no está confirmado.

El parámetro define el límite superior para el mecanismo de escritura de páginas modificadas (modified page writer). En el código se usan unidades de 256 páginas, es decir, una unidad equivale a 1 MB.

Normalización en Windows 11 25H2:

  • 0 se convierte en 1 unidad, es decir, 1 MB;
  • los valores mayores que 0x40 se limitan a 0x40;
  • el límite efectivo máximo es de 64 MB, o 16 384 páginas.

El mecanismo comienza la escritura activa aproximadamente al alcanzar una cuarta parte del límite definido. Aumentar el límite cambia el momento de inicio de la escritura y el volumen de páginas modificadas acumuladas. La velocidad del disco en sí no aumenta por ello.

Con un límite mayor se acumulan más páginas modificadas antes del inicio de la escritura activa. La escritura puede iniciarse con menos frecuencia, pero crecen el volumen de datos aún no guardados y el tamaño de la siguiente porción de escritura. Si no hay un problema concreto con la escritura, deje el valor predeterminado. El límite efectivo está restringido a 64 MB.

El código de lectura, las unidades de medida y la restricción de rango están confirmados en ntoskrnl.exe. El parámetro del mismo nombre de documentos antiguos de Microsoft sobre BitLocker pertenece a otro subsistema; estos documentos no se usan aquí como fuente.

EnableAsyncLazywrite controla la escritura diferida asíncrona de Cache Manager. En el código de 25H2 está definido el valor predeterminado 2: este modo ya está activado.

Valores relacionados del mismo subsistema:

Value Default 25H2 Роль
EnableAsyncLazywrite 2 Modo async lazy-write general
EnableAsyncLazywriteMulti 2 Modo multi-volume adyacente
EnablePerVolumeLazyWriter 2 Per-volume lazy writer

0 desactiva la escritura diferida asíncrona. Para 1 se requiere el modo de un controlador de escritura diferida independiente en cada volumen. 2 activa el modo asíncrono sin este requisito. Cache Manager relee los valores al trabajar con la configuración de volúmenes.

La escritura explícita de 2 repite la configuración estándar de Windows 11 25H2 y no mejora nada adicionalmente. El ajuste es adecuado ante todo para diagnóstico: el valor 0 permite desactivar el mecanismo activo por defecto.

La lectura se observó en el seguimiento del sistema y está confirmada en ntoskrnl.exe. El valor predeterminado 2 está confirmado por el código y por una descripción independiente de los parámetros del Registro elaborada a partir de resultados de ingeniería inversa.

El parámetro define la distancia en megabytes tras la cual Cache Manager libera las vistas en caché que quedaron por detrás de la posición actual de lectura secuencial.

El código de lectura y aplicación del parámetro se encuentra en ntoskrnl.exe y se invoca al mapear y leer la caché. El parámetro se refiere a la lectura secuencial de archivos grandes; no desactiva toda la caché de archivos.

  • 0 o un valor mayor que 128 es sustituido por el código por 8.
  • Rango de trabajo: 1..128 MB.
  • Default del código: 8 MB.
  • Las unidades del Registry value son precisamente MB, no bytes.

El parámetro solo tiene sentido para tareas especializadas de lectura secuencial de archivos grandes. Con una ventana mayor, el mapeo de la caché por detrás de la posición actual se conserva más tiempo; con una menor, se libera antes. Para el trabajo normal es adecuado el valor estándar 8 MB; la utilidad del ajuste manual suele ser escasa.

El código de lectura, aplicación y restricción de rango está confirmado en ntoskrnl.exe. No se encontró documentación pública moderna de Microsoft para este parámetro interno.

Con 0 la API de descripción de la topología de caché devuelve una única entrada para la estructura correspondiente que abarca varios grupos de procesadores. Con 1 las entradas se dividen por grupos de procesadores.

El código de lectura se encuentra en ntoskrnl.exe. El parámetro se usa al procesar la relación RelationCache en KeQueryLogicalProcessorRelationship.

Solo cambia la descripción de la topología que devuelve la API del sistema. Los bloques físicos de memoria asignados no se dividen, y la probabilidad de falta de un bloque contiguo por sí sola no disminuye.

  • 0: valor predeterminado.
  • 1: dividir las entradas de topología por grupos de procesadores.
  • El efecto práctico es posible ante todo en sistemas con varios grupos de procesadores, normalmente con más de 64 procesadores lógicos.
  • En un sistema normal de un solo grupo no hay efecto.

El parámetro solo es necesario para programas que solicitan la topología de caché en una máquina con varios grupos de procesadores. No cambia el funcionamiento de la caché ni la asignación de memoria. Para un ordenador de sobremesa normal no hay utilidad.

El código de lectura y aplicación está confirmado en ntoskrnl.exe. El valor y la finalidad se cotejaron con la descripción pública de ingeniería inversa KiSplitLargeCaches.

Параметр Практическая оценка
DisablePagingExecutive Normalmente aporta muy poca utilidad, manteniendo más código en RAM
DisablePageCombining Útil con una carga confirmada de combinación de páginas en segundo plano y un gran margen de RAM
HeapDeCommitFreeBlockThreshold Actúa solo en el kernel; para las aplicaciones normales no hay utilidad práctica
ModifiedWriteMaximum Cambia las condiciones de escritura de las páginas modificadas; sin un problema detectado deje el valor estándar
EnableAsyncLazywrite El valor estándar 2 ya activa el mecanismo; la escritura repetida no mejora nada
CacheUnmapBehindLengthInMB Ajuste de lectura secuencial; los 8 MB estándar son adecuados para el trabajo normal
SplitLargeCaches Cambia la descripción de la topología para varios grupos de procesadores; en un sistema normal no hay efecto

Están confirmados las rutas, los tipos, los valores predeterminados, el código y el momento de lectura de los parámetros indicados arriba, así como las restricciones de rangos. Los resultados se refieren a Windows 11 25H2 build 26200.9168. El comportamiento puede diferir con otra actualización de Windows, volumen de RAM, tipo de dispositivo de almacenamiento o topología de CPU.

Cómo repetir la parte dinámica de las observaciones — véase Cómo comprobarlo por tu cuenta.

Para revertir, devuelva los valores estándar de los parámetros o elimine las entradas opcionales. Parte de los valores se aplican en el siguiente arranque de Windows.

La investigación y las herramientas usadas en ella pertenecen al desarrollador de BoosterX, por lo que el desarrollador tiene un interés directo en los resultados. La metodología y los límites de aplicabilidad se describen en este artículo; las conclusiones pueden comprobarse con datos abiertos y las fuentes públicas enumeradas a continuación.

Las afirmaciones sobre el código se comprobaron mediante análisis estático de los componentes del sistema de Windows 11 25H2. El código descompilado, los desplazamientos, los seguimientos originales y los materiales internos no se publican.

Fuentes públicas comprobadas: 2026-09-02.

  • 2026-09-20: añadido el descargo de responsabilidad sobre el conflicto de intereses y el enlace a la comprobación independiente de las observaciones dinámicas en la metodología.
  • 2026-09-02: primera publicación; confirmados las rutas, los defaults, los clamps y el código de lectura de los parámetros, añadidos los límites de la utilidad práctica.