Multimedia Class Scheduler Service
Der Multimedia Class Scheduler-Dienst (MMCSS) ermöglicht Multimediaanwendungen, sicherzustellen, dass ihre zeitkritische Verarbeitung den priorisierten Zugriff auf CPU-Ressourcen erhält. Dieser Dienst ermöglicht es Multimediaanwendungen, so viel CPU wie möglich zu nutzen, ohne CPU-Ressourcen für Anwendungen mit niedrigerer Priorität zu verweigern.
MMCSS verwendet informationen, die in der Registrierung gespeichert sind, um unterstützte Aufgaben zu identifizieren und die relative Priorität von Threads zu bestimmen, die diese Aufgaben ausführen. Jeder Thread, der Arbeit im Zusammenhang mit einer bestimmten Aufgabe ausführt, ruft die AvSetMmMaxThreadCharacteristics oder AvSetMmThreadCharacteristics Funktion auf, um MMCSS darüber zu informieren, dass er an dieser Aufgabe arbeitet.
Ein Beispiel für ein Programm, das MMCSS verwendet, finden Sie unter Exclusive-Mode 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 namens SystemResponsiveness, der den Prozentsatz der CPU-Ressourcen bestimmt, die für Vorgänge mit niedriger Priorität garantiert werden sollten. Wenn dieser Wert beispielsweise 20 ist, sind 20% cpu-Ressourcen für Vorgänge mit niedriger Priorität reserviert. Beachten Sie, dass Werte, die nicht gleichmäßig durch 10 dividierbar sind, 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 Aufgaben-, der die Liste der Aufgaben enthält. Standardmäßig unterstützt Windows die folgenden Aufgaben:
- Audio-
- Capture
- Verteilungs-
- Games
- Wiedergabe
- Pro Audio-
- Fenster-Manager-
OEMs können bei Bedarf zusätzliche Aufgaben hinzufügen.
Jeder Aufgabenschlüssel enthält den folgenden Wertesatz, der Merkmale darstellt, die auf Threads angewendet werden, die dem Vorgang zugeordnet sind.
Wert | Format | Mögliche Werte |
---|---|---|
Affinitäts- | REG_DWORD | Eine Bitmaske, die die Prozessoraffinität angibt. Sowohl 0x00 als auch 0xFFFFFFFF deuten darauf hin, dass die Prozessoraffinität nicht 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 ist 1-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 diese Aufgabe in 100-Nanosekunden-Intervallen verknüpft. Ab Windows 7 und Windows Server 2008 R2 wurde diese Garantie entfernt, um den Stromverbrauch des Systems zu reduzieren. |
GPU-Priorität | REG_DWORD | Die GPU-Priorität. Der Wertebereich ist 0-31. Diese Priorität wird noch nicht verwendet. |
Prioritäts- | REG_DWORD | Die Vorgangspriorität. Der Wertebereich ist 1 (niedrig) bis 8 (hoch). Bei Vorgängen mit einer Terminplanungskategorie "Hoch" wird dieser Wert immer als 2 behandelt. |
Terminplanungskategorie | REG_SZ | Die Planungskategorie. Dieser Wert kann auf "Hoch", "Mittel" oder "Niedrig" festgelegt werden. |
SFIO Priority | REG_SZ | Die geplante E/A-Priorität. Dieser Wert kann auf "Leerlauf", "Niedrig", "Normal" oder "Hoch" festgelegt werden. Dieser Wert wird nicht verwendet. |
Anmerkung
Um Energie zu sparen, sollten Anwendungen die Auflösung des systemweiten Timers nicht auf einen kleinen Wert festlegen, es sei denn, es ist unbedingt erforderlich. Weitere Informationen finden Sie unter Performance im Windows 7-Entwicklerhandbuch.
Threadprioritäten
Das MMCSS erhöht die Priorität von Threads, die an multimedialen Aufgaben mit hoher Priorität arbeiten.
MMCSS bestimmt die Priorität eines Threads mithilfe der folgenden Faktoren:
- Die Basispriorität des Vorgangs.
- Der parameter Priority der AvSetMmThreadPriority-funktion.
- Gibt an, ob sich die Anwendung im Vordergrund befindet.
- Wie viel CPU-Zeit von den Threads in jeder Kategorie verbraucht wird.
MMCSS legt die Priorität von Clientthreads abhängig von ihrer Planungskategorie fest.
Kategorie | Priorität | Beschreibung |
---|---|---|
Hoch | 23-26 | Diese Threads werden mit einer Threadpriorität ausgeführt, die niedriger als nur bestimmte Aufgaben auf Systemebene ist. Diese Kategorie wurde für Pro Audio-Aufgaben entwickelt. |
Mittel | 16-22 | Diese Threads sind Teil der Anwendung, die sich im Vordergrund befindet. |
Niedrig | 8-15 | Diese Kategorie enthält den Rest der Threads. Sie werden bei Bedarf ein Mindestprozentsatz der CPU-Ressourcen garantiert. |
1-7 | Diese Threads haben ihr Kontingent der CPU-Ressource verwendet. Sie können weiterhin ausgeführt werden, wenn keine Threads mit niedriger Priorität ausgeführt werden können. |