@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/perfview-dotnet-trace-performance-analysis/#article>
    schema:about <https://comcomponent.com/knowledge/perfview/>, <https://comcomponent.com/knowledge/dotnet-trace/> ;
    schema:mentions <https://comcomponent.com/knowledge/etw/>, <https://comcomponent.com/knowledge/eventpipe/>, <https://comcomponent.com/knowledge/cpu-sampling/>, <https://comcomponent.com/knowledge/thread-time-collection/>, <https://comcomponent.com/knowledge/inclusive-exclusive-time/>, <https://comcomponent.com/knowledge/cpu-bound-slowness/>, <https://comcomponent.com/knowledge/blocking-slowness/>, <https://comcomponent.com/knowledge/dotnet-counters/>, <https://comcomponent.com/knowledge/eventsource-instrumentation/>, <https://comcomponent.com/knowledge/nettrace-file/>, <https://comcomponent.com/knowledge/speedscope/>, <https://comcomponent.com/knowledge/perfview-stack-viewer/>, <https://comcomponent.com/knowledge/pdb/>, <https://comcomponent.com/knowledge/wpr-wpa/> .

<https://comcomponent.com/knowledge/perfview/> a skos:Concept ;
    skos:prefLabel "PerfView"@ja ;
    skos:definition "MicrosoftがGitHubで無償公開している、ETWベースの.NET性能調査ツール。CPU・GC・ブロック時間をスタックビューアーで分析できる。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/etw/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/blocking-slowness/> ;
    ks:implements <https://comcomponent.com/knowledge/perfview-stack-viewer/> ;
    ks:uses <https://comcomponent.com/knowledge/nettrace-file/> ;
    ks:uses <https://comcomponent.com/knowledge/cpu-sampling/> .

<https://comcomponent.com/knowledge/dotnet-trace/> a skos:Concept ;
    skos:prefLabel "dotnet-trace"@ja ;
    skos:definition "EventPipeを使い、CPUサンプリングやGC・メモリ割り当てなどのイベントを時系列で収集する.NETのトレース収集ツール。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/eventpipe/> ;
    ks:notRecommendedFor <https://comcomponent.com/knowledge/blocking-slowness/> ;
    ks:recommendedFor <https://comcomponent.com/knowledge/cpu-bound-slowness/> ;
    ks:uses <https://comcomponent.com/knowledge/cpu-sampling/> .

<https://comcomponent.com/knowledge/etw/> a skos:Concept ;
    skos:prefLabel "ETW(Event Tracing for Windows)"@ja ;
    skos:definition "OS全体を貫く、カーネルからアプリまで同じ時間軸で記録できるWindows専用のトレース基盤。カーネル全体を対象にするような特権的なセッションの開始・停止には管理者権限が要るが、トレースACLの委譲やPerformance Log Usersへの所属、ユーザーモードのプライベートセッションでは管理者権限なしでも扱える。"@ja ;
    skos:altLabel "Event Tracing for Windows" .

<https://comcomponent.com/knowledge/eventpipe/> a skos:Concept ;
    skos:prefLabel "EventPipe"@ja ;
    skos:definition ".NETランタイムに組み込まれた、管理者権限が不要で全OSで動くトレース機構。見えるのはマネージドコードとランタイムの範囲に限られ、カーネルイベントやネイティブスタックは取れない。"@ja .

<https://comcomponent.com/knowledge/blocking-slowness/> a skos:Concept ;
    skos:prefLabel "ブロックによる遅さ"@ja ;
    skos:definition "CPUは暇なのに待たされて遅い症状で、ロック待ち・DB/HTTP応答待ち・ファイルI/Oなどが原因になり、既定のCPUサンプリングでは原因が写らない。"@ja ;
    skos:altLabel "ブロック時間"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/thread-time-collection/> .

<https://comcomponent.com/knowledge/cpu-bound-slowness/> a skos:Concept ;
    skos:prefLabel "CPU boundな遅さ"@ja ;
    skos:definition "CPUを使い切っていて遅い症状で、CPUサンプリングで原因の関数を特定できる。"@ja ;
    ks:verifiedBy <https://comcomponent.com/knowledge/cpu-sampling/> .

<https://comcomponent.com/knowledge/perfview-stack-viewer/> a skos:Concept ;
    skos:prefLabel "PerfViewのスタックビューアー"@ja ;
    skos:definition "ByName・CallTree・Callers/CalleesなどのタブとStart/End・GroupPatsなどのフィルターを持つ、PerfViewの収集結果を分析する画面。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/inclusive-exclusive-time/> .

<https://comcomponent.com/knowledge/inclusive-exclusive-time/> a skos:Concept ;
    skos:prefLabel "inclusive/exclusive(Inc/Exc)"@ja ;
    skos:definition "スタックビューアーでの集計の基本区分。exclusiveはその関数自身が実行中だったサンプル数、inclusiveはその関数と呼び出し先すべての合計を表す。"@ja ;
    skos:altLabel "Inc/Exc" .

<https://comcomponent.com/knowledge/cpu-sampling/> a skos:Concept ;
    skos:prefLabel "CPUサンプリング"@ja ;
    skos:definition "既定で1ミリ秒ごと(プロセッサごと)にコールスタックを記録する収集方式で、CPUを使い切って遅い(CPU bound)原因の特定に使う。"@ja .

<https://comcomponent.com/knowledge/thread-time-collection/> a skos:Concept ;
    skos:prefLabel "ThreadTime収集"@ja ;
    skos:definition "コンテキストスイッチのイベントを追加で記録し、各スレッドのCPU時間とブロック時間を合わせて追えるようにするPerfViewの収集オプション。"@ja ;
    skos:altLabel "Thread Time" ;
    ks:requires <https://comcomponent.com/knowledge/etw/> .

<https://comcomponent.com/knowledge/dotnet-counters/> a skos:Concept ;
    skos:prefLabel "dotnet-counters"@ja ;
    skos:definition "実行中の.NETプロセスのGCやWorking Setなどの傾向をリアルタイムに監視する診断ツール。"@ja ;
    ks:shouldPrecede <https://comcomponent.com/knowledge/dotnet-trace/> .

<https://comcomponent.com/knowledge/eventsource-instrumentation/> a skos:Concept ;
    skos:prefLabel "EventSourceによる独自イベント計装"@ja ;
    skos:definition "業務処理の開始・終了などをStart/Stopイベントとして発行できる.NETの計装機構で、PerfView(ETW)・dotnet-trace(EventPipe)どちらの収集対象にも含められる。"@ja ;
    skos:altLabel "EventSource" ;
    ks:uses <https://comcomponent.com/knowledge/etw/> ;
    ks:uses <https://comcomponent.com/knowledge/eventpipe/> .

<https://comcomponent.com/knowledge/nettrace-file/> a skos:Concept ;
    skos:prefLabel ".nettraceファイル"@ja ;
    skos:definition "dotnet-trace collectの収集結果として生成されるトレースファイルで、PerfView・Visual Studio・speedscopeで開ける。"@ja .

<https://comcomponent.com/knowledge/speedscope/> a skos:Concept ;
    skos:prefLabel "speedscope"@ja ;
    skos:definition ".nettraceなどを変換して開ける、ブラウザーで動く軽量なフレームグラフのビューアー形式。"@ja ;
    ks:uses <https://comcomponent.com/knowledge/nettrace-file/> .

<https://comcomponent.com/knowledge/pdb/> a skos:Concept ;
    skos:prefLabel "PDB(プログラムデータベース)"@ja ;
    skos:definition "ビルド後の.dll/.exeと、ソースコード上の行・変数名を結びつけるデバッグ情報ファイル。アプリケーションの実行には通常不要だが、デバッグ・例外調査・ダンプ解析に使う。"@ja ;
    skos:altLabel "Program Database" ;
    skos:altLabel "シンボルファイル"@ja .

<https://comcomponent.com/knowledge/wpr-wpa/> a skos:Concept ;
    skos:prefLabel "WPR/WPA(Windows Performance Recorder/Analyzer)"@ja ;
    skos:definition "ETWを土台にした、ディスクI/O・電源・起動時間などOS全体の詳細分析に強いWindows標準の性能分析ツール群。"@ja ;
    skos:altLabel "Windows Performance Recorder" ;
    skos:altLabel "Windows Performance Analyzer" ;
    skos:altLabel "wpr" ;
    ks:uses <https://comcomponent.com/knowledge/etw/> .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/perfview/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/etw/> ;
    schema:description "PerfViewはETWを土台にした性能調査ツールで、ETWセッションの開始には管理者権限が必要になる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventsource-collect-and-view-traces> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-trace/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/eventpipe/> ;
    schema:description "dotnet-traceはEventPipeベースの収集ツールで、対象プロセスと同じユーザーであれば管理者権限なしで収集できる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventpipe> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-trace/> ;
    rdf:predicate ks:notRecommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/blocking-slowness/> ;
    schema:description "dotnet-trace(EventPipe)はコンテキストスイッチを取得できないため、ブロックによる遅さの原因調査には向かず、PerfViewのThreadTime収集が必要になる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventpipe> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/perfview/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/blocking-slowness/> ;
    schema:description "マシン全体・ネイティブ・ブロック時間まで見たい場合はETWベースのPerfViewが必要になる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventsource-collect-and-view-traces> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-trace/> ;
    rdf:predicate ks:recommendedFor ;
    rdf:object <https://comcomponent.com/knowledge/cpu-bound-slowness/> ;
    schema:description "迷ったらまずdotnet-traceから始めるのが基本の使い分けで、CPUサンプリングによるCPU boundな遅さの特定に使える"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-trace> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/perfview/> ;
    rdf:predicate ks:implements ;
    rdf:object <https://comcomponent.com/knowledge/perfview-stack-viewer/> ;
    schema:description "PerfViewで収集結果(.etl.zip)のCPU Stacksを開くと、ByName/CallTree/Callers/CalleesタブとIncPats/ExcPats/GroupPats/Foldのフィルターを持つスタックビューアーが開く"@ja ;
    ks:evidence <https://github.com/microsoft/perfview/blob/main/src/PerfView/SupportFiles/UsersGuide.htm> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/perfview-stack-viewer/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/inclusive-exclusive-time/> ;
    schema:description "PerfViewのスタックビューアーはByNameタブでExc(exclusive)とInc(inclusive)の2列を起点に集計を読ませる"@ja ;
    ks:evidence <https://github.com/microsoft/perfview/blob/main/src/PerfView/SupportFiles/UsersGuide.htm> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/cpu-bound-slowness/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/cpu-sampling/> ;
    schema:description "CPU boundな遅さの原因は、既定で1ミリ秒ごとに集めるCPUサンプリングのスタックで確認できる"@ja ;
    ks:evidence <https://github.com/microsoft/perfview/blob/main/src/PerfView/SupportFiles/UsersGuide.htm> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/blocking-slowness/> ;
    rdf:predicate ks:verifiedBy ;
    rdf:object <https://comcomponent.com/knowledge/thread-time-collection/> ;
    schema:description "CPUは暇なのに待たされて遅い症状は、コンテキストスイッチを記録するThreadTime収集で確認できる"@ja ;
    ks:evidence <https://github.com/microsoft/perfview/blob/main/src/PerfView/SupportFiles/UsersGuide.htm> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/thread-time-collection/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/etw/> ;
    schema:description "ThreadTime収集はETWのコンテキストスイッチイベントを追加で記録する機能であり、ETWベースのPerfViewでのみ有効化できる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventsource-collect-and-view-traces> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-counters/> ;
    rdf:predicate ks:shouldPrecede ;
    rdf:object <https://comcomponent.com/knowledge/dotnet-trace/> ;
    schema:description "いきなりトレースを取るより、まずdotnet-countersで主要メトリクスの傾向を見て、次に取るべきトレースの種類を絞ってから収集するのがよい"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-counters> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/eventsource-instrumentation/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/etw/> ;
    schema:description "EventSourceで定義した独自イベントは、PerfViewのEventsビューで時刻を確認でき、ETWの収集対象に含められる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventsource-collect-and-view-traces> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/eventsource-instrumentation/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/eventpipe/> ;
    schema:description "EventSourceの独自イベントは、dotnet-trace collectの--providersオプションでEventPipe経由でも同じように収集できる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-trace> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/perfview/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/nettrace-file/> ;
    schema:description "dotnet-traceで収集した.nettraceファイルをPerfViewで開いて分析する併用も日常的に行われる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/eventsource-collect-and-view-traces> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/speedscope/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/nettrace-file/> ;
    schema:description "dotnet-trace convertで.nettraceファイルをSpeedscope形式に変換すると、speedscopeでブラウザー上のフレームグラフとして開いて利用できる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-trace> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/perfview-stack-viewer/> ;
    rdf:predicate ks:requires ;
    rdf:object <https://comcomponent.com/knowledge/pdb/> ;
    schema:description "自社モジュールの関数名がアドレス表示になってしまう場合はシンボル(PDB)が解決できていないためで、その場合はビルド成果物のPDBを手元に揃えておく必要がある(PDBがなくてもビューアー自体はアドレス表示のまま動作する)"@ja ;
    ks:evidence <https://learn.microsoft.com/en-us/dotnet/core/diagnostics/symbols> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/wpr-wpa/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/etw/> ;
    schema:description "WPR/WPAは同じETWを土台にした、よりOS全体の詳細分析に強い調査ツールである"@ja ;
    ks:evidence <https://learn.microsoft.com/windows-hardware/test/wpt/windows-performance-recorder> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/dotnet-trace/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/cpu-sampling/> ;
    schema:description "dotnet-trace collectの既定プロファイル(dotnet-common + dotnet-sampled-thread-time)には、スレッドのCPUサンプリングが含まれる"@ja ;
    ks:evidence <https://learn.microsoft.com/dotnet/core/diagnostics/dotnet-trace> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/perfview/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/cpu-sampling/> ;
    schema:description "PerfViewの既定収集は、全プロセッサで1ミリ秒ごとのCPUサンプル(コールスタック付き)とCLRの主要イベントを含む"@ja ;
    ks:evidence <https://github.com/microsoft/perfview/blob/main/src/PerfView/SupportFiles/UsersGuide.htm> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "established" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/perfview/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/thread-time-collection/> ;
    schema:description "PerfViewでは収集時にThread Timeオプションを有効にすると、コンテキストスイッチのイベントが追加で記録される"@ja ;
    ks:evidence <https://github.com/microsoft/perfview/blob/main/src/PerfView/SupportFiles/UsersGuide.htm> ;
    ks:verifiedAt "2026-08-01" ;
    ks:certainty "context-dependent" .
