知識マップ: Windowsアプリ開発者のためのCPU設定入門:優先度・アフィニティ・Pコア/Eコア
記事「Windowsアプリ開発者のためのCPU設定入門:優先度・アフィニティ・Pコア/Eコア」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
Windowsアプリの実行環境は、Windowsスケジューラがどのスレッドを実行するかを決めるCPU優先度、実行してよいCPUの範囲を決めるアフィニティ、性能重視か省電力重視かを示すQoSによって構成される。優先度はI/O待ちやロック競合などCPU外のボトルネックには効かず、常用は他スレッドの応答性を悪化させることがある。実行される論理プロセッサの性格はPコア・Eコアで異なり、CPU番号の決め打ちではなくCPU SetsのEfficiencyClassで見分けるべきである。電源モードはP-state・C-state・EPP・Core Parkingを通じてCPU周波数を左右し、省電力寄りの設定は優先度やPコアへの配置だけでは補えない周期の揺れを生む。EcoQoSとタスクマネージャーのEfficiency modeは、優先度低下とEcoQoSの組み合わせにより、急がないバックグラウンド処理を前景アプリの邪魔をしない形で実行させる仕組みである。
flowchart LR
accTitle: WindowsアプリのCPU優先度・アフィニティ・電源設定の知識マップ
accDescr: Windowsスケジューラの実行順序がCPU優先度・アフィニティ・QoSで構成され、実行するコアの選択にPコア/EコアとCore Parkingを含む電源モードが関わり、EcoQoSとタスクマネージャーのEfficiency modeがバックグラウンド処理を省電力側へ逃がす仕組みであることを示す図
cpu_scheduling_priority["CPU優先度(スケジューリング優先度)"]
cpu_affinity["CPUアフィニティ"]
heterogeneous_cpu_cores["Pコア/Eコア混在CPU"]
windows_scheduler["Windowsスケジューラ"]
qos["QoS(Quality of Service)"]
non_cpu_bottleneck["CPU外のボトルネック要因"]
system_responsiveness_degradation["システム全体の応答性悪化"]
realtime_sensitive_processing["リアルタイム性が求められる処理"]
etw["ETW(Event Tracing for Windows)"]
core_parking["Core Parking"]
p_core["Pコア"]
e_core["Eコア"]
cpu_sets["CPU Sets"]
efficiency_class["EfficiencyClass(CPU Setsの効率特性値)"]
wpr_wpa["WPR/WPA(Windows Performance Recorder/Analyzer)"]
power_mode["電源モード/電源プラン(PPM)"]
p_state["P-state"]
c_state["C-state"]
epp["EPP(Energy Performance Preference)"]
reduced_cpu_frequency["CPU周波数の低下"]
periodic_timing_jitter["周期処理の揺れ"]
ecoqos["EcoQoS"]
background_maintenance_task["急がないバックグラウンド処理"]
task_manager_efficiency_mode["タスクマネージャーのEfficiency mode"]
windows_scheduler -->|"で構成できる"| cpu_scheduling_priority
windows_scheduler -->|"で構成できる"| cpu_affinity
windows_scheduler -.->|"で構成できる"| qos
cpu_scheduling_priority -->|"用いるのは非推奨"| non_cpu_bottleneck
cpu_scheduling_priority -.->|"原因になり得る"| system_responsiveness_degradation
cpu_scheduling_priority -.->|"推奨される対応"| realtime_sensitive_processing
non_cpu_bottleneck -->|"で確認できる"| etw
cpu_affinity -.->|"両立しない"| core_parking
cpu_affinity -.->|"推奨される対応"| p_core
cpu_affinity -.->|"用いるのは非推奨"| e_core
cpu_sets -->|"利用する"| efficiency_class
p_core -->|"で確認できる"| efficiency_class
e_core -->|"で確認できる"| efficiency_class
windows_scheduler -->|"で確認できる"| wpr_wpa
power_mode -->|"利用する"| p_state
power_mode -->|"利用する"| c_state
power_mode -->|"利用する"| epp
power_mode -->|"利用する"| core_parking
power_mode -.->|"原因になり得る"| reduced_cpu_frequency
reduced_cpu_frequency -.->|"原因になり得る"| periodic_timing_jitter
ecoqos -->|"利用する"| qos
ecoqos -->|"推奨される対応"| background_maintenance_task
ecoqos -->|"用いるのは非推奨"| realtime_sensitive_processing
task_manager_efficiency_mode -->|"利用する"| ecoqos
task_manager_efficiency_mode -->|"利用する"| cpu_scheduling_priority
概念間の関係(全25件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- WindowsスケジューラはCPU優先度(スケジューリング優先度)で構成できます。
- WindowsスケジューラはCPUアフィニティで構成できます。
- WindowsスケジューラはQoS(Quality of Service)で構成できます。
- CPU優先度(スケジューリング優先度)をCPU外のボトルネック要因に用いることは推奨されません。
- CPU優先度(スケジューリング優先度)はシステム全体の応答性悪化の原因になることがあります。
- CPU優先度(スケジューリング優先度)はリアルタイム性が求められる処理に対する本記事の推奨です。
- CPU外のボトルネック要因はETW(Event Tracing for Windows)で確認できます。
- CPUアフィニティはCore Parkingと両立しません。
- CPUアフィニティはPコアに対する本記事の推奨です。
- CPUアフィニティをEコアに用いることは推奨されません。
- CPU SetsはEfficiencyClass(CPU Setsの効率特性値)を利用します。
- PコアはEfficiencyClass(CPU Setsの効率特性値)で確認できます。
- EコアはEfficiencyClass(CPU Setsの効率特性値)で確認できます。
- WindowsスケジューラはWPR/WPA(Windows Performance Recorder/Analyzer)で確認できます。
- 電源モード/電源プラン(PPM)はP-stateを利用します。
- 電源モード/電源プラン(PPM)はC-stateを利用します。
- 電源モード/電源プラン(PPM)はEPP(Energy Performance Preference)を利用します。
- 電源モード/電源プラン(PPM)はCore Parkingを利用します。
- 電源モード/電源プラン(PPM)はCPU周波数の低下の原因になることがあります。
- CPU周波数の低下は周期処理の揺れの原因になることがあります。
- EcoQoSはQoS(Quality of Service)を利用します。
- EcoQoSは急がないバックグラウンド処理に対する本記事の推奨です。
- EcoQoSをリアルタイム性が求められる処理に用いることは推奨されません。
- タスクマネージャーのEfficiency modeはEcoQoSを利用します。
- タスクマネージャーのEfficiency modeはCPU優先度(スケジューリング優先度)を利用します。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。