# eBPF
## 定義
eBPF(extended Berkeley Packet Filter)は、Linux カーネル(およびユーザ空間ランタイム)で**サンドボックス化された小さなプログラムをカーネル再コンパイル・モジュール追加なしに安全に実行**する仕組み。verifier が事前にプログラムの安全性(終了性・メモリアクセス)を検査し、kprobe/uprobe・tracepoint・XDP/TC・LSM・sched_ext などのフックに接続して、カーネルの可視化(テレメトリ)とカーネル挙動の拡張(ネットワーク・セキュリティ・スケジューリング)を行う。([[@2026__eunomia.dev__eBPF × AI-LLMs - The Convergence of System Observability and AI]]) 本 vault では [[go-conntracer-bpf]](カーネル内フローバンドリング)がその社会実装の 1 つ。([[@2025__Kyoto University__Scaling Telemetry Workloads in Cloud Applications - Techniques for Instrumentation, Storage, and Mining]])
## 横断的知見
- **eBPF×AI は双方向の共生ループで整理される(eBPF for AI / AI for eBPF)**: [[@2026__eunomia.dev__eBPF × AI-LLMs - The Convergence of System Observability and AI]] は eBPF と AI の関係を 2 方向に分ける。(a)**eBPF for AI** — カーネル層の高忠実度テレメトリで AI/ML ワークロードを観測・最適化([[AgentSight]] の <3% オーバーヘッドのエージェント追跡、GPU の uprobe トレース、eGPU の GPU オフロード)。(b)**AI for eBPF** — LLM がカーネル拡張を生成・検証([[Kgent]]/[[GPTtrace]]、SimpleBPF、DiffSpec、LLM スケジューラ合成)。本 wiki が一次で扱ってきた AIOps/SRE 群が**アプリケーション層**の話だったのに対し、eBPF はその下の**カーネル層**で同じ「観測 → 診断/制御」を行う別レイヤーとして接続する。(Source: [[@2026__eunomia.dev__eBPF × AI-LLMs - The Convergence of System Observability and AI]])
- **「情報を絞る」課題がカーネル層でも反復する**: 本 wiki の AIOps 群が観測した「テレメトリを取りすぎると害」([[agentic SRE]]・[[テレメトリ]]・[[特徴量削減]])は、eBPF の世界では「重い ML/LLM 推論はユーザ空間へオフロードし、eBPF はカーネル内の高性能な**検知/事前フィルタ層**に徹する」という設計指針(XDP/TC によるトラフィック事前選別、eBPF^ML の事前検証済みモデル)として現れる。データ削減を**最上流(計装=カーネル)**で行う発想は [[テレメトリ]] の博士論文の設計指針(計装層と分析層の両端で文脈を使って絞る)と連続する。(Source: [[@2026__eunomia.dev__eBPF × AI-LLMs - The Convergence of System Observability and AI]], [[@2025__Kyoto University__Scaling Telemetry Workloads in Cloud Applications - Techniques for Instrumentation, Storage, and Mining]])
- **生成系を検証器で囲むのが AI for eBPF の定石**: [[Kgent]](LLM 生成 + Z3 記号検査 + テスト、約 80%)・SimpleBPF(LLM 生成 + 意味検査 + LLM 最適化)・DiffSpec(NL 仕様から差分テスト)は、いずれも LLM の生成を**形式/意味検査で囲んだ閉ループ**にして信頼性を担保する。これは [[agentic SRE]] の緩和で「安全に巻き戻せる反復」([[Transactional No-Regression]])が性能の源泉だったのと同型で、出力が実行時/カーネルにしか効かない領域では「検証付き反復」が共通の信頼性パターンになる。(Source: [[@2026__eunomia.dev__eBPF × AI-LLMs - The Convergence of System Observability and AI]])
- **「eBPF for AI」が awesome list の例示から具体的な一次研究群へ実体化した**: 二次情報([[@2026__eunomia.dev__eBPF × AI-LLMs - The Convergence of System Observability and AI]])が eGPU・GPU uprobe トレースとして列挙していた方向が、いまや一次論文で裏付く——[[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]](分散 LLM 推論のリクエスト単位トレース)・[[@2026__arXiv__ProfInfer - An eBPF-based Fine-Grained LLM Inference Profiler]](オンデバイス推論の演算子レベルプロファイリング)・[[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]](PTX 注入で eBPF を GPU 内へ拡張)。共通の主張は「eBPF はソース改変なしの非侵襲・低オーバーヘッド計装で、ベンダー専用ツール(CUPTI/NVBit/Nsight)のロックインと高オーバーヘッドを回避する」点([[GPU観測性]]・[[動的インストルメンテーション]]に詳述)。eInfer/eGPU の著者には [[Yusheng Zheng]]・[[Yiwei Yang]] という [[eunomia-bpf]] 系の人脈が重なり、awesome list の編者と研究実装の担い手が連続している。(Source: [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]], [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]], [[@2026__arXiv__ProfInfer - An eBPF-based Fine-Grained LLM Inference Profiler]])
- **eBPF の適用先がカーネルからユーザ空間ランタイム・GPU へ拡張し、「どこで計装するか」が再定義される**: [[bpftime]](ユーザ空間 eBPF ランタイム)を基盤に、[[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]] は eBPF バイトコードを PTX に JIT して GPU カーネルへ注入する。ホスト側 uprobe(eInfer/ProfInfer)は GPU 内部(SM 利用率)に届かない一方、PTX 注入はデバイス内に踏み込むが稼働中書き換えの安全性が課題。eBPF の「フックをどの層に置くか」がカーネル/ユーザ空間/GPU と多層化し、[[テレメトリ]] の「計装をどこで行うか」の問いを GPU/デバイス層まで広げた。(Source: [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]], [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]])
- **eBPF を AI/ML フレームワーク層のユーザ空間関数トレースへ適用する**: [[@2025__IWQoS__eACGM - Non-instrumented Performance Tracing and Anomaly Detection towards Machine Learning Systems]] は eBPF をカーネルネットワーク監視ではなく AI/ML フレームワーク層(CUDA/Python/PyTorch/NCCL)のユーザ空間関数トレースへ適用し、汎用 eBPF ツール(bcc・bpftrace)が捉えないフレームワークイベント・分散通信メトリクスを取得する(PyTorch ランタイム関数の特定にリバースエンジニアリングを要する)。(Source: [[@2025__IWQoS__eACGM - Non-instrumented Performance Tracing and Anomaly Detection towards Machine Learning Systems]], [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]])
- **eBPF はログの「書き込み自体を抑止する」最上流フィルタとしても機能する**: [[@2023__ICSE__LogReducer - Identify and Reduce Log Hotspots in Kernel on the Fly]] は eBPF で `sys_write()` をインターセプトし、ログホットスポット(少数テンプレートがストレージの大半を占有)をカーネル空間でドロップする。ログメッセージあたり最大 2,000 ns・CPU 0.008% の極低オーバーヘッドで、WeChat(60 万台)のストレージを 39.08% 削減した。これは本 wiki が積み上げてきた「計装層で情報を絞る」設計指針——[[テレメトリ]] の博士論文が言う「文脈豊富な両端で削減」——を eBPF でログのライフサイクル最上流(ディスク書き込み前)に適用した先行例であり、下流のログ圧縮やログパースが前提とする書き込み済みデータの量そのものを削る点で相補的。同時に [[eACGM]] の SYSU グループが 2025 年にさらに AI/ML 計装へ拡張する系譜の出発点でもある。(Source: [[@2023__ICSE__LogReducer - Identify and Reduce Log Hotspots in Kernel on the Fly]], [[@2025__Kyoto University__Scaling Telemetry Workloads in Cloud Applications - Techniques for Instrumentation, Storage, and Mining]])
## eBPF トレーシングの基礎技術(2021 時点)
[[Yuuki Tsubouchi]] の技術解説([[@2021__yuuk.io__Linux eBPF Tracing Technology]])が体系化した基礎知識。eBPF×AI 研究群の実装的背景をなす。
**イベントソースの 2 系統**:
- *動的計装*: Kprobe(カーネル関数、2004)・Uprobe(ユーザ空間関数、2012)
- *静的計装*: tracepoints(カーネルイベント)・USDT(アプリ定義、アプリ対応が必要)
**開発ツールチェーン(探索→プロトタイプ→本番)**:
- **[[bpftrace]]** — アドホックトレーシング特化スクリプト言語(探索・デバッグ段階)
- **[[BCC]]** — ラピッドプロトタイピング向けフレームワーク、70+ ツール内包
- **[[libbpf]] + CO-RE** — 本番実装。CO-RE(Compile Once - Run Everywhere)は BTF とランタイム再配置でカーネルバージョン横断のポータビリティを実現
これが [[go-conntracer-bpf]](カーネル内フローバンドリング、[[libbpf]] 実装)の技術的基盤であり、2024 年以降の [[eInfer]]・[[ProfInfer]]・[[eACGM]] における eBPF 計装の共通実装知識でもある。
## 未解決の問い
- [[AgentSight]] はコーディングエージェント(claude code 等)をカーネル層で観測する。この**エージェント可観測性**を [[agentic SRE]] の安全制御([[SRE AI Autonomy Levels]]・[[Actus]])に接続し、「エージェントの行動をカーネルで監視・遮断する」一次研究は本 wiki にまだ無い。eBPF+LSM による AI エージェントのアクチュエーション制御を ingest して横断を厚くする。
- 本ソースは awesome list(二次情報)であり、各プロジェクトのオーバーヘッド/精度の主張は原典未確認。[[AgentSight]](arXiv:2508.02736)・[[Kgent]](eBPF'24)など中核論文を一次で取り込み、数値主張を裏取りする価値がある。
- eBPF を GPU(eGPU/gpu_ext)やユーザ空間([[bpftime]])へ広げる動きは、[[テレメトリ]] の「計装をどこで行うか」を再定義する。GPU クラスタ運用([[GPUクラスタ運用]]・[[LLM学習モニタリング]])のカーネル/デバイス層計装と、本 wiki の machine-level 箇所特定([[Pulse]]・[[Minder]])はどう接続するか。
- ホスト側 eBPF 傍受(eInfer/ProfInfer)は GPU 内部(SM 利用率・ワープ実行)に届かず[[ハードウェアカウンタ]]に依存が残る。PTX 注入([[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]])がこの死角を埋めるとして、稼働中 GPU カーネル書き換えの長期安定性・安全性をどう担保するか([[GPU観測性]]・[[動的インストルメンテーション]] の問いと共通)。
- ランタイム関数シンボルに依存する eBPF 計装(eInfer)は推論エンジンのバージョン更新で保守コストが生じる。CO-RE 的可搬性を GPU/LLM ランタイムへどこまで持ち込めるか。
- eBPF uprobe による高頻度 AI/ML 関数トレースのオーバーヘッドは、数百〜数千 GPU 規模でどこまで「低オーバーヘッド」を保つか(eACGM の評価は 2 ノード止まり)。([[@2025__IWQoS__eACGM - Non-instrumented Performance Tracing and Anomaly Detection towards Machine Learning Systems]])
## 関連
- ソース: [[@2021__yuuk.io__Linux eBPF Tracing Technology]] / [[@2023__SIGCOMM__Network-Centric Distributed Tracing with DeepFlow]] / [[@2026__eunomia.dev__eBPF × AI-LLMs - The Convergence of System Observability and AI]] / [[@2025__Kyoto University__Scaling Telemetry Workloads in Cloud Applications - Techniques for Instrumentation, Storage, and Mining]] / [[@2025__eBPF__eInfer - Unlocking Fine-Grained Tracing for Distributed LLM Inference with eBPF]] / [[@2025__HCDS__eGPU - Extending eBPF Programmability and Observability to GPUs]] / [[@2026__arXiv__ProfInfer - An eBPF-based Fine-Grained LLM Inference Profiler]] / [[@2025__IWQoS__eACGM - Non-instrumented Performance Tracing and Anomaly Detection towards Machine Learning Systems]] / [[@2023__ICSE__LogReducer - Identify and Reduce Log Hotspots in Kernel on the Fly]]
- 概念: [[テレメトリ]] / [[agentic SRE]] / [[分散トレーシング]] / [[GPUクラスタ運用]] / [[LLM学習モニタリング]] / [[ログ解析]] / [[暗黙のコンテキスト伝搬]]
- エンティティ: [[AgentSight]] / [[Kgent]] / [[GPTtrace]] / [[bpftime]] / [[eunomia-bpf]] / [[Yusheng Zheng]] / [[go-conntracer-bpf]] / [[LogReducer]] / [[BCC]] / [[bpftrace]] / [[libbpf]] / [[Yuuki Tsubouchi]] / [[DeepFlow]]
- 関連 MOC: [[AI Infra Telemetry - MOC]]
## 出典
- [[@2026__eunomia.dev__eBPF × AI-LLMs - The Convergence of System Observability and AI]](共生ループ・eBPF for AI / AI for eBPF・Part 1–3)
- [[@2025__Kyoto University__Scaling Telemetry Workloads in Cloud Applications - Techniques for Instrumentation, Storage, and Mining]]([[go-conntracer-bpf]] = カーネル内フローバンドリング)
- [[@2023__ICSE__LogReducer - Identify and Reduce Log Hotspots in Kernel on the Fly]](`sys_write()` インターセプトによるカーネル空間ログフィルタリング、WeChat で 39.08% 削減)
- [[@2021__yuuk.io__Linux eBPF Tracing Technology]](eBPF 基礎技術: アーキテクチャ・イベントソース・BCC/bpftrace/libbpf+CO-RE 開発ワークフロー)