Gestionnaire de mémoire et cache système Windows : paging, page combining et lazy write
Sur cette page
Réponse courte
Section intitulée « Réponse courte »Dans cette série, sept paramètres de pagination, de fusion de pages identiques, de tas du noyau et de cache de fichiers ont été vérifiés. Dans Windows 11 25H2, le code de lecture de chacun d’eux a été trouvé. L’utilité pratique dépend du paramètre et des conditions d’exploitation.
DisablePageCombining désactive la fusion de pages en arrière-plan : le gestionnaire de mémoire cesse d’effectuer ce travail, mais la consommation de RAM peut augmenter. DisablePagingExecutive retient le code de pilotes paginable en mémoire physique ; l’utilité est généralement faible. Les autres paramètres ne s’appliquent qu’à des tâches spécifiques du noyau ou des unités de stockage, ou ont déjà des valeurs par défaut appropriées dans 25H2.
Ce qui a été vérifié
Section intitulée « Ce qui a été vérifié »Pour chaque valeur, les éléments suivants ont été vérifiés :
- le chemin exact dans le registre et le type ;
- la valeur par défaut définie par le code de Windows 11 25H2 ;
- les valeurs associées de la même sous-système ;
- le code système de lecture et le moment de son exécution ;
- les limites de plage, la conversion des valeurs et les unités de mesure ;
- l’effet direct et les limites d’applicabilité.
Outre le code de lecture, nous avons vérifié où le paramètre est appliqué, quelles conséquences a sa modification et dans quels scénarios elle peut être utile. La simple présence d’un paramètre ne suffit pas pour une recommandation.
Domaine de recherche et preuves
Section intitulée « Domaine de recherche et preuves »- Windows 11 25H2 x64, build
26200.9168. - Les paramètres du noyau ont été mis en correspondance avec la table de configuration principale
ntoskrnl.exeet le code de leur application dans Memory Manager et Cache Manager. - Les accès en cours d’exécution ont été vérifiés par traçage système du registre. Les lectures à la phase 0 et au début de la phase 1 peuvent être absentes d’une trace de démarrage ordinaire : le pilote de traçage commence l’enregistrement plus tard.
- Pour les processus utilisateur, la lecture de la valeur a été vérifiée séparément dans
ntdll.dll. PourHeapDeCommitFreeBlockThresholddans 25H2, une lecture dans le noyau a été trouvée, mais les tas des processus utilisateur n’utilisent pas ce paramètre. - L’analyse statique des composants système ne remplace pas une répétition sur un PC physique, un autre build ou un autre type d’unité de stockage.
Paramètres canoniques
Section intitulée « Paramètres canoniques »| Registry path | Value | Type | Default Windows 11 25H2 | Application |
|---|---|---|---|---|
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
DisablePagingExecutive |
REG_DWORD |
0 |
Pagination du code paginable des pilotes système |
| тот же путь | DisablePageCombining |
REG_DWORD |
0 |
Fusion en arrière-plan des pages physiques identiques |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager |
HeapDeCommitFreeBlockThreshold |
REG_DWORD |
0x1000 (4 KB) для kernel heap |
Seuil de decommit des blocs libres du kernel-mode heap |
| тот же путь | ModifiedWriteMaximum |
REG_DWORD |
1 единица = 1 MB |
Limite supérieure du modified page writer après clamp |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management |
EnableAsyncLazywrite |
REG_DWORD |
2 |
Mode asynchrone de Cache Manager |
| тот же путь | CacheUnmapBehindLengthInMB |
REG_DWORD |
8 MB |
Fenêtre unmap derrière la lecture séquentielle |
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel |
SplitLargeCaches |
REG_DWORD |
0 |
Représentation de la cache topology entre processor groups |
DisablePagingExecutive
Section intitulée « DisablePagingExecutive »Ce qu’il fait
Section intitulée « Ce qu’il fait »Avec 0, le gestionnaire de mémoire de Windows peut décharger vers le stockage de secours les sections de code système et de pilotes qui le permettent. Avec 1, le code paginable des pilotes système est retenu en mémoire physique.
Le code de lecture a été trouvé dans ntoskrnl.exe à un stade précoce de l’initialisation du noyau. La valeur est utilisée dans MmResetDriverPaging, MmPageEntireDriver et lors du chargement des images système. Elle est appliquée avant que ne commence le traçage ordinaire du registre par l’utilisateur. Un redémarrage est nécessaire pour appliquer le nouvel état.
Valeurs et limites
Section intitulée « Valeurs et limites »0: état standard de Windows, pagination autorisée.1: les sections paginables des pilotes système sont retenues en RAM.- Le réglage consomme de la RAM pour réduire les chargements ultérieurs du code système en mémoire ; le disque lui-même ne devient pas plus rapide.
Le réglage empêche le déchargement et le chargement ultérieurs de ces sections de pilotes. Il ne désactive pas de thread CPU de vérification permanent distinct. Sur un système moderne avec suffisamment de RAM, l’utilité est généralement très faible : le code peut rester longtemps en mémoire même sans le réglage. En cas de manque de RAM, son maintien forcé aggrave la pénurie de mémoire.
La lecture du paramètre et le sens de l’effet système sont confirmés par le code ntoskrnl.exe.
DisablePageCombining
Section intitulée « DisablePageCombining »Ce qu’il fait
Section intitulée « Ce qu’il fait »Avec 0, le gestionnaire de mémoire lance une tâche en arrière-plan qui recherche et fusionne les pages physiques identiques. Avec 1, cette tâche n’effectue pas la fusion.
Dans ntoskrnl.exe, le code de fusion de pages en arrière-plan a été trouvé avec le pool tag MmCb, ce qui confirme la présence du mécanisme.
Valeurs et limites
Section intitulée « Valeurs et limites »0: fusion de pages autorisée, état standard de Windows.1: fusion désactivée.- La désactivation réduit le travail en arrière-plan du gestionnaire de mémoire, mais peut augmenter la consommation de RAM.
La désactivation est utile si la fusion de pages crée une charge en arrière-plan notable et que le système dispose de RAM libre. Généralement, cette tâche est peu active, l’effet est donc très faible. Avec un volume de mémoire limité, l’économie de RAM apportée par la fusion est plus utile que le temps processeur économisé.
Le code de lecture et de la tâche en arrière-plan est confirmé dans ntoskrnl.exe. Microsoft décrit la fusion de pages et le compromis entre travail processeur et économie de RAM.
HeapDeCommitFreeBlockThreshold
Section intitulée « HeapDeCommitFreeBlockThreshold »Ce qu’il fait
Section intitulée « Ce qu’il fait »La valeur définit le seuil de libération de la mémoire allouée (decommit) pour un bloc libre du tas du noyau. Avec un seuil plus élevé, ces opérations pour les grands blocs libres se produisent moins souvent.
Dans Windows 11 25H2, le code de lecture se trouve dans ntoskrnl.exe, et l’application du paramètre est liée à la fonction du noyau RtlCreateHeap. Dans ntdll.dll, aucun code de lecture correspondant pour les tas des processus ordinaires n’a été trouvé.
Valeurs et limites
Section intitulée « Valeurs et limites »- Valeur par défaut dans le code pour le tas du noyau :
0x1000(4 KB). 0x40000(256 KB) est un seuil admissible pour le tas du noyau.- Des documents historiques de Microsoft décrivaient un scénario user-mode du même nom pour les anciennes versions de Windows, il ne faut donc pas le transposer automatiquement à Windows 11 25H2.
Pour les applications ordinaires, l’utilité est pratiquement nulle : leurs tas n’utilisent pas cette valeur. Le paramètre ne peut modifier la fréquence de libération de la mémoire que dans le tas du noyau. Sans problème mesuré précisément à ce niveau, l’effet attendu est très faible.
La lecture en mode noyau est confirmée dans ntoskrnl.exe. L’effet pour les processus utilisateur dans 25H2 n’est pas confirmé.
ModifiedWriteMaximum
Section intitulée « ModifiedWriteMaximum »Ce qu’il fait
Section intitulée « Ce qu’il fait »Le paramètre définit la limite supérieure du mécanisme d’écriture des pages modifiées (modified page writer). Le code utilise des unités de 256 pages, c’est-à-dire qu’une unité équivaut à 1 MB.
Normalisation dans Windows 11 25H2 :
0est converti en1unité, soit 1 MB ;- les valeurs supérieures à
0x40sont limitées à0x40; - la limite effective maximale est de 64 MB, soit 16 384 pages.
Le mécanisme commence l’écriture active approximativement lorsqu’un quart de la limite définie est atteint. L’augmentation de la limite modifie le moment du déclenchement de l’écriture et le volume de pages modifiées accumulées. La vitesse du disque lui-même n’augmente pas pour autant.
Avec une limite plus élevée, davantage de pages modifiées s’accumulent avant le début de l’écriture active. L’écriture peut se déclencher moins souvent, mais le volume de données non encore enregistrées et la taille du prochain lot d’écriture augmentent. S’il n’y a pas de problème d’écriture spécifique, laissez la valeur par défaut. La limite effective est plafonnée à 64 MB.
Le code de lecture, les unités de mesure et la limitation de plage sont confirmés dans ntoskrnl.exe. Le paramètre du même nom issu des anciens documents Microsoft sur BitLocker concerne un autre sous-système ; ces documents ne sont pas utilisés ici comme source.
EnableAsyncLazywrite et valeurs associées
Section intitulée « EnableAsyncLazywrite et valeurs associées »Ce qu’il fait
Section intitulée « Ce qu’il fait »EnableAsyncLazywrite contrôle l’écriture différée asynchrone de Cache Manager. Dans le code de 25H2, la valeur par défaut est 2 : ce mode est déjà activé.
Valeurs associées du même sous-système :
| Value | Default 25H2 | Rôle |
|---|---|---|
EnableAsyncLazywrite |
2 |
Mode async lazy-write général |
EnableAsyncLazywriteMulti |
2 |
Mode multi-volume voisin |
EnablePerVolumeLazyWriter |
2 |
Per-volume lazy writer |
0 désactive l’écriture différée asynchrone. Pour 1, le mode d’un gestionnaire d’écriture différée distinct sur chaque volume est requis. 2 active le mode asynchrone sans cette exigence. Cache Manager relit les valeurs lors du traitement de la configuration des volumes.
L’écriture explicite de 2 reproduit la configuration standard de Windows 11 25H2 et n’apporte aucune amélioration supplémentaire. Le réglage convient avant tout pour le diagnostic : la valeur 0 permet de désactiver le mécanisme activé par défaut.
La lecture a été observée dans le traçage système et confirmée dans ntoskrnl.exe. La valeur par défaut 2 est confirmée par le code et par une description indépendante des paramètres du registre établie à partir de résultats de rétro-ingénierie.
CacheUnmapBehindLengthInMB
Section intitulée « CacheUnmapBehindLengthInMB »Ce qu’il fait
Section intitulée « Ce qu’il fait »Le paramètre définit la distance en mégaoctets après laquelle Cache Manager libère les vues mises en cache restées en arrière de la position actuelle de lecture séquentielle.
Le code de lecture et d’application du paramètre se trouve dans ntoskrnl.exe et est appelé lors du mappage et de la lecture du cache. Le paramètre concerne la lecture séquentielle de grands fichiers ; il ne désactive pas tout le cache de fichiers.
Valeurs et clamp
Section intitulée « Valeurs et clamp »0ou une valeur supérieure à128est remplacé par le code par8.- Plage de fonctionnement :
1..128MB. - Default du code :
8MB. - Les unités de la valeur de registre sont bien des MB, et non des octets.
Le paramètre n’a de sens que pour des tâches spécialisées de lecture séquentielle de grands fichiers. Avec une fenêtre plus grande, le mappage du cache en arrière de la position actuelle est conservé plus longtemps ; avec une fenêtre plus petite, il est libéré plus tôt. Pour un usage ordinaire, la valeur standard 8 MB convient ; l’utilité d’un réglage manuel est généralement faible.
Le code de lecture, d’application et de limitation de plage est confirmé dans ntoskrnl.exe. Aucune documentation publique moderne de Microsoft pour ce paramètre interne n’a été trouvée.
SplitLargeCaches
Section intitulée « SplitLargeCaches »Ce qu’il fait
Section intitulée « Ce qu’il fait »Avec 0, l’API de description de la topologie du cache renvoie une entrée unique pour la structure correspondante couvrant plusieurs groupes de processeurs. Avec 1, les entrées sont séparées par groupes de processeurs.
Le code de lecture se trouve dans ntoskrnl.exe. Le paramètre est utilisé lors du traitement de la relation RelationCache dans KeQueryLogicalProcessorRelationship.
Seule la description de la topologie renvoyée par l’API système change. Les blocs de mémoire physiques alloués ne sont pas séparés, et la probabilité de manque de bloc contigu ne diminue pas en soi.
Valeurs et limites
Section intitulée « Valeurs et limites »0: valeur par défaut.1: séparer les entrées de topologie par groupes de processeurs.- L’effet pratique n’est possible avant tout que sur les systèmes à plusieurs groupes de processeurs, généralement au-delà de 64 processeurs logiques.
- Sur un système ordinaire à un seul groupe, l’effet est absent.
Le paramètre n’est nécessaire qu’aux programmes qui interrogent la topologie du cache sur une machine à plusieurs groupes de processeurs. Il ne modifie ni le fonctionnement du cache ni l’allocation de mémoire. Pour un ordinateur de bureau ordinaire, il n’y a aucun intérêt.
Le code de lecture et d’application est confirmé dans ntoskrnl.exe. La valeur et la destination ont été vérifiées avec la description publique de la rétro-ingénierie KiSplitLargeCaches.
Utilité générale
Section intitulée « Utilité générale »| Paramètre | Évaluation pratique |
|---|---|
DisablePagingExecutive |
Généralement très peu utile, en retenant davantage de code en RAM |
DisablePageCombining |
Utile en cas de charge confirmée de fusion de pages en arrière-plan et de grande réserve de RAM |
HeapDeCommitFreeBlockThreshold |
Agit uniquement dans le noyau ; aucune utilité pratique pour les applications ordinaires |
ModifiedWriteMaximum |
Modifie les conditions d’écriture des pages modifiées ; sans problème identifié, laissez la valeur standard |
EnableAsyncLazywrite |
La valeur standard 2 active déjà le mécanisme ; une écriture répétée n’améliore rien |
CacheUnmapBehindLengthInMB |
Réglage de lecture séquentielle ; les valeurs standard 8 MB conviennent à un usage ordinaire |
SplitLargeCaches |
Modifie la description de la topologie pour plusieurs groupes de processeurs ; aucun effet sur un système ordinaire |
Ce qui est confirmé et ce qui n’a pas été mesuré
Section intitulée « Ce qui est confirmé et ce qui n’a pas été mesuré »Les chemins, types, valeurs par défaut, code et moment de lecture des paramètres indiqués ci-dessus, ainsi que les limitations de plages, sont confirmés. Les résultats concernent Windows 11 25H2 build 26200.9168. Le comportement peut différer avec une autre mise à jour de Windows, un autre volume de RAM, un autre type d’unité de stockage ou une autre topologie de CPU.
Pour savoir comment reproduire la partie dynamique des observations, voir Comment vérifier soi-même.
Restauration de l’état
Section intitulée « Restauration de l’état »Pour revenir en arrière, rétablissez les valeurs standard des paramètres ou supprimez les entrées facultatives. Une partie des valeurs est appliquée au prochain démarrage de Windows.
L’étude et les outils utilisés dans celle-ci appartiennent au développeur de BoosterX, le développeur a donc un intérêt direct aux résultats. La méthodologie et les limites d’applicabilité sont décrites dans cet article ; les conclusions peuvent être vérifiées à partir des données ouvertes et des sources publiques énumérées ci-dessous.
Sources publiques
Section intitulée « Sources publiques »- Memory combining, Microsoft Learn : destination du page combining et compromis CPU/RAM, vérifié le 2026-09-01.
- Registry key that controls device driver and system code pagination to disk, Microsoft archive : sémantique de
DisablePagingExecutive, vérifié le 2026-09-01. - HeapDeCommitFreeBlockThreshold, KB315407, documentation historique de Microsoft : ancien scénario user-mode et seuil de 256 KB, vérifié le 2026-09-01.
- Windows system configuration descriptions, description publique de RE
SplitLargeCaches, vérifié le 2026-09-01.
Les affirmations sur le code ont été vérifiées par analyse statique des composants système de Windows 11 25H2. Le code décompilé, les offsets, les traces d’origine et les documents internes ne sont pas publiés.
Sources publiques vérifiées : 2026-09-02.
Historique des modifications
Section intitulée « Historique des modifications »- 2026-09-20 : ajout d’un avertissement sur le conflit d’intérêts et d’un lien vers la vérification autonome des observations dynamiques dans la méthodologie.
- 2026-09-02 : première publication ; chemins, defaults, clamps et code de lecture des paramètres confirmés, limites d’utilité pratique ajoutées.
