プロセッサのスケジュール設定とQoSの知識マップ(知識グラフ)
「プロセッサのスケジュール」の設定は内部的にはWin32PrioritySeparationというレジストリ値に結び付き、foregroundとbackgroundへ配るquantumの長短と優遇度を切り替えるだけで、CPUのクロックやコア固定を直接変える設定ではない。バックグラウンドサービス側は前面優遇を弱めるため、締切に追われる音声処理などのアンダーランを軽減することがあるが、これはMMCSSが担う優先度引き上げとは別の仕組みである。現代のWindows、特にPコア/EコアのhybridなCPUでは、実際にどのコアへ配置されるかはこの設定よりもWindows QoSやIntel Thread Directorを使うheterogeneous schedulingポリシーのほうが強く効き、最小化やバッテリー駆動だけでQoSが下がりefficient core寄りに置かれることもある。原因の切り分けには、DPC/ISR遅延をWindows Performance RecorderとAnalyzerで観測する手順が有効である。
プロセッサのスケジュール設定
「パフォーマンスオプション」の詳細設定にある、foregroundとbackgroundへのCPU時間(quantum)の配分を切り替えるWindowsの設定。
プログラム/バックグラウンドサービス
Windows の QoS(サービス品質)分類
フォーカス中・可視・最小化・バックグラウンドサービス・EcoQoSなど、ウィンドウの状態に応じてWindowsがプロセスに割り当てる電力効率優先度の分類体系。
QoSレベル
Win32PrioritySeparation
プロセッサのスケジュール設定の選択が書き込まれる、quantumの長短・可変固定・foreground優遇度をビットで表すレジストリ値。
quantum(タイムスライス)
スレッドが1回の順番で連続実行できる時間の単位で、Windowsではclock tickの3分の1を1単位として数える。
タイムスライス
foreground優遇
現在ユーザーが操作している前面プロセスに、quantumの配分などで有利な扱いを与えるWindowsスケジューラの仕組み。
アンダーラン(underrun)
音声処理などで締切までにバッファを埋められずデータが尽きる現象で、プチプチやドロップアウトとして聞こえる。
ドロップアウト
MMCSS(Multimedia Class Scheduler Service)
マルチメディア処理をするスレッドが登録すると、レジストリのタスク定義に沿って優先度を引き上げるWindowsのサービス。
efficient core寄りの配置
QoSが低い区分になった場合などに、スレッドが電力効率重視のEコア寄りに配置されやすくなること。
EcoQoS
性能が最重要ではない処理を省電力寄りに扱うためのQoS。スレッド単位ならSetThreadInformationとThreadPowerThrottling、プロセス単位ならSetProcessInformationとPROCESS_POWER_THROTTLING_EXECUTION_SPEEDで設定する。
DisableUserPresenceQos
バッテリー駆動中に一定時間ユーザー入力がないと前面アプリのQoSがMediumへ下げられる機能を無効化する、PowerThrottlingキー配下のレジストリ設定。
heterogeneous schedulingポリシー(SchedulingPolicy等)
SchedulingPolicy・ShortSchedulingPolicy・ShortThreadRuntimeThresholdなど、QoSとシステム構成をもとにPコア/Eコアへの割り当てをOSが決めるWindowsのポリシー群。
Intel Thread Director
Intelのhybrid CPUがスレッドの実行特性のヒントをOSへ渡す仕組みで、Windows 11がコア選択の判断に利用する。
Pコア/Eコア構成(hybrid CPU)
性能重視のPコアと電力効率重視のEコアを両方持つ、ヘテロジニアスなCPU構成。
ヘテロジニアスCPU
Core Parking
使用率が低いときに一部の論理プロセッサを低電力状態(parked)へ寄せて消費電力を抑える、Windowsの電源管理機能。
コアパーキング
DPC/ISR遅延
デバイスドライバーが割り込みを処理するISR・DPCの処理が長引き、通常のスレッドの実行が待たされること。
WPR/WPA(Windows Performance Recorder/Analyzer)
ETWを土台にした、ディスクI/O・電源・起動時間などOS全体の詳細分析に強いWindows標準の性能分析ツール群。
「プログラム」「バックグラウンドサービス」のUI選択は、レジストリのWin32PrioritySeparation値に書き込まれる
quantumの長短・可変固定・foreground優遇の倍率は、Win32PrioritySeparationのビット値によって決まる
プロセッサのスケジュール設定が主に触っているのは、foregroundとbackgroundに配るquantumの配り方である
設定は、foregroundをbackgroundの何倍優遇するかというforeground優遇の度合いも切り替える
バックグラウンドサービス側はforegroundとbackgroundのquantumをほぼ均等にするため、裏の継続処理が締切を落としにくくなりアンダーランを軽減することがある
MMCSSに登録したスレッドは優先度が引き上げられ、締切までにバッファを埋めやすくなるためアンダーランを軽減できる
MMCSSがバッチバッファリング用に付けたスレッドは、Windows QoSの分類でMediaという区分に対応する
QoSがUtility/Ecoなど低い区分になると、バッテリー駆動時はスレッドがefficient core寄りに置かれやすくなる
アプリが明示的に付けたEcoQoSのスレッドは、efficient cores寄りに置かれやすくなる
DisableUserPresenceQosを1に設定すると、バッテリー駆動中に無操作でも前面アプリのQoSが下げられなくなり、意図しないefficient core寄りの配置を防げる
SchedulingPolicyなどのポリシーは、QoSとシステム構成を見てPコア/Eコアの割り当てを決める
Windows 11のheterogeneous schedulingポリシーは、Intel Thread Directorが渡すスレッド特性のヒントも判断材料に使う
SchedulingPolicyなどのheterogeneous schedulingポリシーは、PコアとEコアを両方持つhybrid CPU構成を前提とする
Intel Thread Directorは、IntelのPコア/Eコアを持つhybrid CPUに実装され、そのヒントをOSへ渡す
heterogeneous schedulingポリシーの裏では、processor power management側のcore parking engineも動作している
DPC/ISRの遅延はWindows Performance Recorderでトレースを取得し、Windows Performance AnalyzerのDPC/ISRグラフで確認できる
スレッドがPコア/Eコアのどちらで動いたかは、Windows Performance AnalyzerのCPU Usage (Precise)トレースで論理プロセッサ番号を確認することで分かる
DPC/ISR遅延が大きいと通常のスレッドの実行が待たされ、音声処理の締切に間に合わずアンダーランにつながり得る