Service Planificateur de classes multimédias

Le service Multimédia Class Scheduler (MMCSS) permet aux applications multimédias de s’assurer que leur traitement sensible au temps reçoit un accès prioritaire aux ressources processeur. Ce service permet aux applications multimédias d’utiliser autant que possible le processeur sans refuser les ressources de l’UC aux applications de priorité inférieure.

MMCSS utilise des 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 à des tâches de faible priorité. Par exemple, si cette valeur est 20, 20 % des ressources 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 Tasks qui contient la liste des tâches. Par défaut, Windows prend en charge les tâches suivantes :

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

Les OEM peuvent ajouter des tâches supplémentaires selon les 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é du processeur. Les 0x00 et les 0xFFFFFFFF indiquent que l’affinité du 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 dans le focus de la fenêtre. Cette valeur peut être définie sur True ou False.
BackgroundPriority REG_DWORD Priorité en 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 utilisée par le système si un thread joint cette tâche, dans des 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 système.
Priorité GPU REG_DWORD Priorité du 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 de 1 (faible) à 8 (élevé). 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 High, Medium ou Low.
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.

 

Remarque

Pour conserver la puissance, les applications ne doivent pas définir la résolution du minuteur à l’échelle du système sur une petite valeur, sauf si nécessaire. Pour plus d’informations, consultez LeGuide des développeurs 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 est au premier plan.
  • Quantité de temps processeur consommée par les threads de 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 Pro tâches audio.
Moyenne 16-22 Ces threads font partie de l’application au premier plan.
Faible 8-15 Cette catégorie contient le reste des threads. Elles sont garanties en pourcentage minimal des ressources de l’UC si nécessaire.
1-7 Ces threads ont utilisé leur quota de ressources d’UC. Ils peuvent continuer à s’exécuter si aucun thread de faible priorité n’est prêt à s’exécuter.