おことわり
- 論文発行年度が古いことから、Fault Injection Techniqueのみ、まとめています
- Fault Injection という分野の概念をざっくり理解したいというモチベーションです
- ソフトウェア屋なので、ソフトウェア観点が多めです
論文情報
Hsueh, Mei-Chen, Timothy K. Tsai, and Ravishankar K. Iyer. "Fault injection techniques and tools." Computer 30.4 (1997): 75-82.
Fault Injection とは
- ある機能における設計段階の潜在的な故障やエラー
- システムの試験運用、本運用時の故障やエラー
の理解をするための仕組み
動作環境 |
用途 |
simulation |
耐故障性(fault tolerant)やシステム信頼性(System Dependability)の評価 |
prototype |
1. ボトルネックの評価 |
2. 耐故障性、システム信頼性の保証評価 |
3. システム稼働中に発生するFAIL原因の調査 |
4. エラーと回復検知カバレッジの把握 |
workloadによるシステム評価とFault Injectionによる評価の違い
- workloadによる評価
- 実用性の観点からシステムを評価する
- エンジニアが評価することが多い
- Fault Injection による評価
- システムのエラーモデル保証を評価する
- テスト評価が評価することが多い
Fault Injection システムの機能要件
- fault detection
- fault isolation
- fault reconfiguration
- recovery capabilities
Fault Injection アーキテクチャ
モジュール |
機能 |
実現例 |
fault injector |
システムへエラーコマンド注入。エラータイミング、種別、エラー実行時間を管理する。 |
SW / HW |
workload generator |
テストシナリオの生成と実行 |
アプリケーションベンチマーク、統合テスト |
monitor |
タスクや実行コマンドの監視およびデータの初期化 |
- |
data collector |
リアルタイムでのデータ収集 |
- |
サブモジュール |
機能 |
Fault Lib |
Fail Injectorに提供する機能の柔軟性かつポータビリティをもったライブラリ群 |
data analyzer |
リアルタイム・オフタイム両方のデータ解析機能を持ったツール |
Fault Injector の実現方法
ソフトウェア、ハードウェアの2種類ある。
Injectorの使い分けは発生させるエラー種別、エラー実現方法に依存する。(例)メモリのビット化け
実現方法 |
pros |
cons |
ハードウェア |
エラー注入タイミングが制御可能 |
設計・実装・検証コストが高い |
ソフトウェア |
エラーとして提供する機能の柔軟性 |
ソフトウェアが介入できないケースはエラー注入不可 |
実行時間など、時間精度管理が高くない |
ワークロードに対する影響大。性能の揺れ原因になる |
ハードウェアによるFault Injector実現方法 [1/2]
実現方法 |
実現方法の概要 |
手段 |
fault injection with contact |
システム内回路にピンを用意し、専用接続する |
pin-level socket and probes |
fault injection without contact |
外部から物理的にエラー現象を発生させる |
iron radiation, electronic magnetic interface |
ハードウェアによるFault Injector実現方法 [2/2]
手段 |
手段の説明 |
pros |
cons |
active probes |
回路内部に物理的ピン接続して、ある処理タイミングでエラーを発生させる |
設計、実装コスト小 |
評価対象のシステム回路の電流値が理論値とは異なる |
socket insertion |
外部から特殊パラメータできた時にエラーが発生するような回路を作る |
システムに与える影響小 |
実装コスト、周辺回路へのコスト大 |
external interface |
外部から物理的にシステムにダメージを与える |
自然発生現象に近いエラー発生モデル |
エラー発生タイミングやエラー時間の検証が難しい |
ソフトウェアによるFault Injector実現方法
手段 |
説明 |
pros |
cons |
compile-time injection |
システムコンパイル時にエラー注入プログラムを埋め込む方式 |
設計・実装がシンプル |
ワークロードプログラムに対するエラー注入タイミングが決め打ちになる |
run-time injection (timeout) |
予めタイマーをセットし、制限時間になったらシステムを全停止させる |
設計・実装がシンプル |
発生できるエラー回数は1回。その後は応答不可 |
run-time injection (trap/exception) |
エラー発生タイミングで割り込みハンドラにジャンプさせる |
設計モデルがシンプルにできる |
処理中モジュールのパラメータ取得が難しい |
run-time injection (code insertion) |
エラー発生タイミングに追加処理を注入する |
特定の命令前にエラー発生させることができる |
ユーザモード実行なので、機能整合性の管理が煩雑になる |
まとめ
- Fault Injection の目的の実現方法(Pros and Cons)をまとめた
- 目的:システム設計段階でのエラー発生モデルの検証。システム試験運用段階、運用段階でのとシステムエラー検証の補助
- 実現方法:シミュレーション、プロトタイプ(ハードウェア、ソフトウェア両方)