# 因果関係スライス ## 定義 ワークフロー中心の[[分散トレーシング]]が保存する因果関係は、Lamport の happens-before 関係の一部を切り出したもの(スライス)である。真の因果関係は分からず、happens-before 関係は無関係な依存を含み(過剰)、システム外の影響経路を見落とす(不足)。そのため基盤は用途に合わせて一部のスライスだけを保存する。全部を保存するとオーバーヘッドが大きすぎる(ソフトウェアのテイント追跡で 2 倍から 8 倍の遅延)。([[@2016__SoCC__Principled workflow-centric tracing of distributed systems]]) ## 主なスライス - **サブミッタ保存**: 潜在的な作業(書き戻しキャッシュ内のデータなど)を、最初にそれを投入したリクエストへ帰属させる。資源帰属に向く。Retro、Stardust 原版、Quanto、Whodunit が保存する。 - **トリガ保存**: 潜在的な作業を、その実行を引き起こしたリクエストへ帰属させる。クリティカルパス上の全作業を示せるので、性能診断・SLO 達成に向く。Stardust 改訂版、X-Trace、Pivot Tracing ほか多くの実装が暗黙に保存する。 - **構造の保存**: フォーク、ジョイン、並行性の保存。分散プロファイリング以外の性能タスクで要る。 - **リクエスト間のスライス**: トリガとサブミッタの両立や、ロック競合の保存。Retro は前者を保存する。 ## 未編纂の観察 ## 未解決の問い ## 関連 - ソース: [[@2016__SoCC__Principled workflow-centric tracing of distributed systems]] - 概念: [[分散トレーシング]] / [[トレースサンプリング]] / [[トレーシングオーバーヘッド]] / [[クリティカルパス分析]]