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. |