JP5630671B2 - フォールトトレラントシステム - Google Patents
フォールトトレラントシステム Download PDFInfo
- Publication number
- JP5630671B2 JP5630671B2 JP2012204607A JP2012204607A JP5630671B2 JP 5630671 B2 JP5630671 B2 JP 5630671B2 JP 2012204607 A JP2012204607 A JP 2012204607A JP 2012204607 A JP2012204607 A JP 2012204607A JP 5630671 B2 JP5630671 B2 JP 5630671B2
- Authority
- JP
- Japan
- Prior art keywords
- virtual machine
- primary
- guest
- interrupt
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1687—Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
- G06F11/1482—Generic software techniques for error detection or fault masking by means of middleware or OS functionality
- G06F11/1484—Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1683—Temporal synchronisation or re-synchronisation of redundant processing components at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
- G06F11/1691—Temporal synchronisation or re-synchronisation of redundant processing components using a quantum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2038—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant with a single idle spare processing component
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Hardware Redundancy (AREA)
Description
ここで、前記実行中断位置は、プログラムカウンタ値で示されることができる。
また、前記プライマリゲストOSおよび前記プライマリゲストOS上で動作するアプリケーションは、中間言語で記述され、前記実行中断位置は、前記擬似割り込み入力の際に実行した中間言語命令の位置で示されることができる。
また、前記セカンダリ仮想マシンは、前記コンテキスト切り替えを、コンテキスト切り替え命令、あるいは、コンテキストを切り替えるためのイベントを発生させることにより行なうことができる。
また、前記セカンダリ仮想マシンは、前記タイミング情報で指定された分岐命令の回数分、分岐命令を実行するまで、前記セカンダリゲストOSを動作させた後、前記実行中断位置を通過する前に、分岐命令を実行した場合は、故障が発生したと判定することができる。
次に、上記構成のフォールトトレラントシステム10における、プライマリ仮想マシン130とセカンダリ仮想マシン230の実行状態を同期させる並列同期動作の概要について図2のフローチャートを参照して説明する。具体的には、プライマリハイパーバイザ120が、プライマリハードウェア110から外部割り込みを受けた場合の一連の動作について説明する。
次に、フォールトトレラントシステム10の各ブロックの動作について第1実施例、第2実施例、第3実施例により詳細に説明する。
第1実施例として、プライマリマシン100のCPU111とセカンダリマシン200のCPU211とが同じアーキテクチャの場合の動作について説明する。ここで、CPUアーキテクチャが同じとは、CPU命令セットに互換性があることを意味する。
まず、割り込み頻度調整部132が行なう割り込み頻度調整動作(S103)について説明する。プライマリ仮想マシン130の割り込み頻度調整部132は、すべての外部割り込みに対して擬似割り込みの入力を行なうのではなく、アプリケーション150に要求される性能や精度、許容通信ディレイ等を満たす範囲で、擬似割り込みの頻度を調整する。
次に、割り込みタイミング調整部133が行なう擬似割り込みタイミング調整動作(S105)について説明する。擬似割り込みタイミング調整は、セカンダリゲストOS240が同じ位置で中断できるように、プライマリゲストOS140のクリティカルセクションを避けて擬似割り込みを入力するための調整である。
次に、同期情報生成部135が行なう同期情報の生成動作(S107)について説明する。プライマリマシン100のCPU111とセカンダリマシン200のCPU211とが同じアーキテクチャの場合、同期情報の同期タイミング情報における実行中断位置は、CPU命令コードの実行停止位置で示され、プログラムカウンタ値を用いることができる。
次に、指定分岐回数実行部232が行なう指定分岐回数実行動作(S109)について説明する。指定分岐回数実行動作は、セカンダリ仮想マシン230が、同期タイミング情報の分岐回数で示された回数でセカンダリゲストOS240を中断させる動作である。
次に、指定位置コンテキスト切り替え部233が行なう指定位置コンテキスト切り替え動作(S110)について説明する。指定位置コンテキスト切り替え動作は、セカンダリゲストOS240を指定分岐回数で中断した後、指定された実行中断位置で、ブレーク命令を用いずに、セカンダリ仮想マシン230にコンテキストを切り替える動作である。
第2実施例として、プライマリマシン100のCPU111とセカンダリマシン200のCPU211とが異なるアーキテクチャの場合の動作について説明する。ここで、CPUアーキテクチャが異なるとは、CPU命令セットに互換性がないことを意味する。
第1実施例のCPU命令同期モードにおいて、擬似割り込みタイミング調整動作(S105)は、CPUアーキテクチャの詳細が判別している場合と、CPUアーキテクチャの詳細が不明の場合とで処理が異なっていたが、第2実施例の中間言語同期モードでは、CPUアーキテクチャの詳細が判別している場合と同じ処理を行なう。
第1実施例のCPU命令同期モードでは、同期情報の生成動作(S107)において、同期タイミング情報に含まれる実行中断位置は、CPU命令コードの実行停止位置で示し、プログラムカウンタ値を用いた。また、同期タイミング情報に含まれる分岐実行回数は、前回の同期タイミング情報生成時から実行されたCPU命令コードの分岐回数で示した。
第1実施例のCPU命令同期モードでは、指定位置コンテキスト切り替え動作(S110)において、セカンダリ仮想マシン230に専用のコンテキスト切り替え命令が用意されている場合は、セカンダリゲストOS240の実行中断位置に、コンテキスト切り替え命令を埋め込み、専用のコンテキスト切り替え命令が用意されていない場合は、実行中断位置で擬似割り込みやCPU例外のイベントを発生させてコンテキスト切り替えが行なわれるように設定した。第2実施例の中間言語同期モードでも、中間言語レベルの実行中断位置で、CPU命令変換により同様の設定を行なう。
次に、第3実施例として、プライマリマシン100とセカンダリマシン200とのハードウェア構成に相違がある場合の並列同期動作について説明する。プライマリマシン100のプライマリハードウェア110とセカンダリマシン200のセカンダリハードウェア210は、CPU(111、211)、メモリ(112、212)、ストレージ等のデバイス(115、215)等、種々のハードウェアで構成されているが、双方のハードウェアの機能や性能は必ずしも一致するわけではない。
プライマリ仮想マシン130の同期情報生成部135は、プライマリ仮想マシン130とセカンダリ仮想マシン230の並列同期動作に先立ち、セカンダリ仮想マシン230からセカンダリ仮想マシン230に関する動作性能情報を収集する。
あるハードウェア機能を一方の仮想マシン(130、230)だけが持っている場合は、機能を持っている方の仮想マシン(130、230)がその機能を利用しないようにし、双方の仮想マシン(130、230)がそのハードウェア機能を持たない状態で動作する。
ハードウェア機能の能力や容量が異なる場合は、動作に相違が生じる処理をゲストOS(140、240)の外部で実行する。ゲストOS(140、240)の外部とは、仮想マシン(130、230)やハイパーバイザ(120、220)、ハードウェア(110、210)などである。
並列同期動作の開始前の調整によってもプライマリ仮想マシン130とセカンダリ仮想マシン230の処理速度差が解消しきれない場合には、同期情報生成部135、同期補正部235は、並列同期動作時に、以下のような同期補正を行なう。
仮想マシン(130、230)から磁気ディスク、SSD、CD、DVD、テープ等のストレージデバイス(115、215)にアクセスを行なう場合、ストレージデバイス(115、215)の個体差や経年劣化等によりアクセス要求に対する完了待ち時間にばらつきが生じる。このばらつきによる同期ずれを防ぐためには、遅い方の完了待ち時間に合わせる必要があり、同期待ちが発生して実行速度の低下を招くことになる。
仮想マシン(130、230)は、ストレージデバイス(115、215)の内容を仮想マシン(130、230)に割り当てられたメモリ上に展開し、ストレージへのアクセスをメモリアクセスに置き換える。このメモリを「仮想ストレージ」と称する。仮想ストレージの内容が更新された場合は、ゲストOS(140、240)からのアクセスとは非同期にストレージデバイス(115、215)に反映させる。
ゲストOS(140、230)がRAMディスクを利用できる場合は、ストレージデバイス(115、215)のエミュレーションにゲストOS(140、230)で設定されたRAMディスクを使用する。RAMディスクとは、読み書きに対する待ち時間がゼロであり、完了割り込みが発生しないデバイスである。例えば、Linux(登録商標)などのOSでRAMディスクを利用できる。
Claims (5)
- プライマリハイパーバイザが稼働するプライマリマシン上に形成され、前記プライマリハイパーバイザからの外部割り込みに基づく擬似割り込みをプライマリゲストOSに入力するプライマリ仮想マシンと、
セカンダリハイパーバイザが稼働するセカンダリマシン上に形成され、前記プライマリ仮想マシンから伝達された前記擬似割り込みのタイミング情報に基づいて、擬似割り込みをセカンダリゲストOSに入力するセカンダリ仮想マシンと、を備えたフォールトトレラントシステムであって、
前記プライマリ仮想マシンは、
前記擬似割り込みのタイミング情報に、前記擬似割り込みを入力するまでに前記プライマリゲストOSが実行した分岐命令の回数と、前記擬似割り込みを入力した際の実行中断位置とを含めて前記セカンダリ仮想マシンに伝達し、
前記セカンダリ仮想マシンは、
前記タイミング情報を伝達されると、前記タイミング情報で指定された分岐命令の回数分、分岐命令を実行するまで、前記セカンダリゲストOSを動作させ、
その後、最初に通過する前記実行中断位置で、前記セカンダリゲストOSを中断させて、擬似割り込みを入力するものであり、
前記実行中断位置で、コンテキスト切り替えを行なうことにより、前記セカンダリゲストOSを中断させることを特徴とするフォールトトレラントシステム。 - 前記実行中断位置は、プログラムカウンタ値で示されることを特徴とする請求項1に記載のフォールトトレラントシステム。
- 前記プライマリゲストOSおよび前記プライマリゲストOS上で動作するアプリケーションは、中間言語で記述され、
前記実行中断位置は、前記擬似割り込み入力の際に実行した中間言語命令の位置で示されることを特徴とする請求項1に記載のフォールトトレラントシステム。 - 前記セカンダリ仮想マシンは、
前記コンテキスト切り替えを、コンテキスト切り替え命令、あるいは、コンテキストを切り替えるためのイベントを発生させることにより行なうことを特徴とする請求項1〜3のいずれか1項に記載のフォールトトレラントシステム。 - 前記セカンダリ仮想マシンは、
前記タイミング情報で指定された分岐命令の回数分、分岐命令を実行するまで、前記セカンダリゲストOSを動作させた後、
前記実行中断位置を通過する前に、分岐命令を実行した場合は、故障が発生したと判定することを特徴とする請求項1〜4のいずれか1項に記載のフォールトトレラントシステム。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012204607A JP5630671B2 (ja) | 2012-09-18 | 2012-09-18 | フォールトトレラントシステム |
US14/029,181 US9400666B2 (en) | 2012-09-18 | 2013-09-17 | Fault tolerant system and method for performing fault tolerant |
CN201310429933.8A CN103678022B (zh) | 2012-09-18 | 2013-09-18 | 容错系统和用于执行容错的方法 |
EP13184949.9A EP2709009B1 (en) | 2012-09-18 | 2013-09-18 | Fault tolerant system and method for performing fault tolerance |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012204607A JP5630671B2 (ja) | 2012-09-18 | 2012-09-18 | フォールトトレラントシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014059749A JP2014059749A (ja) | 2014-04-03 |
JP5630671B2 true JP5630671B2 (ja) | 2014-11-26 |
Family
ID=49182170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012204607A Active JP5630671B2 (ja) | 2012-09-18 | 2012-09-18 | フォールトトレラントシステム |
Country Status (4)
Country | Link |
---|---|
US (1) | US9400666B2 (ja) |
EP (1) | EP2709009B1 (ja) |
JP (1) | JP5630671B2 (ja) |
CN (1) | CN103678022B (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8201169B2 (en) * | 2009-06-15 | 2012-06-12 | Vmware, Inc. | Virtual machine fault tolerance |
US10613789B1 (en) * | 2014-03-31 | 2020-04-07 | EMC IP Holding Company LLC | Analytics engine using consistent replication on distributed sites |
US9430284B2 (en) * | 2014-06-26 | 2016-08-30 | Vmware, Inc. | Processing virtual machine objects through multistep workflows |
US9286105B1 (en) | 2015-03-16 | 2016-03-15 | AO Kaspersky Lab | System and method for facilitating joint operation of multiple hypervisors in a computer system |
CN105468434A (zh) * | 2015-12-11 | 2016-04-06 | 浪潮(北京)电子信息产业有限公司 | 一种处理虚拟机异常的方法及装置 |
US10374874B2 (en) * | 2016-10-18 | 2019-08-06 | Nicira, Inc. | Reducing data plane disruption in a virtual switch |
CN107479941A (zh) * | 2017-09-26 | 2017-12-15 | 深圳市茁壮网络股份有限公司 | 一种程序容错方法及程序容错装置 |
JP7327235B2 (ja) | 2020-03-24 | 2023-08-16 | 横河電機株式会社 | フォールトトレラントシステム |
CN114741233A (zh) * | 2020-12-23 | 2022-07-12 | 华为技术有限公司 | 快速启动方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH086800A (ja) * | 1994-06-16 | 1996-01-12 | Toshiba Corp | データ処理装置及びマイクロプロセッサ |
US6496847B1 (en) * | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
US6499048B1 (en) | 1998-06-30 | 2002-12-24 | Sun Microsystems, Inc. | Control of multiple computer processes using a mutual exclusion primitive ordering mechanism |
JP3470948B2 (ja) * | 1999-01-28 | 2003-11-25 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ |
US7603663B2 (en) * | 2003-05-20 | 2009-10-13 | Intel Corporation | Apparatus and methods for restoring synchronization to object-oriented software applications in managed runtime environments |
US20050132364A1 (en) * | 2003-12-16 | 2005-06-16 | Vijay Tewari | Method, apparatus and system for optimizing context switching between virtual machines |
US8572606B1 (en) * | 2005-12-29 | 2013-10-29 | Vmware, Inc. | System and method for avoiding synchronization bugs through virtualization |
US8132169B2 (en) * | 2006-07-21 | 2012-03-06 | International Business Machines Corporation | System and method for dynamically partitioning an application across multiple processing elements in a heterogeneous processing environment |
JP2008080695A (ja) | 2006-09-28 | 2008-04-10 | Seiko Epson Corp | 吐出検査装置および吐出検査方法 |
JP4871174B2 (ja) | 2007-03-09 | 2012-02-08 | 株式会社日立製作所 | 仮想計算機システム |
JP4468426B2 (ja) * | 2007-09-26 | 2010-05-26 | 株式会社東芝 | 高可用システム及び実行状態制御方法 |
US7840839B2 (en) * | 2007-11-06 | 2010-11-23 | Vmware, Inc. | Storage handling for fault tolerance in virtual machines |
US7844954B2 (en) * | 2007-11-06 | 2010-11-30 | Vmware, Inc. | Using branch instruction counts to facilitate replay of virtual machine instruction execution |
US9027003B2 (en) | 2008-03-31 | 2015-05-05 | Vmware, Inc. | Precise branch counting in virtualization systems |
JP5268469B2 (ja) * | 2008-07-23 | 2013-08-21 | 株式会社東芝 | 高可用システム及び実行状態制御方法 |
-
2012
- 2012-09-18 JP JP2012204607A patent/JP5630671B2/ja active Active
-
2013
- 2013-09-17 US US14/029,181 patent/US9400666B2/en active Active
- 2013-09-18 EP EP13184949.9A patent/EP2709009B1/en active Active
- 2013-09-18 CN CN201310429933.8A patent/CN103678022B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
EP2709009B1 (en) | 2015-06-17 |
US20140082619A1 (en) | 2014-03-20 |
JP2014059749A (ja) | 2014-04-03 |
EP2709009A1 (en) | 2014-03-19 |
US9400666B2 (en) | 2016-07-26 |
CN103678022A (zh) | 2014-03-26 |
CN103678022B (zh) | 2016-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5630671B2 (ja) | フォールトトレラントシステム | |
JP5700009B2 (ja) | フォールトトレラントシステム | |
EP2810168B1 (en) | Run-time instrumentation sampling in transactional-execution mode | |
AU2013233830B2 (en) | Controlling operation of a run-time instrumentation facility from a lesser-privileged state | |
EP2825965B1 (en) | Transformation of a program-event-recording event into a run-time instrumentation event | |
AU2013233826B2 (en) | Run-time instrumentation reporting | |
Petrovic et al. | Implementing virtual machine replication: A case study using xen and kvm | |
JP5660096B2 (ja) | フォールトトレラントシステム | |
JP5660097B2 (ja) | フォールトトレラントシステム | |
Li et al. | A Performance Evaluation of Embedded Multi-core Mixed-criticality System Based on PREEMPT_RT Linux | |
Chen et al. | Asymmetric virtual machine replication for low latency and high available service | |
JP4825058B2 (ja) | 計算機のエミュレーション方法 | |
EP2810169B1 (en) | Run-time-instrumentation controls emit instruction | |
Nikolic et al. | Hard real-time multiprocessor scheduling resilient to core failures |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140626 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140708 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140821 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140911 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140924 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5630671 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |