# Pivot Tracing [[Brown University]] の [[Jonathan Mace]]・[[Ryan Roelke]]・[[Rodrigo Fonseca]] が SOSP 2015 で発表した分散システム向け動的因果監視フレームワーク([[@2015__SOSP__Pivot Tracing - Dynamic Causal Monitoring for Distributed Systems]])。 ## 概要 動的計装(dynamic instrumentation)と新たな関係演算子 **happened-before join(⋈→)** を組み合わせ、ユーザーがシステム実行中に任意のメトリクスをあるコンポーネントで定義し、コンポーネント・マシン境界をまたいで別のコンポーネントのイベントに基づいて選択・フィルタ・集約できる能力を提供する。 ## 主要構成要素 - **トレースポイント**: アドバイスをウィーブ(weave)できるシステムコード上の地点。アスペクト指向の pointcut に対応。無効時はゼロオーバーヘッド。 - **アドバイス**: クエリをコンパイルした中間表現。Observe・Pack・Unpack・Filter・Emit の 5 操作から構成される。 - **バゲージ(Baggage)**: リクエストに付随して伝搬するタプルコンテナ。X-Trace・Dapper のメタデータ伝搬を一般化し、境界越えの happened-before 関係を保持する。interval tree clock でブランチ・マージを管理する。 - **happened-before join(⋈→)**: Lamport の happened-before 関係に基づく結合演算子。同一リクエスト実行内で因果的に先行するイベントでタプルを結合できる。 ## 評価 HDFS・HBase・MapReduce・YARN の 4 システムを 8 ノードクラスタで評価。アドバイス無効時は 0% オーバーヘッド、実用的なクエリでも最大 0.3〜6% 程度。HDFS レプリカ選択バグ(HDFS-6268)と faulty ネットワークケーブルによるリンプロックをそれぞれ段階的なクエリ解析で特定した。 ## 関連概念 - [[分散トレーシング]]: Dapper・X-Trace を源流とする分散トレーシングの系譜 - [[動的計装]]: DTrace・Fay の動的計装と happened-before join を組み合わせた点が新規性の核心 - [[Fault Localization]]: クロスコンポーネント根本原因特定への応用 (Source: [[@2015__SOSP__Pivot Tracing - Dynamic Causal Monitoring for Distributed Systems]])