FaultTolerance
faults
FaultInjection

論文『Fault Injection Technique and Tools』のFault Injection Techniqueのまとめ

More than 1 year has passed since last update.

おことわり

  • 論文発行年度が古いことから、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.

https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19970022435.pdf


Fault Injection とは

  1. ある機能における設計段階の潜在的な故障やエラー
  2. システムの試験運用、本運用時の故障やエラー の理解をするための仕組み
動作環境 用途
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 injection model (1).png

モジュール 機能 実現例
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)をまとめた
    • 目的:システム設計段階でのエラー発生モデルの検証。システム試験運用段階、運用段階でのとシステムエラー検証の補助
    • 実現方法:シミュレーション、プロトタイプ(ハードウェア、ソフトウェア両方)