# プローブ効果
## 定義
プローブ効果(probe effect)とは、計装(計測コードの挿入)がシステムの実際の動作に与える影響である。特に**無効なプローブによるオーバーヘッド**を「disabled probe effect」と呼ぶ。
DTrace は本番適用の前提として **ゼロ・プローブ効果(zero probe effect)** を設計原則に掲げる。「DTrace が存在しないときとまったく同じ速度でシステムが動作する」ことが要件であり、有効化された計装でも「絶対安全(absolutely safe)」— 誤操作でシステム障害を引き起こさない — を保証する([[@2004__USENIX-ATC__Dynamic Instrumentation of Production Systems]])。
静的計装(LTT・ATOM・Purify 等)は、プローブが無効であっても条件チェックや分岐を含む小さなオーバーヘッドを常に誘発する。これが本番常駐を妨げる根本的な理由である。
## 横断的知見
- **「disabled probe effect ゼロ」の実現方法は計装方式によって異なる**: DTrace FBT は命令書き換え(no-op / trap 置換)で有効化まで影響ゼロを維持。SDT は no-op マクロでコンパイル時に計装点を埋め込み 150+ 箇所追加しても性能差を計測不能にした。[[eBPF]] の kprobe/uprobe も同様の動的パッチ機構を採用。一方、静的計装の LTT は約 45 イベントを固定定義し、イベントごとに小さなプローブ効果が蓄積する。(Source: [[@2004__USENIX-ATC__Dynamic Instrumentation of Production Systems]])
- **GPU 計装では「計装抽象度の選択」がプローブ効果の大きさを決定する**: ホスト側 eBPF uprobe は GPU カーネルに直接は触れず、PTX IR 注入(eGPU)は SASS バイナリ書き換え(NVBit)より低オーバーヘッドと主張される。計装を入れる抽象度の高低がプローブ効果の「場所」と大きさを変える構造は DTrace 時代から不変。(Source: [[動的インストルメンテーション]])
## 未解決の問い
- [[eBPF]] の verifier が関数呼び出し・ループ展開を制限することで実質的に「安全性保証」を与えるが、DTrace の DIF(前向き分岐のみ)と形式的に同等かどうか比較した研究はあるか。
- 「本番で常時有効化できる計装」と「診断時のみ有効化する計装」の運用境界はどこに引かれるべきか。DTrace の投機的トレースは「常時オン + 後決めフィルタ」という第三の軸を提示した。
## 関連
- ソース: [[@2004__USENIX-ATC__Dynamic Instrumentation of Production Systems]]
- 概念: [[DTrace]] / [[動的インストルメンテーション]] / [[eBPF]] / [[オブザーバビリティ]]
- エンティティ: [[Bryan Cantrill]] / [[Sun Microsystems]]
## 出典
- [[@2004__USENIX-ATC__Dynamic Instrumentation of Production Systems]](probe effect の定義と zero probe effect の設計原則)