170 likes | 344 Views
ASE 2011 Software Model Checking. 論文 1 Identifying Future Field Accesses in Exhaustive State Space Traversal Pavel Parizek and Ondrej Lhotak. 概要. 内容 モデル検査の効率化 モデル検査 : 自動検証手法 システムの取り得る状態を網羅的に探索 研究の対象 検証対象 Java のマルチスレッドプログラム モデル検査器 Java PathFinder (JPF). Java PathFinder.
E N D
ASE 2011 Software Model Checking • 論文1 • Identifying Future Field Accesses in Exhaustive State Space TraversalPavelParizek and OndrejLhotak
概要 • 内容 • モデル検査の効率化 • モデル検査:自動検証手法 • システムの取り得る状態を網羅的に探索 • 研究の対象 • 検証対象 • Java のマルチスレッドプログラム • モデル検査器 • Java PathFinder (JPF)
Java PathFinder • In-Situ モデルチェッカー • 実装をそのまま検証 • 独自のVM上でプログラムを制御/実行 • 考慮が必要なスケジューリングを実行 • スレッドで共有しているオブジェクトが更新された場合、可能なスレッド切り替えをすべて考慮 A Thread 1 Thread 2 C B A, B, C: 命令列 C A C sharedObj.set(foo); A C B sharedObj.get(); B B sharedObj.set(foo);
状態削減のアイデア • 観察 • 共有しているオブジェクトでも、将来、他のスレッドが実際にアクセスするとは限らない • 現在のJPFでは、参照をたどってアクセス可能なオブジェクトは共有されていると判断 • Conservative Approximation • アプローチ • 現状態で更新しようとしているオブジェクトのフィールドを、他のスレッドが将来アクセスする可能性があるかどうかを、静的解析をつかって調べる。 • アクセスされないのであれば、ローカルな処理と見なせるので、コンテキストスイッチを考慮しなくてよい。
状態削減のアイデア A Thread 1 Thread 2 C B A, B, C: 命令列 C A C sharedObj.set(foo); A C B sharedObj.get(); B B sharedObj.set(foo); Thread 1 Thread 2 A C A, B, C: 命令列 A B C C sharedObj.set(foo); A B C B sharedObj.set(foo);
静的解析手法 • Field access analysis • CFGを利用 • Pointer analysis • 同じインスタンスかどうかを判定 • Immutable fields analysis • フィールドがimmutableかどうかを判定
結果 • 実装 • 様々な静的解析法をJPFに導入 • WALA library を用いて実装 • 実験 • 7つのプログラムへ適用 • 結果 • Field access analysis が有効 • Pointer analysis はだめ • ほとんど寄与しない • Immutable fields analysisは効果が少ないが、コストも少ない • 感想 • JPFはJava Memory Modelを仮定していない。 • Synchronizedでロックを取るような行儀のよいプログラムでも効果があるか?
ASE 2011 Software Model Checking • 論文2 • Model Checking Distributed Systems by Combining Caching and Process CheckpointingWatcharinLeungwattanakit, CyrilleArtho, Masami Hagiya Yoshinori Tanabe and Mitsuharu Yamamoto
概要 • 内容 • 外部プロセスと相互作用するプログラムのモデル検査 • JPFによる実装 • 基本方針 • SUTのみJPF上で実行 • スケーラブル • Peerがjavaである必要がない SUT: System Under Test Peer 1 SUT Peer 2
提案手法 • Process Checkpointing • 外部プロセス(peer)の応答が非決定的であった場合の取り扱い • 例.鍵交換 (例. Diffie-Hellman) • 乱数値を送信 • IO Caching (ASE’09) • SUTの非決定性の扱い • SUTの状態がバックトラックした際、Peerをリスタートしてキャッシュした送信メッセージを再送し、Peerの状態もバックトラックする JPF Model Checker Cache Peer 1 Peer 2 SUT Checkpointing Environment
Process Checkpointing • Checkpointing • プロセスの状態を二次記憶に保存し、その状態からのリスタートを可能にする • チェックポイントをとるタイミング (1 or 2) • 非決定性の原因となるシステムコール発生時 • time (乱数のシード値となりうる), read(/dev/randomなどを読む) • 必要なときだけチェックポイントをとるため、オーバーヘッド小 • ネットワークIOオペレーション発生時 • Peerのバックトラック時に、リスタート+メッセージ再送の手間が不要
結果 • 実装 • Process CheckpointingはDMTCPを利用 • 実験 • 5種類のアプリケーションの検証を実行 • 実験結果 • Peerが決定的でcheckpointingを使わない場合とくらべて、実行時間が1分を超えるような例では、実行時間はそれほど遅くならない • 多くて10%の増加 • 前頁の2つのチェックポイントのとり方による差はほとんどない
ASE 2011 Software Model Checking • 論文3 • Supporting Domain-Specific State Space Reductions through Local Partial-Order ReductionPeter Bokor, Johannes Kinder, Marco Serafini and NeerajSuri
概要 • 半順序簡約(Partial Order Reduction)の新しい手法の提案 • POR • モデル検査における主要な状態削減手法 • SPIN、LTSAなどのモデルチェッカーで実装 • 互いに依存していない並行トランジションがある場合に、検証に必要なものだけを考慮 1,1,1 a b c t1 t2 1 1 1 2,1,1 1,2,1 [a = 1 & b = 2] t3 [c = 1] t1 t2 t3 t1 t2 2 2 2 2,2,1 1,2,2
Partial Order Reduction • 各状態で検証に必要なトランジションだけを考慮 • どのトランジションを選ぶかが重要 正しい簡約 t1 t2 全体の遷移系 1,1,1 t3 t1 t2 t1 t2 誤った簡約 2,1,1 1,2,1 t1 t2 t3 t1 t2 2,2,1 1,2,2 t3 t1 t2
提案手法LPOR (Local POR) • 単純な遷移選択方法 • トランジションのローカルな情報だけで選択 • 言語、フォーマリズムに容易に適用可能 • 論文では分散システムのモデルへ適用 • 保存される性質 • デッドロック • インバリアント (詳細はテクニカルレポート) • 時相論理CTL*_x(詳細はテクニカルレポート)
実験と結果 • MP-Basset モデルチェッカーに適用 • 著者らによるJPFベースのモデルチェッカー • 3種類のフォールトトレラント分散アルゴリズムに適用 • プロセス数 5~7 • 結果 • 何もしない場合に比べて大幅に状態数・時間を削減(90%に達する場合も) • Dynamic POR(別手法)よりも、モデルにエラーがない場合(全探索が必要な場合)は高速