マルチメディア クラス スケジューラ サービス
マルチメディア クラス スケジューラ サービス (MMCSS) を使用すると、マルチメディア アプリケーションは、時間に依存する処理が CPU リソースへの優先アクセスを確実に受け取ることができます。 このサービスにより、マルチメディア アプリケーションは、CPU リソースを低優先度のアプリケーションに対して拒否することなく、できるだけ多くの CPU を利用できます。
MMCSS は、レジストリに格納されている情報を使用して、サポートされているタスクを識別し、これらのタスクを実行するスレッドの相対的な優先順位を決定します。 特定のタスクに関連する作業を実行している各スレッドは、AvSetMmMaxThreadCharacteristics を呼び出すか、AvSetMmThreadCharacteristics関数をして、そのタスクで作業していることを MMCSS に通知します。
MMCSS を使用するプログラムの例については、「Exclusive-Mode ストリーム」を参照してください。
Windows Server 2003 および Windows XP: MMCSS は使用できません。
レジストリ設定
MMCSS 設定は、次のレジストリ キーに格納されます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile
このキーには、優先順位の低いタスク 保証する必要がある CPU リソースの割合を決定する SystemResponsiveness という名前の REG_DWORD 値が含まれています。 たとえば、この値が 20 の場合、優先順位の低いタスク用に 20% の CPU リソースが予約されます。 10 で均等に割り切れない値は、10 の最も近い倍数に切り上げられます。 値 0 も 10 として扱われます。
このキーには、タスクの一覧を含む Tasks という名前のサブキーも含まれます。 既定では、Windows では次のタスクがサポートされています。
- オーディオ
- キャプチャ
- 配布
- ゲーム
- 再生
- Pro Audio
- ウィンドウ マネージャーの
OEM は、必要に応じてタスクを追加できます。
各タスク キーには、タスクに関連付けられているスレッドに適用される特性を表す次の値のセットが含まれています。
価値 | 形式 | 使用可能な値 |
---|---|---|
アフィニティ | REG_DWORD | プロセッサ アフィニティを示すビットマスク。 0x00と0xFFFFFFFFの両方が、プロセッサ アフィニティが使用されていないことを示します。 |
背景のみ | REG_SZ | これがバックグラウンド タスク (ユーザー インターフェイスなし) であるかどうかを示します。 バックグラウンド タスクのスレッドは、ウィンドウ フォーカスの変更により変更されません。 この値は True または False に設定できます。 |
BackgroundPriority | REG_DWORD | バックグラウンド優先度。 値の範囲は 1 から 8 です。 |
クロック レート | REG_DWORD | プロセッサ リソースのスケジュール設定の粒度を決定するために MMCSS によって使用されるヒント。Windows Server 2008 および Windows Vista: スレッドがこのタスクに参加した場合にシステムが使用する最大保証クロック レート (100 ナノ秒間隔)。 Windows 7 および Windows Server 2008 R2 以降では、システムの消費電力を削減するために、この保証は削除されました。 |
GPU 優先度 を する | REG_DWORD | GPU の優先順位。 値の範囲は 0 ~ 31 です。 この優先順位はまだ使用されていません。 |
優先度 | REG_DWORD | タスクの優先度。 値の範囲は 1 (低) から 8 (高) です。スケジュールカテゴリ が高いタスクの場合、この値は常に 2 として扱われます。 |
スケジュール カテゴリの | REG_SZ | スケジュール カテゴリ。 この値は、High、Medium、または Low に設定できます。 |
SFIO 優先度 を する | REG_SZ | スケジュールされた I/O 優先度。 この値は、アイドル、低、標準、または高に設定できます。 この値は使用されません。 |
手記
電力を節約するために、アプリケーションでは、絶対に必要でない限り、システム全体のタイマーの解像度を小さな値に設定しないでください。 詳細については、「Windows 7 開発者ガイド」の「パフォーマンス」を参照してください。
スレッドの優先順位
MMCSS は、優先度の高いマルチメディア タスクに取り組んでいるスレッドの優先度を高めます。
MMCSS は、次の要因を使用してスレッドの優先度を決定します。
- タスクの基本優先度。
- AvSetMmThreadPriority 関数の Priority パラメーター。
- アプリケーションがフォアグラウンドにあるかどうか。
- 各カテゴリのスレッドによって消費されている CPU 時間。
MMCSS は、スケジュール カテゴリに応じてクライアント スレッドの優先順位を設定します。
カテゴリ | 優先権 | 形容 |
---|---|---|
高い | 23-26 | これらのスレッドは、特定のシステム レベルのタスクよりも低いスレッド優先度で実行されます。 このカテゴリは、Pro Audio タスク用に設計されています。 |
中程度 | 16-22 | これらのスレッドは、フォアグラウンドにあるアプリケーションの一部です。 |
低い | 8-15 | このカテゴリには、スレッドの残りの部分が含まれています。 必要に応じて、CPU リソースの最小割合が保証されます。 |
1-7 | これらのスレッドでは、CPU リソースのクォータが使用されています。 優先順位の低いスレッドを実行する準備ができていない場合は、引き続き実行できます。 |