# 動的計装
## 定義
動的計装(dynamic instrumentation)とは、対象プログラムのソース改変・再コンパイル・再起動を伴わずに、実行中または実行直前にプローブを注入・除去して挙動を観測する技術である。DTrace は本番システムでのゼロ・プローブ効果と安全なプローブ実行を設計原則として確立し、Pivot Tracing はその動的性を分散システムの因果追跡へ拡張した。近年は eBPF の kprobe/uprobe/tracepoint、GPU への PTX 注入、NVBit による SASS 書き換え、LLVM パスによるコンパイル時計装まで対象が広がっている。(Source: [[@2004__USENIX-ATC__Dynamic Instrumentation of Production Systems]], [[@2015__SOSP__Pivot Tracing - Dynamic Causal Monitoring for Distributed Systems]], [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]])
## 横断的知見
- **本番向け動的計装の核は、無効時ゼロ・プローブ効果と安全性である**: DTrace は、無効なプローブが実行時コストを生まず、誤ったプローブがシステム障害を起こさないことを本番導入の前提に置いた。この原則は、現代の [[eBPF]] verifier や kprobe/uprobe の動的アタッチにも継承される。(Source: [[@2004__USENIX-ATC__Dynamic Instrumentation of Production Systems]])
- **Pivot Tracing は「動的に何を測るか」と「分散境界を越えて因果を追う」を接続した**: DTrace や Fay が主に単一 OS インスタンス内の動的計装を扱ったのに対し、Pivot Tracing はバゲージ伝搬と happened-before join により、スレッド・プロセス・マシン境界を越える実行時クエリを実現した。動的計装が単なるプローブ挿入から、分散トレーシングの問い合わせ言語へ拡張された転換点である。(Source: [[@2015__SOSP__Pivot Tracing - Dynamic Causal Monitoring for Distributed Systems]])
- **計装を差し込む抽象度が、観測対象とオーバーヘッドを決める**: ホスト側 eBPF uprobe/tracepoint は推論ランタイム関数を低侵襲に捉えるが、GPU 内部のワープ実行や SM 利用率には届きにくい。PTX 注入(eGPU)、SASS 書き換え(NVBit)、LLVM コンパイル時計装は GPU 側に近づく代わりに、安全性・移植性・検証コストが重くなる。(Source: [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]], [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]], [[@2024__TOPC__Low-Overhead Trace Collection and Profiling on GPU Compute Kernels]])
- **CUDA API 関数への uprobe は、動的計装の「ライブラリ境界」活用例を示す**: [[@2026__eunomia.dev__CUDA Events - eBPF-based CUDA API Tracing]] は `libcudart.so` の `cudaMalloc`/`cudaMemcpy`/`cudaLaunchKernel` などに enter/return プローブを動的にアタッチし、ソース改変なしで GPU 利用の入口をモニタリングする。ライブラリ境界の関数シグネチャに依存するため、CUDA ランタイムの ABI が変わらない限りアプリケーションレベルでの移植性は高いが、関数内部のメモリアクセスや分岐までは観測できない。(Source: [[@2026__eunomia.dev__CUDA Events - eBPF-based CUDA API Tracing]])
- **LLM 推論の観測では、タイムスタンプ収集から実行時意味の復元へ進んでいる**: ProfInfer は `ggml_tensor` 構造体を eBPF で辿り、演算子名・型・テンソル次元・活性化エキスパート ID を抽出する。動的計装は「いつ何が呼ばれたか」だけでなく、モデル実行の意味構造を復元する段階に入っている。(Source: [[@2026__MLSys2026__ProfInfer - An eBPF-based Fine-Grained LLM Inference Profiler]])
- **観測性ツールは性能診断だけでなく正しさ検証にも使われる**: PICKER は GPU カーネルのメモリアクセスを動的に追跡し、起動引数からべき等性をマイクロ秒スケールで判定する。計装はプロファイリングの補助ではなく、チェックポイント対象を減らすための正しさ判定基盤にもなる。(Source: [[@2024__arXiv__Microsecond-scale Dynamic Validation of Idempotency for GPU Kernels]])
## 未解決の問い
- 稼働中 GPU カーネルへの PTX 注入や SASS 書き換えを、長期運用でどのように安全に検証するか。
- ランタイム関数シンボルに依存する eBPF 計装は、推論エンジン更新時にどこまで自動追従できるか。
- Pivot Tracing のバゲージ伝搬を、eBPF の非侵入計装だけでどこまで自動化できるか。
- 複数の動的プローブが同時に有効な場合の相互作用、オーバーヘッド、観測バイアスをどう評価するか。
## 関連
- 概念: [[DTrace]] / [[eBPF]] / [[GPU観測性]] / [[プローブ効果]] / [[ハードウェアカウンタ]] / [[テレメトリ]] / [[分散トレーシング]] / [[LLM推論]]
- エンティティ: [[Pivot Tracing]] / [[BCC]] / [[libbpf]] / [[NVBit]] / [[CUPTI]] / [[PTX]]
- 関連 MOC: [[AI Infra Telemetry - MOC]]
## 出典
- [[@2004__USENIX-ATC__Dynamic Instrumentation of Production Systems]](DTrace の原理、ゼロ・プローブ効果、安全性、ユーザー/カーネル統合計装)
- [[@2015__SOSP__Pivot Tracing - Dynamic Causal Monitoring for Distributed Systems]](バゲージ伝搬、happened-before join、分散動的計装)
- [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]](分散 LLM 推論の eBPF トレーシング)
- [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]](GPU への PTX 注入型 eBPF)
- [[@2026__MLSys2026__ProfInfer - An eBPF-based Fine-Grained LLM Inference Profiler]](LLM 推論演算子とテンソル構造の実行時復元)
- [[@2024__arXiv__Microsecond-scale Dynamic Validation of Idempotency for GPU Kernels]](GPU カーネルべき等性検証)
- [[@2024__TOPC__Low-Overhead Trace Collection and Profiling on GPU Compute Kernels]](LLVM コンパイル時計装)
- [[@2026__eunomia.dev__CUDA Events - eBPF-based CUDA API Tracing]](CUDA ランタイム API への uprobe 動的計装実装例)