@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/wpr-wpa-system-performance-analysis/#article>
    schema:about <https://comcomponent.com/knowledge/wpr/>, <https://comcomponent.com/knowledge/wpa/> ;
    schema:mentions <https://comcomponent.com/knowledge/wpr-recording-profile/>, <https://comcomponent.com/knowledge/etw-logging-mode/>, <https://comcomponent.com/knowledge/wpa-graph-explorer/>, <https://comcomponent.com/knowledge/wpa-table-grouping/>, <https://comcomponent.com/knowledge/cpu-usage-sampled/>, <https://comcomponent.com/knowledge/cpu-usage-precise/>, <https://comcomponent.com/knowledge/readythreadstack/>, <https://comcomponent.com/knowledge/critical-path-analysis/>, <https://comcomponent.com/knowledge/wpa-flame-graph/>, <https://comcomponent.com/knowledge/wpa-symbol-path/>, <https://comcomponent.com/knowledge/wpa-disk-usage/>, <https://comcomponent.com/knowledge/deadlock/>, <https://comcomponent.com/knowledge/hard-page-fault/>, <https://comcomponent.com/knowledge/admin-rights/>, <https://comcomponent.com/knowledge/long-duration-trace/>, <https://comcomponent.com/knowledge/exact-duration-measurement/>, <https://comcomponent.com/knowledge/lock-contention/> .

<https://comcomponent.com/knowledge/wpr/> a skos:Concept ;
    skos:prefLabel "Windows Performance Recorder(WPR)"@ja ;
    skos:definition "ETWベースでCPU・I/O・context switch・ページフォールトなどのトレースを記録する、Windows ADK付属のツール。"@ja ;
    skos:altLabel "WPR" ;
    ks:requires <https://comcomponent.com/knowledge/admin-rights/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/wpr-recording-profile/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/etw-logging-mode/> ;
    ks:shouldPrecede <https://comcomponent.com/knowledge/wpa/> .

<https://comcomponent.com/knowledge/wpa/> a skos:Concept ;
    skos:prefLabel "Windows Performance Analyzer(WPA)"@ja ;
    skos:definition "WPRなどで記録したETWトレースを開き、CPUやディスクの使用状況をグラフで分析するツール。"@ja ;
    skos:altLabel "WPA" ;
    ks:uses <https://comcomponent.com/knowledge/wpa-graph-explorer/> ;
    ks:uses <https://comcomponent.com/knowledge/wpa-table-grouping/> ;
    ks:configuredBy <https://comcomponent.com/knowledge/wpa-symbol-path/> ;
    ks:uses <https://comcomponent.com/knowledge/wpa-disk-usage/> .

<https://comcomponent.com/knowledge/admin-rights/> a skos:Concept ;
    skos:prefLabel "管理者権限"@ja ;
    skos:definition "コンピューター全体の設定を変更できる権限。"@ja ;
    skos:altLabel "昇格"@ja .

<https://comcomponent.com/knowledge/wpr-recording-profile/> a skos:Concept ;
    skos:prefLabel "WPRの記録プロファイル"@ja ;
    skos:definition "CPU usage・Disk I/O activity・File I/Oなど、採取するイベントの組み合わせを定めた設定。組み込みプロファイルのほか、.wprpで自作したものも併用できる。"@ja .

<https://comcomponent.com/knowledge/etw-logging-mode/> a skos:Concept ;
    skos:prefLabel "Memoryモード / Fileモード"@ja ;
    skos:definition "WPRの記録先の2モード。既定のMemoryはメモリ上の循環バッファ、-filemodeを付けたFileは連続したファイルにすべてを記録する。"@ja .

<https://comcomponent.com/knowledge/long-duration-trace/> a skos:Concept ;
    skos:prefLabel "長時間のトレース採取"@ja ;
    skos:definition "記録時間を絞らずにETWトレースを長く採り続けること。ETLファイルが数百MB〜GB級に肥大化し、解析ツールで開けなくなることがある。"@ja ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/wpa/> .

<https://comcomponent.com/knowledge/wpa-graph-explorer/> a skos:Concept ;
    skos:prefLabel "WPAのGraph Explorer"@ja ;
    skos:definition "System Activity・Computation・Storage・Memoryなどのカテゴリでグラフのサムネイルを並べるウィンドウ。"@ja .

<https://comcomponent.com/knowledge/wpa-table-grouping/> a skos:Concept ;
    skos:prefLabel "WPAテーブルの金色バー・青色バー"@ja ;
    skos:definition "金色バーより左の列の順にデータが階層化され、青色バーより右の列が集計値になるという、WPAのテーブルの読み方の規則。"@ja .

<https://comcomponent.com/knowledge/wpa-symbol-path/> a skos:Concept ;
    skos:prefLabel "WPAのシンボル設定"@ja ;
    skos:definition "スタックを関数名で読むためのシンボル読み込みとシンボルパスの構成。既定でMicrosoftの公開シンボルサーバーを参照する。"@ja .

<https://comcomponent.com/knowledge/cpu-usage-sampled/> a skos:Concept ;
    skos:prefLabel "CPU Usage (Sampled)"@ja ;
    skos:definition "約1ミリ秒ごとに全CPUで実行中のスタックを記録したサンプリングデータ。サンプル数の比率がCPU時間の内訳になる。"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/wpa/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/exact-duration-measurement/> ;
    ks:shouldPrecede <https://comcomponent.com/knowledge/cpu-usage-precise/> .

<https://comcomponent.com/knowledge/exact-duration-measurement/> a skos:Concept ;
    skos:prefLabel "1回ごとの正確な実行時間の計測"@ja ;
    skos:definition "個々の操作・関数呼び出しの所要時間を正確に測ること。約1ミリ秒周期のサンプリングでは合間に終わる短い活動が写らないため、サンプリング型のCPU使用率解析は適さない。"@ja .

<https://comcomponent.com/knowledge/wpa-flame-graph/> a skos:Concept ;
    skos:prefLabel "Flame(炎グラフ)表示"@ja ;
    skos:definition "横幅をCPU時間の割合として描く表示。どの呼び出し経路が支配的かが一目で分かる。"@ja ;
    ks:implements <https://comcomponent.com/knowledge/cpu-usage-sampled/> .

<https://comcomponent.com/knowledge/cpu-usage-precise/> a skos:Concept ;
    skos:prefLabel "CPU Usage (Precise)"@ja ;
    skos:definition "コンテキストスイッチの完全な記録。スレッドが何をして待ちに入り、誰に起こされ、どれだけ待たされたかが1行ずつ残る。"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/readythreadstack/> .

<https://comcomponent.com/knowledge/readythreadstack/> a skos:Concept ;
    skos:prefLabel "ReadyThreadStackとReadyingProcess"@ja ;
    skos:definition "待っていたスレッドを起こした側のプロセス・スレッドと、そのときのスタックを示すCPU Usage (Precise)の列。"@ja ;
    ks:implements <https://comcomponent.com/knowledge/critical-path-analysis/> .

<https://comcomponent.com/knowledge/critical-path-analysis/> a skos:Concept ;
    skos:prefLabel "クリティカルパス解析"@ja ;
    skos:definition "待ちを解いた相手を順にたどって、遅延の根元まで到達する分析手法。"@ja .

<https://comcomponent.com/knowledge/lock-contention/> a skos:Concept ;
    skos:prefLabel "ロック競合"@ja ;
    skos:definition "複数のスレッドが同じロックの取得を待って直列化され、スループットが落ちる状態。デッドロックと異なり、ロックの保持者は進行し続ける。"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/cpu-usage-precise/> .

<https://comcomponent.com/knowledge/wpa-disk-usage/> a skos:Concept ;
    skos:prefLabel "WPAのDisk UsageとFile I/O"@ja ;
    skos:definition "IO Time by Process, IO TypeやService Time by Process, Path Nameなどで、どのプロセスがどのファイルにどれだけ時間を使ったかを見るグラフ群。"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpr/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/admin-rights/> ;
    schema:description "基本手順は管理者権限で wpr -start GeneralProfile -filemode → 事象を再現 → wpr -stop の3行で、-start/-stop/-cancel/-status/-profilesの構文がある。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/wpr-command-line-options>, <https://learn.microsoft.com/windows-hardware/test/wpt/introduction-to-wpr> ;
    ks:verifiedAt "2026-08-21" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpr/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/wpr-recording-profile/> ;
    schema:description "CPU usage・Disk I/O activity・File I/Oなどの組み込み記録プロファイルがあり、複数を同時に指定したり自作の.wprpを併用したりできる。使える組み込みプロファイルはwpr -profilesで確認する。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/built-in-recording-profiles>, <https://learn.microsoft.com/windows-hardware/test/wpt/wpr-command-line-options> ;
    ks:verifiedAt "2026-08-21" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpr/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/etw-logging-mode/> ;
    schema:description "既定のMemoryモードは古いイベントから上書きされる循環バッファなので、いつ起きるか分からない事象を待ち受けて発生したら止める使い方に向く。-filemodeのFileモードは上書きで消えない代わりに上限がディスクの空き容量だけになる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/logging-mode> ;
    ks:verifiedAt "2026-08-21" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/long-duration-trace/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/wpa/> ;
    schema:description "数分のGeneralProfileでもETLは数百MB〜GB級になり得て、時間を絞らず長く採ったトレースは大きすぎてWPAで解析できないことがある。長く採るほど良いは逆効果になる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/logging-mode>, <https://learn.microsoft.com/windows-hardware/test/wpt/wpr-how-to-topics> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpa/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/wpa-graph-explorer/> ;
    schema:description "ETLを開くと、System Activity・Computation・Storage・Memoryなどのカテゴリでグラフのサムネイルが並び、見たいグラフをAnalysisタブへドラッグして使う。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/graph-explorer> ;
    ks:verifiedAt "2026-08-21" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpa/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/wpa-table-grouping/> ;
    schema:description "金色バーより左の列の順にデータが階層化され、青色バーより右の列が集計値になる。列をドラッグして並べ替えること自体が分析操作であり、この一点を理解するとWPAのすべてのテーブルが同じ読み方になる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/graphs> ;
    ks:verifiedAt "2026-08-21" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpa/> ;
    rdf:predicate ks:configuredBy ;
    rdf:object <https://comcomponent.com/knowledge/wpa-symbol-path/> ;
    schema:description "スタックを関数名で読むにはTrace > Load Symbolsを実行する。_NT_SYMBOL_PATHが未設定でも既定でMicrosoftの公開シンボルサーバーを参照するため、Windows本体のスタックはインターネット接続があれば解決できる。自社アプリの関数名まで見るにはPDBのフォルダーをシンボルパスへ追加する。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/loading-symbols>, <https://learn.microsoft.com/windows-hardware/test/wpt/load-symbols-or-configure-symbol-paths> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cpu-usage-sampled/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/wpa/> ;
    schema:description "プリセットUtilization by Process, Stackを適用し、Weightの大きい順にプロセスを見てStack列を展開していくと、CPUを焼いている関数へ辿り着く。"@ja ;
    ks:evidence <https://learn.microsoft.com/troubleshoot/windows-server/support-tools/support-tools-xperf-wpa-wpr>, <https://learn.microsoft.com/windows-hardware/test/wpt/optimizing-performance-and-responsiveness-exercise-2> ;
    ks:verifiedAt "2026-08-21" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cpu-usage-sampled/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/exact-duration-measurement/> ;
    schema:description "Sampledは約1ミリ秒ごとのサンプリングなので、サンプルの合間に終わる短い活動は写らない。合計としてどこがCPUを使ったかを見る道具であって、1回ごとの正確な実行時間を測る道具ではない。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/optimizing-performance-and-responsiveness-exercise-2> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpa-flame-graph/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/cpu-usage-sampled/> ;
    schema:description "Flame表示は横幅をCPU時間の割合として描くため、どの呼び出し経路が支配的かが一目で分かる。CPU Usage (Sampled)にはFlame by Process, Stackというプリセットも用意されている。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/graphs> ;
    ks:verifiedAt "2026-08-21" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cpu-usage-precise/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/readythreadstack/> ;
    schema:description "NewThreadStackがそのスレッドがどのスタックで待ちに入ったかを、Waitsが待っていた時間を、ReadyingProcess / ReadyingThreadIdが待ちを解いた相手を、ReadyThreadStackが起こした側のスタックを示す。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/cpu-analysis> ;
    ks:verifiedAt "2026-08-21" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/readythreadstack/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/critical-path-analysis/> ;
    schema:description "起こした相手が別のスレッドや別のプロセスなら、今度はそのスレッドを同じ手順で調べる。この鎖を根元まで辿ったものが遅延のクリティカルパスになる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/cpu-analysis>, <https://learn.microsoft.com/windows-hardware/test/wpt/optimizing-performance-and-responsiveness-exercise-3> ;
    ks:verifiedAt "2026-08-21" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/lock-contention/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/cpu-usage-precise/> ;
    schema:description "NewThreadStackがWaitForSingleObjectやEnterCriticalSectionならロック待ちで、1本のロックに全ワーカーが並んでいる様子がそのまま見える。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/cpu-analysis> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cpu-usage-sampled/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/cpu-usage-precise/> ;
    schema:description "全体のCPU使用率が低いことはCPUがボトルネックでないことを意味しない。16コアのPCでは1コアに張り付いたシリアル処理も全体では6%程度にしか見えないため、まずSampledで特定のコア・スレッドの張り付きが無いかを確認してから待ち解析へ進む。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/optimizing-performance-and-responsiveness-exercise-2>, <https://learn.microsoft.com/windows-hardware/test/wpt/cpu-analysis> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpa/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/wpa-disk-usage/> ;
    schema:description "StorageカテゴリのDisk UsageとFile I/Oでは、IO Time by Process, IO TypeやService Time by Process, Path Nameで、どのプロセスがどのファイルにどれだけ時間を使ったかを見られる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/list-of-wpa-graphs> ;
    ks:verifiedAt "2026-08-22" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpr/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/wpa/> ;
    schema:description "顧客環境ではwpr.exeで採るだけ、読むのは手元のWPAという分担が現場の基本形になる。ソフトを入れられないサーバーでも採取はできる。"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/introduction-to-wpr>, <https://learn.microsoft.com/windows-hardware/test/wpt/windows-performance-analyzer> ;
    ks:verifiedAt "2026-08-21" ;
    ks:certainty "established" .
