# 非侵入プロファイリング
## 定義
非侵入プロファイリング(non-intrusive profiling)とは、対象システムのソースコードやバイナリを改変せず、外部から観測可能なシグナル(ログ・ネットワークパケット・システムコール・カーネルイベント等)のみを用いて性能プロファイリングや障害診断を行う取り組みである。「非侵入(non-intrusive)」の範囲はコンテキストによって異なり、(a)ソースコード改変なし、(b)再コンパイル/バイトコード改変なし、(c)プロセス内計装なし(カーネル/ネットワーク層での観測のみ)の3段階がある。(Source: [[@2014__OSDI__lprof - A Non-intrusive Request Flow Profiler for Distributed Systems]])
非侵入手法の主な動機は: (1)本番環境への即座の適用性(計装のデプロイが不要)、(2)性能オーバーヘッドの最小化、(3)レガシーシステムやクローズドソースシステムへの適用である。
## 手法の分類
| 観測層 | 代表手法 | 非侵入レベル |
|------|------|------|
| ランタイムログ + バイトコード静的解析 | [[lprof]] | ソースコード改変なし、バイトコード読み取りのみ |
| ネットワークパケット(eBPF) | DeepFlow、ChainScope | プロセス内計装なし |
| カーネルイベント(eBPF kprobe/uprobe) | eACGM、eInfer | ソースコード改変なし |
| カーネルのソケット操作 | go-conntracer-bpf | ソースコード改変なし |
## 横断的知見
- **ログベースの非侵入手法とネットワーク層ベースの非侵入手法は「見える情報」が補完的**: lprof はログに現れるメソッド実行・識別子・タイミングを縫合するためアプリケーションレベルのフローを再構築できるが、ネットワーク通信詳細は見えない。DeepFlow/ChainScope はネットワークパケットを観測するためアプリ層のメソッド実行は見えないが、サービス間の通信レイテンシは正確に計測できる。両者を組み合わせることでカバレッジが向上する。(Source: [[@2014__OSDI__lprof - A Non-intrusive Request Flow Profiler for Distributed Systems]], [[@2026__CoNEXT__ChainScope - Balancing Accuracy and Overhead in Non-intrusive Distributed Tracing of Microservices]])
- **「計装なし」でも静的解析というオフライン知識獲得コストが残る**: lprof はランタイム計装なしだが、バイトコード静的解析という事前作業が必要であり、コード変更のたびに再実行が必要。カーネル eBPF 系(ChainScope・DeepFlow)はコードベース知識を不要とし、任意のバイナリに即適用できる点で「より非侵入的」といえる。非侵入性は計装コストを排除するが、別の事前コストを生む可能性がある。(Source: [[@2014__OSDI__lprof - A Non-intrusive Request Flow Profiler for Distributed Systems]], [[@2026__CoNEXT__ChainScope - Balancing Accuracy and Overhead in Non-intrusive Distributed Tracing of Microservices]])
## 未解決の問い
- eBPF 系の非侵入トレーシング(ChainScope・DeepFlow・eACGM)と lprof 系のログベース非侵入プロファイリングを組み合わせた場合、両者が独立して収集した情報をどう統合・突き合わせるか。タイムスタンプの精度と同期が課題になるか。
- Java エージェントによる自動計装(OpenTelemetry Java Agent)が普及した現代では、非侵入手法は「計装自体のコストが下がった」状況でどこに存在価値を持つか。
## 関連
- 概念: [[分散トレーシング]] / [[リクエストフロー再構築]] / [[ログ解析]] / [[Fault Localization]]
- エンティティ: [[lprof]] / [[go-conntracer-bpf]] / [[DeepFlow]]
- ソース: [[@2014__OSDI__lprof - A Non-intrusive Request Flow Profiler for Distributed Systems]]
- 関連 MOC: [[SRE - MOC]] / [[AIOps - MOC]]
## 出典
- [[@2014__OSDI__lprof - A Non-intrusive Request Flow Profiler for Distributed Systems]](§1 Introduction、§8 Related Work)