# Gist
**障害スケッチング([[障害スケッチング]])** の研究プロトタイプ。EPFL DSL と Intel が共同で開発し、SOSP 2015 で発表された([[@2015__SOSP__Failure Sketching - A Technique for Automated Root Cause Diagnosis of In-Production Failures]])。
## 概要
Gist は本番環境で発生した障害に対し、開発者が再現なしに根本原因を診断できるよう「失敗スケッチ」を自動生成するツールである。Gist-server(静的解析・スケッチエンジン)と Gist-client(本番ランタイム)の 2 層構成をとる。
## 主要コンポーネント
- **静的解析器(Static Analyzer)**: LLVM フレームワーク上に実装。後向きスライシングで障害に関与しうる文を特定し、スレッド間手続き制御フローグラフ(TICFG)を構築する
- **スライス精緻化エンジン(Refinement Engine)**: 適応的スライストラッキング(AsT)・Intel Processor Trace・ハードウェアウォッチポイントを組み合わせてスライスを実行時情報で精緻化する
- **失敗スケッチエンジン(Failure Sketch Engine)**: 失敗実行と成功実行の差異から障害予測子(failure predictor)を統計的に特定し、失敗スケッチを生成する
## 実装規模
- 静的解析・計装: 2,673 行(C++)
- Intel PT カーネルドライバ: 664 行(C)
- 協調フレームワーク: 3,165 行(Python)
- Intel PT ソフトウェアシミュレータ: 10,518 行(C++、PIN ベース)
## 評価結果
7 プログラム 11 バグ(Apache・Cppcheck・Curl・Transmission・SQLite・Memcached・Pbzip2)で:
- 平均精度 96%(関連精度 92% + 順序精度 100%)
- 平均ランタイムオーバーヘッド 3.74%
- Mozilla rr と比較して約 166 倍低いオーバーヘッド
プロジェクトページ: http://dslab.epfl.ch/proj/gist/ (2015 年時点)
## 関連
- 概念: [[障害スケッチング]]
- 著者: [[Baris Kasikci]] / [[George Candea]]
- ソース: [[@2015__SOSP__Failure Sketching - A Technique for Automated Root Cause Diagnosis of In-Production Failures]]