# 因果関係スライス
## 定義
ワークフロー中心の[[分散トレーシング]]が保存する因果関係は、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]]
- 概念: [[分散トレーシング]] / [[トレースサンプリング]] / [[トレーシングオーバーヘッド]] / [[クリティカルパス分析]]