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. 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 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 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 Datenströme im exklusiven Modus.
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, 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 teilbar sind, auf das nächste Vielfache von 10 aufgerundet werden. Ein Wert von 0 wird auch als 10 behandelt.
Der Schlüssel enthält auch einen Unterschlüssel namens 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 weisen 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 beträgt 1 bis 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 Intervallen von 100 Nanosekunden verknüpft. Ab Windows 7 und Windows Server 2008 R2 wurde diese Garantie entfernt, um den Systemenergieverbrauch zu reduzieren. |
GPU-Priorität | REG_DWORD | Die GPU-Priorität. Der Wertebereich ist 0 bis 31. Diese Priorität wird noch nicht verwendet. |
Priority | REG_DWORD | Die Vorgangspriorität. Der Wertebereich ist 1 (niedrig) bis 8 (hoch). Bei Vorgängen mit der Zeitplanungskategorie Hoch wird dieser Wert immer als 2 behandelt. |
Zeitplanungskategorie | 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 absolut notwendig. Weitere Informationen finden Sie unter Leistung im Windows 7-Entwicklerhandbuch.
Threadprioritäten
Das 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 der Aufgabe.
- Der Priority-Parameter 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.
Category | Priority | 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 Audio-Aufgaben 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 Kontingent an CPU-Ressourcen verwendet. Sie können weiterhin ausgeführt werden, wenn keine Threads mit niedriger Priorität ausgeführt werden können. |