Service Planificateur de classes multimédia

Le service MmCSS (Multimedia Class Scheduler Service) permet aux applications multimédias de s’assurer que leur traitement sensible au temps reçoit un accès prioritaire aux ressources du processeur. Ce service permet aux applications multimédias d’utiliser autant que possible le processeur sans refuser des ressources processeur aux applications de priorité inférieure.

MMCSS utilise les informations stockées dans le Registre pour identifier les tâches prises en charge et déterminer la priorité relative des threads effectuant ces tâches. Chaque thread qui effectue un travail lié à une tâche particulière appelle la fonction AvSetMmMaxThreadCharacteristics ou AvSetMmThreadCharacteristics pour informer MMCSS qu’il travaille sur cette tâche.

Pour obtenir un exemple de programme qui utilise MMCSS, consultez Flux en mode exclusif.

Windows Server 2003 et Windows XP : MMCSS n’est pas disponible.

Paramètres du Registre

Les paramètres MMCSS sont stockés dans la clé de Registre suivante :

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

Cette clé contient une valeur REG_DWORD nommée SystemResponsiveness qui détermine le pourcentage de ressources processeur qui doivent être garanties pour les tâches de faible priorité. Par exemple, si cette valeur est 20, 20 % des ressources du processeur sont réservées aux tâches de faible priorité. Notez que les valeurs qui ne sont pas uniformément divisibles par 10 sont arrondies au multiple le plus proche de 10. La valeur 0 est également traitée comme 10.

La clé contient également une sous-clé nommée Tâches qui contient la liste des tâches. Par défaut, Windows prend en charge les tâches suivantes :

  • Audio
  • Capture
  • Distribution
  • Jeux
  • Lecture
  • Audio Professionnel
  • Gestionnaire de fenêtres

Les fabricants OEM peuvent ajouter des tâches supplémentaires en fonction des besoins.

Chaque clé de tâche contient l’ensemble de valeurs suivant qui représentent les caractéristiques à appliquer aux threads associés à la tâche.

Valeur Format Valeurs possibles
Affinité REG_DWORD Masque de bits qui indique l’affinité processeur. Les deux 0x00 et 0xFFFFFFFF indiquent que l’affinité processeur n’est pas utilisée.
Arrière-plan uniquement REG_SZ Indique s’il s’agit d’une tâche en arrière-plan (aucune interface utilisateur). Les threads d’une tâche en arrière-plan ne changent pas en raison d’une modification du focus de fenêtre. Cette valeur peut être définie sur True ou False.
BackgroundPriority REG_DWORD Priorité d’arrière-plan. La plage de valeurs est comprise entre 1 et 8.
Fréquence d’horloge REG_DWORD Indicateur utilisé par MMCSS pour déterminer la granularité de la planification des ressources du processeur. Windows Server 2008 et Windows Vista : Fréquence d’horloge maximale garantie que le système utilise si un thread joint cette tâche, par intervalles de 100 nanosecondes. À compter de Windows 7 et Windows Server 2008 R2, cette garantie a été supprimée pour réduire la consommation d’énergie du système.
Priorité GPU REG_DWORD Priorité GPU. La plage de valeurs est comprise entre 0 et 31. Cette priorité n’est pas encore utilisée.
Priorité REG_DWORD Priorité de la tâche. La plage de valeurs est comprise entre 1 (faible) et 8 (haute). Pour les tâches avec une catégorie de planification élevée, cette valeur est toujours traitée comme 2.
Catégorie de planification REG_SZ Catégorie de planification. Cette valeur peut être définie sur Élevé, Moyen ou Faible.
Priorité SFIO REG_SZ Priorité d’E/S planifiée. Cette valeur peut être définie sur Idle, Low, Normal ou High. Cette valeur n'est pas utilisée.

 

Notes

Pour économiser l’énergie, les applications ne doivent pas définir la résolution du minuteur à l’échelle du système sur une valeur faible, sauf si cela est absolument nécessaire. Pour plus d’informations, consultez Performances dans le Guide du développeur Windows 7.

 

Priorités des threads

Le MMCSS renforce la priorité des threads qui travaillent sur des tâches multimédias à priorité élevée.

MMCSS détermine la priorité d’un thread à l’aide des facteurs suivants :

  • Priorité de base de la tâche.
  • Paramètre Priority de la fonction AvSetMmThreadPriority .
  • Indique si l’application se trouve au premier plan.
  • Temps processeur consommé par les threads dans chaque catégorie.

MMCSS définit la priorité des threads clients en fonction de leur catégorie de planification.

Category Priority Description
Élevé 23-26 Ces threads s’exécutent à une priorité de thread inférieure à certaines tâches au niveau du système. Cette catégorie est conçue pour les tâches Audio Pro.
Moyenne 16-22 Ces threads font partie de l’application qui se trouve au premier plan.
Faible 8-15 Cette catégorie contient le reste des threads. Un pourcentage minimal des ressources processeur est garanti si nécessaire.
1-7 Ces threads ont utilisé leur quota de ressources processeur. Ils peuvent continuer à s’exécuter si aucun thread de faible priorité n’est prêt à être exécuté.