知識マップ: 普通のWindowsでソフトリアルタイムをできるだけ実現するための実践ガイド
記事「普通のWindowsでソフトリアルタイムをできるだけ実現するための実践ガイド」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
普通のWindowsでソフトリアルタイムを狙うには、期限違反ゼロを保証するハードリアルタイムを求めず、遅延とジッタを小さくして期限を外しても壊れない設計にする。周期待機はQueryPerformanceCounterでの計測と高精度な待機可能タイマーを土台にし、必要な間だけtimeBeginPeriodでタイマー分解能を上げる。電源スロットリングでEcoQoSへの格下げとタイマー分解能の無視を明示的に解除しないと、DPC/ISR、ページフォールト、サーマルスロットリングと並んでジッタが増える一因になる。音声・映像のような連続処理ではMMCSSが優先的なCPU配分で期限超過を防ぎ、CPU配置はCPU Setsのような緩い指定を優先度の高い固定より先に試すべきで、原因の切り分けにはWPR/WPAとLatencyMonを使う。
flowchart LR
accTitle: 普通のWindowsでのソフトリアルタイムの知識マップ
accDescr: ソフトリアルタイムを支える待機可能タイマーやMMCSS、電源スロットリングとEcoQoSの関係、DPC/ISRやページフォールトがジッタを生む経路、CPU SetsからCPU固定への段階、WPR/WPAとLatencyMonによる計測手段の関係を示す図。
soft_realtime["ソフトリアルタイム"]
qpc["QPC(QueryPerformanceCounter)"]
waitable_timer["待機可能タイマー(waitable timer)"]
timebeginperiod["timeBeginPeriod(タイマー分解能要求)"]
power_throttling["Power Throttling(電力調整)"]
ecoqos["EcoQoS"]
jitter["ジッタ"]
mmcss["MMCSS(Multimedia Class Scheduler Service)"]
deadline_miss["デッドラインミス(期限違反)"]
thread_priority_class["スレッド優先度/優先度クラス"]
cpu_sets["CPU Sets"]
cpu_affinity["CPUアフィニティ"]
thermal_throttling["サーマルスロットリング"]
dpc_isr["DPC/ISR"]
page_fault["ページフォールト"]
wpr_wpa["WPR/WPA(Windows Performance Recorder/Analyzer)"]
latencymon["LatencyMon"]
soft_realtime -.->|"利用する"| qpc
soft_realtime -.->|"利用する"| waitable_timer
soft_realtime -.->|"利用する"| timebeginperiod
power_throttling -.->|"両立しない"| timebeginperiod
soft_realtime -.->|"利用する"| power_throttling
power_throttling -.->|"防止する"| ecoqos
ecoqos -.->|"原因になり得る"| jitter
soft_realtime -.->|"利用する"| mmcss
mmcss -->|"軽減する"| jitter
mmcss -->|"軽減する"| deadline_miss
thread_priority_class -.->|"原因になり得る"| jitter
thread_priority_class -->|"用いるのは非推奨"| soft_realtime
soft_realtime -.->|"利用する"| cpu_sets
cpu_sets -->|"より先に行うべき"| cpu_affinity
thermal_throttling -.->|"原因になり得る"| jitter
dpc_isr -.->|"原因になり得る"| jitter
page_fault -.->|"原因になり得る"| jitter
dpc_isr -->|"で確認できる"| wpr_wpa
dpc_isr -->|"で確認できる"| latencymon
page_fault -->|"で確認できる"| wpr_wpa
概念間の関係(全20件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- ソフトリアルタイムはQPC(QueryPerformanceCounter)を利用します。
- ソフトリアルタイムは待機可能タイマー(waitable timer)を利用します。
- ソフトリアルタイムはtimeBeginPeriod(タイマー分解能要求)を利用します。
- Power Throttling(電力調整)はtimeBeginPeriod(タイマー分解能要求)と両立しません。
- ソフトリアルタイムはPower Throttling(電力調整)を利用します。
- Power Throttling(電力調整)はEcoQoSを防ぎます。
- EcoQoSはジッタの原因になることがあります。
- ソフトリアルタイムはMMCSS(Multimedia Class Scheduler Service)を利用します。
- MMCSS(Multimedia Class Scheduler Service)はジッタを軽減します。
- MMCSS(Multimedia Class Scheduler Service)はデッドラインミス(期限違反)を軽減します。
- スレッド優先度/優先度クラスはジッタの原因になることがあります。
- スレッド優先度/優先度クラスをソフトリアルタイムに用いることは推奨されません。
- ソフトリアルタイムはCPU Setsを利用します。
- CPU SetsはCPUアフィニティより先に行うべきです。
- サーマルスロットリングはジッタの原因になることがあります。
- DPC/ISRはジッタの原因になることがあります。
- ページフォールトはジッタの原因になることがあります。
- DPC/ISRはWPR/WPA(Windows Performance Recorder/Analyzer)で確認できます。
- DPC/ISRはLatencyMonで確認できます。
- ページフォールトはWPR/WPA(Windows Performance Recorder/Analyzer)で確認できます。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。