Aller au contenu

MMCSS, DWM et profil Games dans Windows 11 25H2

Sur cette page

MMCSS donne aux tâches multimédias sensibles au temps un accès prioritaire au CPU, sans les transformer en temps réel absolu. Les profils Window Manager et Games n’influencent la classification que des threads enregistrés sous le nom de tâche correspondant. La suppression des valeurs par défaut ne restaure pas le profil : elle active des valeurs de repli plus basses issues du code.

Nous avons vérifié comment MMCSS lit les profils Window Manager et Games, quelles valeurs s’appliquent en l’absence d’entrées et ce que change la modification des priorités et du lazy mode.

Windows 11 25H2 build 26200.9168, mmcss.sys et observation au démarrage. La charge de travail concrète, le pilote GPU et la latence physique n’ont pas été mesurés.

Analyse de mmcss.sys, observation de la lecture des profils dans le bootlog et vérification de la normalisation et des valeurs de repli.

Chemin racine :

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

Profil DWM :

...\Tasks\Window Manager

Profil de jeux :

...\Tasks\Games

Value Type Window Manager dans 25H2 Games dans 25H2 Rôle confirmé
Scheduling Category REG_SZ Medium Medium Catégorie de scheduler policy
Priority REG_DWORD 5 2 Priorité de tâche dans la plage 1..8
Priority When Yielded REG_DWORD absent, fallback 16 absent, fallback 16 Plafond après cession du CPU

Valeurs de la racine SystemProfile :

Value Type État dans 25H2 Rôle confirmé
LazyModeTimeout REG_DWORD absent, fallback 1000000 Minuteur du lazy mode en unités de 100 ns
NoLazyMode REG_DWORD absent, fallback 0 Désactivation de l’idle detector

mmcss.sys lit Scheduling Category, Priority et Priority When Yielded lors de l’initialisation des profils. Plages de catégories actives documentées : Low — 8..15, Medium — 16..22, High — 23..26. Pour High, la valeur Priority dans la plage active est toujours interprétée comme 2, c’est pourquoi l’entrée 6 ou 8 ne relève pas le profil High comme le suggère le nombre.

À l’état propre de la build étudiée, le profil Games avait Medium/2, et Window Manager — Medium/5. Priority When Yielded était absent chez les deux, c’est pourquoi le fallback 16 s’appliquait. Les combinaisons High/6/13 et High/8/13 sont des configurations modifiées, et non des Windows defaults. La valeur 13 renforce la démotion après cession du CPU par rapport au fallback 16.

Utilité : le profil décrit la scheduler policy pour les threads classifiés. L’élévation de catégorie à elle seule ne prouve pas une amélioration de la charge de travail finale ; elle peut accroître la concurrence pour le CPU.

LazyModeTimeout se mesure en unités de 100 ns. Le fallback 1000000 est égal à 100 ms ; 10000 est égal à 1 ms. Le zéro est remplacé par le fallback, il n’y a pas de clamp supérieur dans le reader vérifié. NoLazyMode est booléen : 0 laisse l’idle detector activé, toute valeur non nulle le désactive. Avec NoLazyMode actif, le chemin LazyModeTimeout est pratiquement inatteignable, c’est pourquoi ces réglages ne peuvent pas être évalués indépendamment.

Utilité : la réduction du timeout accélère la période du lazy scheduler, et non la priorité des threads actifs. NoLazyMode=1 supprime l’idle-demotion path, mais n’annule pas Priority When Yielded et maintient MMCSS dans un cycle complet, augmentant l’activité en arrière-plan.

mmcss.sys lit le root et les task profiles au démarrage du service/pilote. Dans le bootlog, des accès à NoLazyMode et aux profils ont été observés ; pour les valeurs absentes, NAME NOT FOUND était enregistré, après quoi le default du code s’appliquait. C’est le mode de fonctionnement normal de la configuration Registry.

  • Valeurs Medium/5 pour Window Manager et Medium/2 pour Games dans la configuration propre de 25H2.
  • Fallback Low/1 en l’absence de Scheduling Category et Priority, ainsi que 16 pour Priority When Yielded.
  • Limites des catégories et interprétation de Priority pour High.
  • Unités et fallback LazyModeTimeout, comportement booléen de NoLazyMode.
  • Influence des profils sur les FPS, le frametime et la latence physique.
  • Utilité de la modification des priorités pour des jeux et applications spécifiques.

Pour un système ordinaire, conservez les Medium/5 et Medium/2 par défaut. Pour un retour précis, il ne faut pas supprimer Scheduling Category et Priority : le fallback en leur absence est égal à Low/1, c’est-à-dire que le profil deviendra plus faible que celui par défaut. Le retour s’effectue par l’écriture explicite de la paire par défaut et la suppression du Priority When Yielded facultatif.

Le résultat concerne Windows 11 25H2 build 26200.9168 ; la charge de travail concrète, le GPU driver et la latence physique n’ont pas été mesurés dans cet article.

Comment reproduire la partie dynamique des observations — voir Comment vérifier soi-même.

L’étude et les outils utilisés appartiennent au développeur de BoosterX, c’est pourquoi le développeur a un intérêt direct dans les résultats. La méthodologie et les limites d’applicabilité sont décrites ci-dessus, et les conclusions peuvent être vérifiées à partir des données ouvertes et des sources publiques énumérées.

Sources publiques vérifiées : 2026-09-02.

  • 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 ; lecture des profils, defaults et valeurs de repli confirmés, ajout des limites de l’effet pratique.