マルチメディア クラス スケジューラ サービス
マルチメディア クラス スケジューラ サービス (MMCSS) を使用すると、マルチメディア アプリケーションは、時間の影響を受ける処理で CPU リソースへの優先順位付けされたアクセスを確実に受け取ることができます。 このサービスを使用すると、マルチメディア アプリケーションは、優先順位の低いアプリケーションに対して CPU リソースを拒否することなく、できるだけ多くの CPU を利用できます。
MMCSS は、レジストリに格納されている情報を使用して、サポートされているタスクを識別し、これらのタスクを実行するスレッドの相対的な優先順位を決定します。 特定のタスクに関連する作業を実行している各スレッドは 、AvSetMmMaxThreadCharacteristics 関数または AvSetMmThreadCharacteristics 関数を呼び出して、そのタスクで作業していることを MMCSS に通知します。
MMCSS を使用するプログラムの例については、「 排他モード ストリーム」を参照してください。
Windows Server 2003 および Windows XP: MMCSS は使用できません。
レジストリ設定
MMCSS 設定は、次のレジストリ キーに格納されます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Multimedia\SystemProfile
このキー には、優先度 の低いタスクに対して保証する必要がある CPU リソースの割合を決定する SystemResponsiveness という名前のREG_DWORD値が含まれています。 たとえば、この値が 20 の場合、CPU リソースの 20% は優先度の低いタスク用に予約されます。 10 で均等に割り切れない値は、10 の最も近い倍数に切り上げられます。 値 0 も 10 として扱われます。
キーには、タスクの一覧を含む Tasks という名前のサブキーも含まれます。 既定では、Windows では次のタスクがサポートされています。
- オーディオ
[ キャプチャ](event-hubs-capture-overview.md) - Distribution
- ゲーム
- 再生
- 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 優先度。 この値は、Idle、Low、Normal、または High に設定できます。 この値は使用されません。 |
Note
電力を節約するために、アプリケーションでは、絶対に必要でない限り、システム全体のタイマーの解像度を小さな値に設定しないでください。 詳細については、「Windows 7 開発者ガイド」の「パフォーマンス」を参照してください。
スレッドの優先度
MMCSS は、優先度の高いマルチメディア タスクに取り組んでいるスレッドの優先度を高めます。
MMCSS は、次の要因を使用してスレッドの優先度を決定します。
- タスクの基本優先度。
- AvSetMmThreadPriority 関数の Priority パラメーター。
- アプリケーションがフォアグラウンドにあるかどうか。
- 各カテゴリのスレッドによって消費される CPU 時間。
MMCSS は、スケジュール カテゴリに応じてクライアント スレッドの優先度を設定します。
カテゴリ | 優先度 | 説明 |
---|---|---|
高 | 23-26 | これらのスレッドは、特定のシステム レベルのタスクよりも低いスレッド優先度で実行されます。 このカテゴリは、Pro Audio タスク用に設計されています。 |
Medium | 16-22 | これらのスレッドは、フォアグラウンドにあるアプリケーションの一部です。 |
低 | 8-15 | このカテゴリには、スレッドの残りの部分が含まれています。 必要に応じて、CPU リソースの最小割合が保証されます。 |
1-7 | これらのスレッドでは、CPU リソースのクォータが使用されています。 優先度の低いスレッドを実行する準備ができていない場合は、引き続き実行できます。 |