Multimedia Class Scheduler Service

Mit dem Multimedia Class Scheduler-Dienst (MMCSS) können Multimediaanwendungen sicherstellen, dass ihre zeitkritische Verarbeitung priorisierten Zugriff auf CPU-Ressourcen erhält. Mit diesem Dienst können Multimediaanwendungen so viel CPU wie möglich nutzen, ohne CPU-Ressourcen für Anwendungen mit niedrigerer Priorität zu verweigern.

MMCSS verwendet in der Registrierung gespeicherte Informationen, um unterstützte Aufgaben zu identifizieren und die relative Priorität von Threads zu bestimmen, die diese Aufgaben ausführen. Jeder Thread, der Aufgaben im Zusammenhang mit einer bestimmten Aufgabe ausführt, ruft die Funktion AvSetMmMaxThreadCharacteristics oder AvSetMmThreadCharacteristics auf, um MMCSS darüber zu informieren, dass sie an dieser Aufgabe arbeitet.

Ein Beispiel für ein Programm, das MMCSS verwendet, finden Sie unter Exklusiver Modus Streams.

Windows Server 2003 und Windows XP: MMCSS ist nicht verfügbar.

Registrierungseinstellungen

Die MMCSS-Einstellungen werden im folgenden Registrierungsschlüssel gespeichert:

HKEY _ LOCAL MACHINE SOFTWARE Microsoft Windows NT _ \ \ \ \ CurrentVersion Multimedia \ \ SystemProfile

Dieser Schlüssel enthält einen REG _ DWORD-Wert mit dem Namen SystemResponsiveness, der den Prozentsatz der CPU-Ressourcen bestimmt, der für Aufgaben mit niedriger Priorität garantiert werden soll. Wenn dieser Wert beispielsweise 20 ist, sind 20 % der CPU-Ressourcen für Aufgaben mit niedriger Priorität reserviert. Beachten Sie, dass Werte, die nicht gleichmäßig durch 10 geteilt werden können, auf das nächste Vielfache von 10 aufgerundet werden. Der Wert 0 wird auch als 10 behandelt.

Der Schlüssel enthält auch einen Unterschlüssel mit dem Namen Tasks, der die Liste der Aufgaben enthält. Standardmäßig unterstützt Windows die folgenden Aufgaben:

  • Audio
  • Capture
  • Distribution
  • Spiele
  • Wiedergabe
  • Pro Audio
  • Fenster-Manager

OEMs können bei Bedarf zusätzliche Aufgaben hinzufügen.

Jeder Aufgabenschlüssel enthält den folgenden Satz von Werten, die Merkmale darstellen, die auf Threads angewendet werden sollen, die der Aufgabe zugeordnet sind.

Wert Format Mögliche Werte
Affinität REG _ DWORD Eine Bitmaske, die die Prozessoraffinität angibt. Sowohl 0x00 als auch 0xFFFFFFFF geben an, dass keine Prozessoraffinität verwendet wird.
Nur Hintergrund REG _ SZ Gibt an, ob es sich um eine Hintergrundaufgabe handelt (keine Benutzeroberfläche). Die Threads einer Hintergrundaufgabe ändern sich aufgrund einer Änderung des Fensterfokus nicht. Dieser Wert kann auf True oder False festgelegt werden.
BackgroundPriority REG _ DWORD Die Hintergrundpriorität. Der Wertebereich liegt zwischen 1 und 8.
Taktfrequenz REG _ DWORD Ein Hinweis, der von MMCSS verwendet wird, um die Granularität der Prozessorressourcenplanung zu bestimmen. Windows Server 2008 und Windows Vista: Die maximale garantierte Taktrate, die das System verwendet, wenn ein Thread dieser Aufgabe in Intervallen von 100 Nanosekunden beitritt. Ab Windows 7 und Windows Server 2008 R2 wurde diese Garantie entfernt, um den Systemstromverbrauch zu reduzieren.
GPU-Priorität REG _ DWORD Die GPU-Priorität. Der Wertebereich liegt zwischen 0 und 31. Diese Priorität wird noch nicht verwendet.
Priority REG _ DWORD Die Taskpriorität. Der Wertebereich ist 1 (niedrig) bis 8 (hoch). Bei Aufgaben mit der Kategorie "Hoch" wird dieser Wert immer als 2 behandelt.
Kategorie "Zeitplanung" REG _ SZ Die Zeitplanungskategorie. Dieser Wert kann auf Hoch, Mittel oder Niedrig festgelegt werden.
SFIO-Priorität REG _ SZ Die geplante E/A-Priorität. Dieser Wert kann auf Leerlauf, Niedrig, Normal oder Hoch festgelegt werden. Dieser Wert wird nicht verwendet.

Hinweis

Um Energie zu sparen, sollten Anwendungen die Auflösung des systemweiten Timers nicht auf einen kleinen Wert festlegen, es sei denn, dies ist unbedingt erforderlich. Weitere Informationen finden Sie unter Leistung im Entwicklerhandbuch für Windows 7.

Threadprioritäten

MmCSS erhöht die Priorität von Threads, die an Multimediaaufgaben mit hoher Priorität arbeiten.

MMCSS bestimmt die Priorität eines Threads anhand der folgenden Faktoren:

  • Die Basispriorität des Tasks.
  • Der Priority-Parameter der AvSetMmThreadPriority-Funktion.
  • Gibt an, ob sich die Anwendung im Vordergrund befindet.
  • Wie viel CPU-Zeit von den Threads in den einzelnen Kategorien verbraucht wird.

MMCSS legt die Priorität von Clientthreads abhängig von ihrer Planungskategorie fest.

Category Priorität BESCHREIBUNG
High 23-26 Diese Threads werden mit einer Threadpriorität ausgeführt, die niedriger als nur bestimmte Aufgaben auf Systemebene ist. Diese Kategorie ist für Pro Audioaufgaben konzipiert.
Medium 16-22 Diese Threads sind Teil der Anwendung, die sich im Vordergrund befindet.
Niedrig 8-15 Diese Kategorie enthält den Rest der Threads. Ihnen wird bei Bedarf ein Mindestprozentsatz der CPU-Ressourcen garantiert.
1-7 Diese Threads haben ihr CPU-Ressourcenkontingent verwendet. Sie können weiterhin ausgeführt werden, wenn keine Threads mit niedriger Priorität ausgeführt werden können.