JP2016027470A - 高稼働率環境においてアプリケーションを同期的に実行する方法および装置 - Google Patents

高稼働率環境においてアプリケーションを同期的に実行する方法および装置 Download PDF

Info

Publication number
JP2016027470A
JP2016027470A JP2015133056A JP2015133056A JP2016027470A JP 2016027470 A JP2016027470 A JP 2016027470A JP 2015133056 A JP2015133056 A JP 2015133056A JP 2015133056 A JP2015133056 A JP 2015133056A JP 2016027470 A JP2016027470 A JP 2016027470A
Authority
JP
Japan
Prior art keywords
partition
execution
bottom plate
primary
type
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.)
Pending
Application number
JP2015133056A
Other languages
English (en)
Inventor
ルコルティア,ジョルジュ
Lecourtier Georges
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bull SAS
Original Assignee
Bull SAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Bull SAS filed Critical Bull SAS
Publication of JP2016027470A publication Critical patent/JP2016027470A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1687Temporal synchronisation or re-synchronisation of redundant processing components at event level, e.g. by interrupt or result of polling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • G06F11/1691Temporal synchronisation or re-synchronisation of redundant processing components using a quantum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2097Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/82Miscellaneous aspects
    • H04L47/822Collecting or measuring resource availability data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/2015Redundant power supplies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2038Error 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error 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/202Error 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/2046Error 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 where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/87Monitoring of transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

【課題】超高速広帯域ネットワークによって相互接続された複数の計算モジュールを含む高稼働率環境においてアプリケーションを同期的に実行する。
【解決手段】少なくとも、一次及び2次の2つの実行パーティションと、監視パーティションと、を含む複数のパーティション内に複数のモジュールを構成するステップ2000と、一次実行パーティションによって処理された入出力が監視パーティションを介して二次実行パーティションに送信し、各実行パーティションでアプリケーションを実行するステップ2100と、マイクロプロセッサのコンテキスト変化を利用することで実行を同期させるステップ2200と、破局的なエラー信号を監視パーティションに送信するステップ2300と、劣化モードに対して切り替えることで、単一のパーティションで継続される実行を継続するステップ2500を有する。
【選択図】図2

Description

本発明の目的は、高稼働率環境においてアプリケーションを同期的に実行する方法および装置を提供することである。本発明の目的は主に環境における障害許容力を向上させることである。障害許容力(resilience)は、多数の障害を乗り切るための、および、システムがサービスの中断を引き起こすことなく修復されることができるための、システムの能力として定義される。
本発明の分野は、一般に情報処理または通信システムの分野であり、より詳細には、高稼働率サーバを用いるコンピュータ生産システムの分野である。
公知のコンピュータシステムは、全てが、ランダムな瞬間でそれらの一般的な動作に影響するハードウエアまたはソフトウエアに基づいた障害を被る。それらのシステムの一つが、生命および資産の安全に関する重要な機能を管理するとき、障害の存在下における電子システムの挙動は、ユーザに感知される全体的な信頼性の決定的要因になる。この挙動は、そのシステムの障害許容力クラスで定義する。それは、そのシステムを設計する際の技術的な選択に完全に依存している。なぜならば、それは、常に相当なコストを意味するハードウエアレベルでの冗長性に基づいているからである。障害許容力クラスは、従って、コストの最小化と稼働率の最大化との間のトレードオフの結果である。
いくつかのタイプの解決策が、ハードウエアの観点から障害許容力要求に最も適合するように開発されてきている。ハードウエア部品故障の4つのクラスおよびソフトウエア部品障害の3つのクラスは、コンピュータの動作に影響を与えるイベントの重要な例として受け取ることができる。
調べられるハードウエア部品の4つのクラスは、メモリ、入出力回路、電源および冷却部品、およびプロセッサである。
メモリ
メモリは、部品の中でも生の信頼性が最も劣っている。なぜならば、メモリ素子の超微細化のために、製造上の欠陥およびそれらの環境に影響を与える種々の端緒の外乱に対して非常に影響を受けやすくなっているからである。幸運にも、それらの問題に対して、受け入れ可能な動作信頼性をメモリが提供することができることを目的とした誤り訂正符号などのような多数の手段が、長い間に渡って研究されてきている。
入出力
入出力障害は、2つのシステムの間で交換されるプロトコルまたはデータパケットで検出される1または2以上のエラーによって特徴づけられる。それらのエラーの大部分は、伝送の(ノイズなどの)電磁気的環境に基づいており、問題は入出力トランザクションの再試行によって解決される。リンクが回路のハードウエア(ケーブル、コネクタ、レーザなど)の故障によって物理的に中断される場合には、その障害許容力は、通常は、代替のデータ通路が双方のシステムの間で直接的であるか、コンピュータネットワークを通じて伝えられるかに関わらず、代替のデータ通路を提供する入出力冗長チャネルによって供給される。
電源および冷却部品
高稼働率システムにおいては、電源供給部およびファンまたは液圧ポンプ(hydraulic pumps)は常に冗長である。従って、それらの部品の故障は、ユーザアプリケーションには影響しない。修理は、電源または冷却部品の活線挿抜(hot swap)によってなされる。
他方、POL「負荷点(Point Of Load)」とも呼ばれる、最低レベルを有する電源は、電力をプロセッサ、メモリまたは入出力回路に直接的に供給するが、一般的には冗長でなく、コスト、全体的なスペースおよび性能上の理由でマザーボードにはんだ付けされる。これらのタイプの部品の停止(hang-up)は、従ってそれらに直接的に取り付けられている機能性部品にとって致命的である。POL故障は、従って機能性部品の故障と同じにされる。
プロセッサ
プロセッサの障害は複合的な起源を有しており、説明することが求められるので、プロセッサは別個のクラスにある。
これらの重要なシステムのプロセッサは、一般的にマルチコア・アーキテクチュアでサポートされているので、この仮説が想定される。
プロセッサの障害許容力を確保するために、もう一度ハードウエアの冗長性が用いられる。ここでハードウエアは、実行中のシステムソフトウエアおよびアプリケーションに対する直接的なサポートである。アプリケーション・プロセッサの二重化は、ユーザと相互作用するフォアグラウンド・プロセッサを同期化する必要性を引き起こし、バックグラウンド・プロセッサは、障害が発生した瞬間に臨機応変にフォアグラウンド・プロセッサを置換する。
先行技術においては、および、ごく簡単なプロセッサに対する解決策は、同一基板でまたは同一集積回路での、計算機能を3倍にして、入出力共通バスおよびメモリの状態に基づいた結果を比較する回路を付加することである。それらのバス幅は、128データビットおよび32アドレスビットになりうる。典型的には1nsと10nsとの間であるマシンサイクルの尺度に対して、好ましい状態は、3つのプロセッサのうちの少なくとも2つのプロセッサが存在するという多数決原理に基づく首尾一貫性を与える比較回路を与えることである。フォアグラウンド・プロセッサでエラーが検出されるとすぐに、または、比較回路がこのプロセッサのバスが他の2つのバスとは異なったと示唆されるとすぐに、フォアグラウンド・プロセッサが停止され、実行は第1のバックグラウンド・プロセッサ上で続けられる。バックグラウンド・プロセッサの起こり得る障害は延期されて、プロセッサ基板が交換されるまで経路を低下モードにさせる。この基板の交換はサービスの停止を示唆するので、アプリケーションは、原則的には一次システムといかなる共通のハードウエア素子を有しない等価なバックアップシステム上に、予め移動されておかなければならない。この復旧時間は、移動される情報の量が膨大であれば、サービスの稼働率に劇的に影響を与える。もし、この制約を免除することが望まれれば、3つの個別のプロセッサ基板は同じキャビネットまたは同じフレームに供給されなければならない。しかしながら、不幸にも結果を比較する回路は、電気または光の信号という制約された伝播手段により、非常に迅速に性能限界を引き起こす。従ってこのモードは、そのソケットの外部のバスの状態を比較する機能を組み込んでいない標準のマルチコアソケットの実装を考慮すれば、とりわけ高価であると共に効果は不十分である。
従って先行技術においては、高い稼働率課題への解決策は、重大な性能の低下なしにはプロセッサそれ自体の障害を防御していない。
信頼性問題に基づいたソフトウエア部品の3つのクラスは、ハイパーバイザおよびオペレーティングシステムのクリティカルセクション、入出力ドライバおよびハードウエアに搭載されたファームウエアの欠陥、および、アプリケーションの欠陥である。
クリティカルセクション
クリティカルリソースは、ソフトウエアのロックアウトによって保護された実行可能なデータまたは命令のセットである。クリティカルセクションは、実行中のコアがクリティカルリソースを使用するために再分類する一連の命令である。2以上のコアによる同じクリティカルセクションの同時実行から保護するためのソフトウエア・ロックアウトがキャシュメモリのプロセッサおよびコントローラの特別のハードウエア装置を実行する「テスト・アンド・セット」タイプの特別な命令を使用することは良く知られている。クリティカルセクションの出力で、問題となる実行中のコアで動作しているプロセスは、ソフトウエア・ロックアウトをいわゆるオープン状態に置き換えることによってクリティカルリソースを開放しなければならない。
複数のコアを有して同じメモリを共有する、SMP「対称型マルチプロセッシング(Symmetric MultiProcessing)」とも呼ばれる対称なマルチプロセッサ・タイプのシステム上で動作するマルチタスク・プログラムにおいては、クリティカルリソースの間違った管理によってデッドロックを作り出すことはよく見られる。幸いなことにオペレーティングシステムは集中的なテストのおかげで、それらのデッドロックが広範囲にわたって除かれているが、ユーザアプリケーションは、そのような問題によってしばしば影響される。従って、オペレーティングシステムは、ユーザのデッドロックによってブロックされたリソースを予め空にすることで解放すること、および誤ったプロセスの動作を一時停止することができなければならない。しかしながら、もし、ハイパーバイザがそれ自身でそのようなデッドロックを作り出せば、それをブロック解除することができるソフトウエア・プロセスはなく、および、そのような欠陥はユーザデータに影響を与えることができるハードウエア故障と同様である。
入出力ドライバおよびファームウエア
入出力ドライバおよびファームウエアは、それらのハードウエアとの密接な関わりおよびそれらのリアルタイム性能を目指す高い最適化によって特徴付けられる。ハードウエアの進化のそれぞれは、ソフトウエアが電子基板において固体状態で基板に取り付けられていなければ、このソフトウエアのアップデートを要求することができるが、欠陥状況は、非常にまれな条件下でしか起こらないので、ファームウエアまたはドライバを旧式のバージョンで動作させることは良く見られる。
アプリケーションの欠陥
オペレーティングシステム、即ちOSによって管理されるアプリケーションは、このOSのプロシージャに従っており、もし、それらがプロセッサ・コアのパワーの100%を使って結局デッドロックになれば、通常、強制終了される。システムのクリティカルリソースをブロックしない別の欠陥は、結果の正確さに影響を与えるアプリケーションの論理エラーに対応するものであるが、これは本発明に関連していない。
ハイパーバイザがシステムに存在していれば、それは「スーパーOS」として動作し、このハイパーバイザの下で動作する1または複数のOSはゲストOSと呼ばれ、ハードウエアから、または互いに、分離されている。この場合、ゲストOSはサブ−OSアプリケーションと類似していると言うことができる。特に、ハイパーバイザは、「強制終了(killing)」(事実、プロセスは強制終了)、再設定、または、そのアプリケーション・プログラムの全OSをシステムから、ネットワークリソースを通して別に動かすことができる。移行(migration)とも呼ばれる移動時間は、もちろん、このネットワークの帯域幅に依存している。
本明細書による開示の明瞭さのために、ソフトウエアに基づいた障害は、たとえ、それらが主要な障害原因であることができても、広範囲に渡って議論しない。これらのソフトウエア障害の修復は、新しいソフトウエアまたはファームウエアのバージョンをインストールすることに基づいている。通常、システムがよく設計されておれば、ハードウエアにおける物理的介入なしに、それらのインストールを遠隔的に行うことができる。ソフトウエア障害がダイレクト・アクセスを暗示するまれな事例は、他のソフトウエアまたはファームウエアをアップデートするために用いられるコードにおける、ブートストラップ・ファームウエアの欠陥による障害である。それは一般的には、いわゆる工場出荷バージョンおよびいわゆるユーザ・バージョンである、ダブルコードバージョンによって処理される。維持進化が続く唯一のバージョンはユーザ・バージョンである。工場出荷バージョンは書き込み保護されており、従って、いつでもシステム構成を復元することができる。従って、これらは、ブーストラップ・メモリそれ自身の故障は残り、引き続く解析において取り扱われる事例の一部である。
本発明の一つの目的は、特に、まさに説明した問題を解決することにある。事実、本発明はサーバの不稼働時間を最小化することを目的とする。
そのために、本発明は、超高速広帯域ネットワークによって相互接続された複数の計算モジュールを含む高稼働率環境においてアプリケーションを同期的に実行する方法を提供する。本発明は、以下のステップを有することを特徴とする。
−少なくとも以下を含む複数のパーティション内に複数のモジュールを構成するステップと、
○ 数と特性とが同一である複数のノードを含む、一次実行パーティションおよび二次実行パーティションである、2つの実行パーティションと、
○ 少なくとも1つのモジュールを含む監視パーティションと、を含む。
−各実行パーティションでアプリケーションを実行するステップと、
なお、一次実行パーティションで処理された入出力が、一次実行パーティションと二次実行パーティションとの間の分散トランザクションとしてそれらの入出力のログをとる監視パーティションを介して二次パーティションに送信される。
−マイクロプロセッサのコンテキスト変化を番号付けることによって、一次実行パーティションおよび二次実行パーティションの実行を同期させるステップと、
なお、一次および二次の実行パーティションにおける最新のコンテキスト数の間の違いに対応する時間のずれが所定の値よりも低くなければならない。
−破局的なエラー信号を監視パーティションに送信する送信ステップと、
なお、前記信号は、実行中のパーティションのモジュールの障害の特徴を示している。
−いわゆる劣化モードに対して切り替えることによって、実行を継続するステップと、を有しており、
なお、実行は、単一のパーティションで続けられ、一次実行パーティションの障害の場合には、二次実行パーティションが新しい一次実行パーティションになるような変更動作を行う。
本発明による方法は、前述の段落に述べた主要ステップに加えて、以下の1または2以上の特徴を有することができる。
−マイクロプロセッサのコンテキスト変化を強制し、これにより同期を実行するために、割り込みが所定の周波数で強制される。
−所定の周波数は、約20Hzであり、非同期は従って50msに抑制されている。
−アプリケーションは、ハイパーバイザによって仮想化されている。
−仮想マシンは単一のプロセッサ・コアで実行されており、仮想マシンは一次実行パーティションおよび二次実行パーティションで同一である。
−複数のパーティション内に複数のモジュールを構成するステップは、環境のサービスの停止なしに動的に行われる。
−環境の見かけの不稼働率(unavailability)は、一次および二次パーティションにおけるアプリケーションの実行の間の非同期に等しく、不稼働率は従って、実行の同期化によって制約されている。
その上、本発明は、本発明による方法を実行する命令コードに対応するファイルを含んでいるデジタル記憶装置を提供する。
本発明は、また、本発明による方法を実施する装置を提供する。
本発明は、また、本発明による方法を実施し、以下の特徴の可能な組み合わせを含む装置を提供する。
−装置は、モジュールの底板が、底板に取り付けられた挿入ガイドを含み、これらの挿入ガイドは、次の2つのタイプである、フレームに挿入された複数のモジュールを含む。
○ 第1のタイプは、最終的なガイド動作および底板のコネクタの保護を確保する。
○ 第2のタイプは、初期的なガイド動作を確保するために、円錐状に終端した円筒形状を有する。
各ガイドは、フレームに対応する手段を有する。
−第1のタイプは、円錐状に終端した円筒形状を有し、その長さは、第2のタイプの長さよりも約1センチメートル短い。
−第1のタイプは、円錐状に終端した円筒形状と協働することができる凹状部分である。
−第2のタイプの少なくとも1つのガイドは、底板に堅固に取り付けられている。
−第1のタイプの少なくとも1つのガイドは、底板にゆるやかに取り付けられている。
−第1のタイプのガイドと協働する少なくとも1つの円筒状のガイドは、フレームにゆるやかに取り付けられている。
−底板は、第1のタイプのガイドを4つと、第2のタイプのガイドを2つ含んでいる。
−ガイドは、底板の対称軸に関して対称的に分布している。
本発明およびその種々のアプリケーションは、引き続く説明を読み、添付図面を検討することにより、よりよく理解されるであろう。
図の説明は、示唆するために示しており、本発明を限定するためには用いていない。
本発明によって実施される方法を可能にする論理アーキテクチュアを説明する図である。 本発明による方法の種々のステップを示す図である。 本発明を実施する装置の要素を示す図である。 モジュール側に浮動部を有するコネクタブロックを示す図である。 フレーム側に浮動部を有する本発明の1実施形態の図である。
図1は、本発明による方法を実施することができる例示的な論理アーキテクチュアを示す。公知のハードウエアアーキテクチュア上でこの仮想アーキテクチュアをハードウエア化する(hardwaring)モードについては後述する。
図1は、2つの同一のパーティション(partition)を示し、これらは、それぞれがハイパーバイザHおよび仮想マシンVMを含む第1パーティションA、および第2パーティションBである。
仮想化エンジンとも呼ばれるハイパーバイザは、仮想マシン、ハードウエアアーキテクチュアのためにエミュレートする命令コードのセットである。最も知られているものとしてKVM、パイパーV、および、CMWareを挙げることができる。
VMと呼ばれる仮想マシンは、主に、ハイパーバイザによって仮想化されなければならないリソース(マイクロプロセッサ、ディスク、入出力周辺機器など)を記述している構成ファイルから構成されている。
加えて、パーティションAおよびBのそれぞれは記憶手段Mを含んでおり、そこに本発明によるハイパーバイザに対応する命令コード、および仮想マシン(構成、状態、特にプロセッサ、仮想ディスクなどの状態)に対応するファイルが記録されている。
図1は、第1パーティションAのハイパーバイザH_A1を介して第1パーティションAに接続されている入出力周辺機器I/Oを示す。パーティションAおよびBは同一であるので、図1は、入出力周辺機器I/Oが第2パーティションのハイパーバイザH_B1を介して第2パーティションBに接続されることができることを示す。この可能性は、後述される環境下で確立される潜在的接続である。
実行パーティションの2つの仮想マシンの1つが、例えば構成ファイルで他のミラー(mirror)として定義されている。我々の例においては、ミラーと考えられるのは、二次パーティションである。
図1は、また、仮想マシンVM_C1および記憶手段M_Cを含む第3パーティションCを示す。第3パーティションCの仮想マシンVM_C1は、第1パーティションAの入出力(inputs-outputs)をファイルにログをとって、それらを第2パーティションBに送信する。加えて、第3パーティションCの仮想マシンVM_C1は、これらの仮想マシンを同期させるために、第2パーティションのハイパーバイザH_B1と第1パーティションのハイパーバイザH_A1との、コンテキスト変化の数(図1におけるCdC)を追跡する。
本発明による好ましい実施形態によれば、起動時において同期された仮想マシンを保証するために、仮想マシンを起動させる前に第2パーティションの仮想マシンは、第1パーティションの仮想マシンをコピーすることによって得られている。
アクションがハードウエアまたは仮想デバイスに割り当てられた場合、このアクションは、実際には、装置のメモリに記録された命令コードによって制御される装置のマイクロプロセッサによって行われる。アクションがアプリケーションに割り当てられれば、このアクションは、実際には、アプリケーションに対応する命令コードが記録されているメモリを有する装置のマイクロプロセッサによって行われる。
図2は、本発明による方法のステップを示す。特に、図2は複数のモジュールを、少なくとも以下を含む複数のパーティションの中に構成するステップ2000を示す。
−一次実行パーティションおよび二次実行パーティションである、数および特性が同一の複数のノードを含む2つの実行パーティション。
我々の実施例においては、一次実行パーティションは第1パーティションAであり、二次実行パーティションは第2パーティションBである。
−少なくとも1つのモジュールを含む監視パーティション。
我々の実施例においては、監視パーティションは第3パーティションCである。
1実施形態においては、各実行パーティションにおいて、実行すべきアプリケーションがインストールされているマシンにハイパーバイザおよび仮想マシンがインストールされている。
構成ステップ2000に続くステップ2100の際に、同じアプリケーションが一次実行パーティションAおよび二次実行パーティションBで実行される。これは実行ステップである。一次実行パーティションAによって処理された入出力は、一次実行パーティションAと二次実行パーティションとの間の分散トランザクションとしてこれらの入出力のログをとる監視パーティションCを介して二次実行パーティションBに送信される。
このトランザクションは、動作がパーティションAおよびBの双方で適切に終了されている場合のみ有効にされるので、分散と呼ばれる。
同期ステップ2200は、監視パーティションCによって行われるマイクロプロセッサのコンテキスト変化を数える手段によって、一次パーティションAおよび二次パーティションBの間の実行の同期を保証する。一次実行パーティションAと二次実行パーティションBとの間の最新のコンテキスト数の差に相当する時間オフセットは、例えば50msのような所定の値よりも小さく保たれていなければならない。1代替手段においては、このずれ(deviation)は、例えばコンテキスト変化数の差によって見積もられる。この場合、実際には時間差ではなく、イベントがここではコンテキスト変化であるイベントの数の差、すなわち、同一のシーケンスを表す2つのシーケンスに属しているイベントの数の差である。
実行および同期ステップは並列に実行される、すなわち同時に実行される。
それぞれのコンテキスト変化で、例えば、第1パーティションのハイパーバイザは、ミラー仮想マシンが実行中の進捗状況をチェックする。かりに、高すぎるずれ、すなわち、我々の実施例では50msよりも大きいずれがあることが分かれば、そのとき、第1パーティションのハイパーバイザはコンテキスト変化を終了する前、すなわち、第1パーティションの仮想マシンがその実行を続けることができる前に、時間稼ぎのために決定を遅らせる(temporizes)。
時間間隔を確保するために、少なくとも1つのコンテキスト変化が所定の頻度で行われることが保証される。我々の実施例においては、ハードウエア割り込みが50msごとに強制される。そのような割り込みはコンテキスト変化を引き起こし、これにより、ミラー実行との間の高すぎるずれが起きるのを防ぐ手段が実際に実装されていることを保証する。
実行中のパーティションのモジュールにおいて障害が検出されると、監視パーティションCへの破局的なエラー信号の送信ステップ2300が生じる。それらは、障害がどこで生じているかに応じて以下の2つの場合がある。
−一次実行パーティションA(図2の2310)で障害が生じている場合:変更ステップ2400が動作される場合であり、二次実行パーティションBが新しい一次実行パーティションになって、その後、実行を続けるステップ2500になる。
−二次実行パーティションB(図2の2320)で障害が生じている場合:実行を続けるステップ2500が直接的に行われる場合である。
本発明によるこの方法は、高い稼働率を有する装置の障害許容力を向上させることができる。本発明の実施を可能にする高い稼働率を有する装置は後述する。
本発明を実施するためのハードウエアアーキテクチュアは、例えば、それぞれのモジュールが他の全てのモジュールと接続されている8個のモジュールを有するシステムであり、これは、「全対全(all-to-all)」トポロジーと呼ばれる。異なるモジュールの間に複数のパスを提供するという条件で、他のトポロジーも用いることができる。モジュールのこの数は例として与えられており、2から数十まで変えることができる。
各モジュールの各相互接続ポートは、従って、各リンクが8個の双方向チャネルを含む7個の高速リンクによってサポートされていなければならない。もし、各リンクが14Gb/秒で動作すれば、システムのどの2つのモジュールの間においてもその帯域幅は、14×8=112Gb/秒である。この周波数は例として与えられており、コネクタおよびケーブルに課せられた技術的限界に至るまで、顕著に比例して変えることができる。
各モジュールは、それらのマザーボードに配線された高速バスによって局所的に接続された2つのソケットをサポートしている。この配置は、あるソケットまたはメモリの障害をサポートするためにモジュールが動的に再構成されることを可能にする。前述の障害のタイプはまれに発生する突発故障であるが、これが何に続いて発生するのか、への注意が必要である。例えば電源故障は、少なくとも1つのハードウエア部品の信頼性が劣化しつつあることを示唆するエラー信号の発生が十分長い期間に先行した後で発生する。これらのエラー信号の適切な管理が障害許容力の観点から良い性能を達成するために必要不可欠である。これらの2ソケット(bi-socket)のボードは、相互接続モジュールを有するインターフェースで高速コネクタを備えており、これらのコネクタに接続される全ての電子回路は、活線挿抜(hot plugging)動作をサポートすることができる。これは、クラスターにおけるモジュールの挿入または取り外しは、このクラスターの他のモジュールの動作を妨げることなく行われるということを意味する。特に、電源が与えられていないモジュールの相互接続モジュールのケーブルへの接続は、7つの別の2ソケットのボードで動作している別のスイッチを妨害してはならない。加えて、それぞれの2ソケットのボードは、電源のオン/オフ、温度および電圧の監視、またはモジュール・クラスターの動的再構成をも、管理することのようなサーバの非常に低い機能を可能にするBMC(ベースボード管理コントローラ(Baseboard Management Controller))と呼ばれるオンボードのマイクロコントローラをサポートしている。
再構成インターフェース
マルチモジュールシステムの自動構成/再構成を支援するために、8個のポートを有する、MSM(管理スイッチモジュール)と呼ばれるイーサネット(登録商標)スイッチが、相互接続モジュールに組み込まれている。このスイッチは、2つの5ポートスイッチ、4つのダウンリンク、およびアップリンクのポートが回路基板の配線(track)に接続されている1つのアップリンクから構成することができる。この実施形態は、複数のベースボード管理コントローラ(BMCs)がそれらの対話手段の全体を失う件数を制約することによって相互接続モジュールの障害許容力をさらに改善する。
複数のベースボード管理コントローラへのこのプライベート・イーサネット(登録商標)ネットワークに関連して、相互接続モジュールの補助装置は、その識別子からそのIPアドレスを計算することができる識別子を各ベースボード管理コントローラに割り当てることを可能にする。事実、各ベースボード管理コントローラは、その近隣のものとは異なるアドレスを有してこのネットワーク上のそのIP接続を起動することができなければならない。小さなFPGAに基づいたこの補助装置は、初期化の際に、相互接続モジュールに対してモジュールのそれぞれの物理的配置を特定するポート番号(3ビットの識別子)を送信することを各ベースボード管理コントローラに許可する。これらの3ビットから、各ベースボード管理コントローラは、その近隣に接続する前に、自身のIPアドレスを完成する。ベースボード管理コントローラとMSMスイッチとの間のサブネットワークは完全にプライベートであるので、IPアドレスの最上位29桁を各モジュールに対して同一にすることができる、ということが注記される。
電源供給の故障に関して良好な障害許容力を確保するために、各モジュールは、PSU「電源供給ユニット」とも呼ばれるAC−DCコンバータを少なくとも2つ組み込んでおり、それぞれの2ソケットのボードの入力で通常12Vで配線(rail)を通して電力を供給している。電源供給ユニットは2つの独立したACネットワークに接続されることができ、それらのネットワークのうちの1つが故障しても、システムの動作を保証することができる。同様に、MSMモジュールは、それぞれ独立的に電源が供給されており、電源がONになった各モジュールは、そのイーサネット(登録商標)−MSMリンクを介して12Vで電流を送る。これらの異なる電流は、12V入力とイーサネット(登録商標)スイッチおよび再構成FPGAの回路のPOLとの間に設置されているダイオードスイッチによって合計される。
同期インターフェース
本発明の別の構成要素は、同期クロックのネットワークである。相互接続モジュールのサブネットワークは、異なるモジュールのプロセッサの間にほとんど完全な同期システムを構築するために、全てのモジュールの全てのFPGAを全対全に接続する。FPGAの論理は、初期化または再構成の際に、クロックのネットワークを、論理パーティションの数に応じた数のクロックサブネットワークがパーティションされることを可能にする。それぞれのクロックサブネットワークにおいて、通常、起動ロジックを含んでいるプロセッサであるマスタープロセッサは、そのクロックをそのパーティションに属する全てのプロセッサに分配する。FPGAは、パーティションが唯一のクロックを受信するように各論理パーティションを分離する。このクロックは矩形波信号であり、その周波数は例えば25Mhzのように数メガヘルツである。この信号は、好ましくは、相互接続モジュールのケーブルによって誘導されることができるどんな位相ノイズをも除去するために各モジュールの入力でPLL回路によって濾過されることができる。再起動の際に、各モジュールは、そのパーティションのクロックによって駆動されるカウンタを起動する。このクロックはそのパーティションのプロセッサにとって共通であり、プロセッサのそれぞれは、そのモジュールに任意の時点で発生したどんなイベントでもタイムスタンプすることができる同期時間基準を有しているので、複数のイベントのタイミングをそれらのそれぞれの順番に対して不明確さなしに再構成することができる。
典型的なアプリケーションは、計算モジュールの帯域外のインターフェースの一部である「破局的なエラー(Catastrophic Error)」のための、破局的なエラー信号CATERRの管理である。これは、計算タスクのために使われるものではなく、モジュール管理のために使用されるネットワークである。これらの通信は、従ってモジュール性能には何も影響を与えない。これらの信号は、パーティション内で前述したクロックと同様に分配される。CARERR信号がモジュール内でトリガされると、通常、非常に迅速に、数マイクロ秒またはそれ未満で、同様なイベントが1または2以上の隣接するモジュールで引き起こされる。各モジュールにおけるCATERRイベントのタイムスタンプは、ベースボード管理コントローラがそれらの測定値を交換すること、および何が問題の源か、を読み出すことを可能にし、および従ってベースボード管理コントローラによって障害の生じているモジュールの診断および正確な場所の特定を容易にする。
インフラストラクチュアについての所見
インフラストラクチュアは、モジュールの間に物理的なリンクを提供する全てのハードウエア部品によって定義される。このインフラストラクチュアの信頼性を保証するために、平均故障間隔であるMTBFがモジュールのマザーボードのMTBFよりも桁違いに大きい受動部品を最大限使用することが好ましい。従って、このインフラストラクチュアによって引き起こされる故障の数は、システムの稼働率の評価に際して無視することができる。前述したシステムにおいては、インフラストラクチュアは、バックプレーンとも呼ばれる相互接続モジュールによって構成されており、XQPIインターフェースとも呼ばれる高速リンクのインターフェースを8個のモジュールの間に分配しており、および、8個のモジュールとMSMスイッチとの間にローカルおよび帯域外のイーサネット(登録商標)インターフェースを分配している。
バックプレーンは、今日では14Gb/秒の超高速信号を、数年後にはそれよりさらに超高速の信号をサポートしなければならないので、従来の回路基板実装を保ち続けることはできない。事実、例えば、パナソニック株式会社から提供されるMegtron6のような高重力材料を使用しても、相互に最も物理的に離れているモジュールの間のリンクのためのこのデータ周波数で挿入損失は20dBを越える。バックプレーンの他の欠点は、機械的な信頼性に関する。所定の重量の固体モジュールおよびフレームの製造の許容差およびキャビネットにおけるそのガイド要素、そのようなバックプレーンの機械的な剛性が、非常に大きな機械的応力をXQPIインターフェースの高速コネクタに及ぼす。これらの応力は、このインフラストラクチュアの機械的故障の原因である。
この問題を避けるために、本発明のマルチモジュールシステムのバックプレーンは、高速接触における応力の影響なしに、x方向およびy方向における1mmまでの機械的なずれを許容する、浮動取付(float mounting)コネクタアセンブリで終端された銅ケーブルでのリンクを使用している。さらに、単位長さ当たりの挿入損失は、従来の印刷回路板材料に比べて約十倍小さく、コネクタとビアの数は最小限にまで減少されている。それらの要素は、インフラストラクチュアの信頼性の向上、および従ってシステムの目的である高い稼働率を伴っている。
浮動的な面は、例えばガイドの使用によって得られる。
図3は、計算モジュール3010がこのモジュールの部品に取り付けられる長方形の固い底板(bottom plate)3020を含んでいることを示しており、それ(底板)は、バックプレーンまたはバックプレーン・バスを含んでいるフレーム3030の、オスまたはメスのコネクタ3050に接続されることができるモジュールのオスまたはメスのコネクタ3040を含んでいる。フレーム3030は、実施形態を説明するためにここで部分的に表されている。モジュールがオス・コネクタを含めば、そのとき、フレームはメス・コネクタを含み、逆もまた同様であることは当業者にとっては明らかである。
1代替手段においては、底板3020は印刷配線板の端部である。
モジュールの底板の一部を示しているのみである図3は、底板が、フレームコネクタが面している側で以下を含んでいることを示す。
−モジュールコネクタ3040の片側に設置されている第1ガイド3060および第2ガイド3070、ガイドのこの配置は、コネクタが少なくとも機械的に保護されることを可能にする。第1のタイプの第1ガイドおよび第2ガイドは、実質的に同じ長さを有し、そして以下である。
○ 円筒状に形作られている。
○ 底板に取り付けられている。
○ それらの自由端で円錐状で終端している。
○ 少なくとも1センチメートル、しかし5センチメートル未満である数センチメートルの長さである。
−第2のタイプの第3ガイド3080は、以下である。
○ 第1ガイドと同様な形状をしている。
○ 実質的に第1ガイドより長い、その値は約1センチメートルであり、実際には1センチメートルである。
○ 底板によって形成された長方形の長軸の中心上に、第1および第2ガイドから数センチメートル離れて配置されている。
図3は、また、フレーム3030が第1、第2、第3ガイドに対応する穴を含んでいることを示している。
図示しないが、底板は、第3ガイドのような第4ガイドを少なくとも1つ含んでいる。この第4ガイドは、底板によって形成された長方形の短軸に対して第3ガイドに対称である。
長方形の長軸は短辺の垂直二等分線に垂直である。長方形の短軸は長辺の垂直二等分線である。
1代替手段によれば、第1および第2ガイドは、また、短軸に対してそれらの対称要素を有しており、その場合には、底板は6つのガイドを含んでいる。これらの軸は、底板の幾何学的な対称軸である。通常、これらの軸はまた、質量の対称軸に対応し、すなわち、装置の質量が均一に分散しているいずれかの側の軸である。もしそうでなければ、質量の軸は、ガイドを分散するように用いることができる。
底板が含むガイドの数と同数の、ガイドと協働できる穴をフレームが含むことは明らかである。
このガイド配置は、モジュールの最初の位置決めまたは初期ガイドを、第3ガイドおよびその対称的な要素を使用しているフレームに対して作ることを可能にし、それは最初のガイドレベルを提供する。この最初のレベルはフレームに対する配置である。その後、挿入を続けることにより、最終的には、第1および第2のガイドおよびそれらの対称的な要素が用いられ、コネクタを保護しながら、第2、最終ガイドを提供する。
本発明の1代替手段においては、ガイドは底板に堅く結合される。
ガイドの円錐状の末端がいくらかのクリアランスを許容するので、浮動的な装置が存在すると言うことができる。
この浮動的な面(floating aspect)はフレームが動作している間に、モジュールを改良された方法で交換することを可能にする。この浮動的な面はまた、その重量が数十キログラムを超えて、地面またはキャビネットの地盤のレベルから2メートル離れて設置されることができるモジュールを挿入する際の劣化リスクを最小化する。
この浮動的な面は、活線挿抜の独立性を確実にし、また、モジュールを挿入する際の劣化リスクを最小化することによって、動作中の設備の取り外しを確実にすることができる。従って、この浮動的な面は、本発明によって、アプリケーションの実行が委譲された後に障害が生じているモジュールの、別のパーティションへの交換を改善する。しかし、この浮動的な面は、簡単な据え付けのためにアプリケーションのミラーリングの状況以外でも興味深い。
本発明の別の代替手段においては、第1ガイド3060および第3ガイドは、底板に浮動的に取り付けられている。例えば、図4は、底板3020が第3ガイドに対向する面に、底板に垂直な以下の2つの部分を含むことを示す。
−第1コネクタ支持部4010。
−第2コネクタ支持部4020。
第1コネクタ支持部および第2コネクタ支持部は平行であって、ショルダーボルトがそれらを通過することを可能にする少なくとも1つの穴4015を含んでいる。コネクタ支持部の少なくとも1つ穴4015の直径は、穴を通過するように用いられているショルダーボルト4030のショルダー4035の直径よりわずかに大きい。従って、一度、それが取り付けられれば、ショルダーと穴の直径の違いのおかげで、ボルトは、穴にゆったりと合う。この直径の差は、1mmから2mmの範囲である。
図4は、また、コネクタブロック4040がコネクタ支持部の間をスライドできることを示す。このコネクタブロックは以下が取り付けられている基部(base)を含む。
−第2ガイド3070。
−モジュールコネクタ3040。
コネクタブロックはまた、第1ウォール4050および第2平行ウォール4060を含んでおり、一度コネクタブロックが定位置にされれば、これらのウォールは支持部に対して平行である。
図4は、また、コネクタブロックのウォールは、ショルダーボルト4030のねじ山に適合するねじ山を獲得しているねじ穴を含んでいることを示す。ショルダーボルトが一度ねじ込まれれば、コネクタブロックは底板に対して浮いている。この代替手段は、浮動的な面をさらに改善する。この浮くことは、穴とショルダーとの間の直径差に依存している。
1実施形態においては、各支持部は4つのショルダーボルトに対して4つの穴を含む。ウォールは、その後、4つの対応するねじ穴を含む。4つの穴は正方形に分散されている。
1実施形態においては、各支持部は3つのショルダー・ボルタに対して3つの穴を含む。この場合においては、ウォールは、3つの対応するねじ穴を含む。3つの穴は二等辺三角形または正三角形に分散されている。
1実施形態においては、各支持部は2つのショルダーボルトに対して2つの穴を含む。この場合においては、ウォールは、2つの対応するねじ穴を含む。
本発明の別の代替手段である図5は、ここでマザーボード5010と同化できるモジュール5010を示す。マザーボード5010の底板5020は、マザーボード5010の端部5020である。
図5は、ボード5010の底板5020がコネクタ5040を含んでおり、このコネクタ5040の両側に以下が見いだされることを示す。
−円筒形状のリセスを有する長方形平行六面体の形状であり、その円筒の軸がマザーボード5010の底板5020に垂直である、第1ガイド部分5060。
−第1ガイド部分と同一の第2ガイド部分5070。
1代替手段においては、底板側部上の円筒の開口は、円筒状のガイドを改善された方法で誘導することを可能にする切頭開口(truncated aperture)を有している。
図5はまた、マザーボードの底板がモジュールの底板のガイド3080と同様なガイド5080を含むことを示す。
図5は、また、フレーム5030が図4に述べられたようなコネクタブロックの上に取り付けられていることを示す。図5については、同一の機能に対しては図4で維持されているものと同一であることが言及できる。
従って、フレーム5030は、一度、マザーボードが所定の位置におかれれば、マザーボードに面している面に向かい合っている表面で、マザーボードに対して垂直な2つの部分を含む。
−第1コネクタ支持部4010。
−第2コネクタ支持部4020。
第1コネクタ支持部および第2コネクタ支持部は平行であり、ショルダーボルトがそれらを通過することができる穴4015を少なくとも1つ含んでいる。コネクタ支持部の少なくとも1つの穴4015の直径は、穴を通過するように用いられているショルダーボルト4030のショルダー4035の直径よりわずかに大きい。従って、一度、それが取り付けられれば、ショルダーと穴の間の直径の違いのおかげで、ボルトは、穴にゆったりと合う。この直径の差は、1mmから2mmの範囲である。
このように提供されるフレームは、従って、それ(フレーム)に関して浮動しているコネクタブロックを受容することができる。
図3から5は、モジュールとフレームとの間の浮動的な接続に対する複数の実施形態を示している。
いくつかの能動素子を含んでいる本発明のMSMスイッチは、インフラストラクチュアの一部である。すでに理解されているように、その電源は強度に冗長である。加えて、約2〜3ワットの非常に低い消費電力、及び少数の部品が、数百万時間のMTBFをMSMモジュールに対して予測することを可能にする。最終的に、MSMスイッチの動作は、モジュールの8個のベースボード管理コントローラによって監視され、これにより、かりにMSMの故障が検出されれば、このモジュールの活線挿抜が、マルチモジュールシステムの動作を中断することはない。モジュールの物理的な交換が、通常の期限内で起こる限り、そのシステムの稼働率の比率におけるMSM(管理スイッチモジュール)の影響は無視しうると言うことができる。
本発明によって用いられる種々のソフトウエア部品の記述を今から説明する。
オクト・モジュール(Octo-module)構成
前述の8モジュール構成は、パーティションの各プロセッサが別なパーティションにおける冗長なプロセッサである、1+1の冗長システムをサポートすることを意図していると考えられる。この構成は、説明するためには最も簡単であるが、セキュリティーのためには、パーティションの各プロセッサが、2または3の別なパーティションにそれぞれ存在している2または3の冗長なプロセッサをそれぞれ有している、1+2、または1+3の冗長性構成を用いることができる。
複数のパーティション内への複数のモジュールの構成ステップ(E1)の際に、3つのモジュールがパーティションA、つまりフォアグラウンドパーティションに属しているとみなされる。その結果として、バックグラウンドパーティションであるパーティションBは、また3個のモジュールを有して作られている。8モジュール構成の2つの残っているモジュールは、パーティションAおよびBの実行中のログをサポートしているモジュールの1つであり、監視パーティションであるパーティションCに影響されている。パーティションCの第2モジュールは、要求されている稼働率の比率に応じて別の故障しているモジュールを一時的に交換することができる。
パーティションCは、オプション的に重要でないアプリケーションを以下の条件付きで実行することができる。この条件とは、これらのアプリケーションの優先順位がパーティションAおよびBで実行されるアプリケーションに対して高い稼働率機能を保証しているソフトウエア・モジュールの優先順位よりも、大きく下回るように定義されているという条件である。
重要なアプリケーションの負荷は、この場合、インストールされた処理パワーの、すなわち全体性能の高さ上における3つのモジュールである、37.5%を示す。
4モジュール構成に対しては、パーティションAおよびパーティションBは、それぞれ1つのモジュールを含んでおり、パーティションCはそれらの2つを含んでいる。この場合、重要なアプリケーションの負荷は、インストールされた処理パワーの25%を示すのみである。
アーキテクチュアの作動
本発明は、シングルコア上で動作するOSのみを使用している。事実、マルチコア・プロセッサ上で動作するOSのコアを製造することができるにもかかわらず、本発明におけるそのようなコアの実装は、プロセス同期化の解決できない問題を引き起こすかもしれない。このことは、物理的なプロセッサが、シングルコア・プロセッサであることを意味しない。マルチコア・プロセッサの使用は、唯一のコアのみを受容する所定のOSによるハイパーバイザ層によって保証された物理的リソースの割り当てによって制約されるのみである。他方、同じコアが複数の個別のOSに属しているとみなされることは、なにも妨げない。後者の場合、性能または応答時間のみが影響を受けることができる。以下の説明においては単純なルールが想定される。これは、1コアが1OSに等しく、勿論、各OS下では、ユーザは彼らが望む限り多くのアプリケーションを同時に実行するができるというものである。それらのアプリケーションによって生成される計算負荷は、通常、OSのコアのスケジューラによって多重化される。負荷が高くなればなるほど、性能はより低くなる。
複数のプロセスの実行を確保するために、各OSは、プロセスレディキューを生成する。このキューの最初のプロセスのみが、プロセッサを受信し、従って、いわゆる実行中のサブ状態である。プロセス実行がP操作(P-Op)と呼ばれるブロック型の同期セマフォを満足するとき、プロセスレディキューを残し、そして、別のプロセスまたは入出力割込みマネージャが、同じセマフォ上でV操作(V-Op)タイプの操作によってそれをブロック解除するようになるまで待ち状態へ転換する。このとき、プロセスは、OSおよびその構成に基づく優先度ルールに応じて、再びプロセスレディキューに挿入される。いわゆる「挿入優先度」モードの待ち行列があることがここで仮定される。この点は、問題になっているキューが複数のサブ・リストから作られており、優先度レベルごとに1つのザブ・リストがあり、サブ・リストはそれらの優先度の関数としてそれらの中でチエーン化されて分類されていること、を意味する。優先度による挿入は、新しい要素が、この新しい要素の優先度に関連するサブ・リストの最後に挿入されることを意味する。もし、このサブ・リストが存在しなければ、新しい入力は、存在し最高の優先度を有している最初のサブ・リストの最後に挿入されるか、または問題になっているサブ・リストが存在しないときは、そのリストのトップで行われる。通常、コアによって行われるこの操作タイプは、ディスパッチ操作または縮めてディスパッチとも呼ばれている。
プロセスのそのような同期コアを有するコアは今日では標準となっており、コアでの実行が、プロセスを同期させるためにOSにおける単一の、モジュールによって実行されるディスパッチ操作によって分離された一連の命令の連続から構成されている。もし2つの同一のOSが、同じプロセス(同一コード、同一データ、同一構成のプロセッサ上)で実行中であれば、ディスパッチ操作のときに同期されていることによって並列に実行されており、双方のOSの状態および従って双方のOSの出力で得られる結果は、論理的観点から厳密に一致する。しかしながら、物理的観点からの実行は、論理的観点からの実行とは異なることができる。
物理的観点からの実行
以下においては、パーティションAおよびパーティションBで並列に実行中の2つのコアのスケジューラが、完全な同期を維持したままであることができるという方法が述べられる。
プログラムが従来のコンピュータで実行されているとき、このプログラムの数学的な意味における論理は、決定論的に実行されなければならない。このことは、同一のプログラムで同一のデータセットを用いる2つの連続的な実行は、常に厳密に同じ結果を導くことをプログラマーが期待することを意味する。実際にはそれはみせかけである。なぜならば、バックグラウンドにおいて2つの論理の実行の間に、種々のイベントがプログラムの中間で結び合わされることができるので、その実行タイミングを完全に修正するからである。起こり得ることができる主なイベントは以下である:割り込み、別のタスクまたは「スレッド(thread)」にプロセッサを割り当てるディスパッチ、V操作ウェイク・アップに続く、より高い優先度を有しているスレッド、中央メモリを読みだす際の、または入出力バスでデータ転送の際の、回復可能なエラー。このリストは包括的ではない。どのような場合においても、管理操作(スケージューリング、エラー、など)は、そのタイミングに関するもの以外は検討されているプログラムでは見えない。従って、記述の最上質の時間成分を追加することによってプログラムの物理的観点からの実行概念を導入するのは、実行タイミングである。もし、配慮がされなければ、1つのOSのもとで並列に起動している数個のプログラムの実行が行われる順番は全く保証されない。従って、パーティションAで実行中のプログラムと、パーティションBで実行中の同じプログラムとの間で、それらが同じクロック開始時間に開始されていても、非常に大きな時間オフセットがすぐにできることが生じ得る。本発明は、マルチモジュールシステムにおけるスレッドの同期ポイントの適切な組織が、2つのパーティションの間の物理的な実行が、例えば50msのような予め定められた時間間隔で同期を維持することができることを保証することができることを示す。割り込みに続いて、通常、スレッドが起動することができるので、および、この起動はOSコアのディスパッチャーを介して行われるので、タイマー・ハードウエアによって生成された人為的に誘導された割り込みにより、パーティションAとパーティションBとの間の非同期化を拘束することができる。このタイマーは、通常、チップセットのリソースから利用でき、ハイパーバイザは、非同期が50msを超えないことを望んでおれば、例えば20Hzである所定の周波数でディスパッチを生成するようにそれ(そのリソース)を初期化することができる。今日のプロセッサにおいては、コンテキスト変化時間は、約1μsであることを思い出さなければならない。この特性のおかげで、ディスパッチを50msごとに強いることは性能に目に見える影響を与えない。それは、スレッドが5または10μsの範囲内で同期されるように意図されているものとは、完全に異なる。
2つの仮想マシンの間の同期
同じパーティションAまたはBにおいて実行している複数の仮想マシンの場合を区別するために、2つの仮想マシンの1つがAで別の1つがBで実行しているとき、後者の状況は、「ノンコヒーレント仮想マシン」と呼ばれる。これは、AおよびBのメモリはXQPIモジュール間インターフェースのためにコヒーレントではないことを思い出すためである。
本発明によって提供される利点をよりよく理解するために、本発明によるシステムのいくつかの突然の障害の場合および協調性反応に焦点を当てることが興味深い。
VRM「電圧調整モジュール」コンバータは、プロセッサまたはDRAMメモリのPOL(負荷点)コンバータである。そのようなVRMが故障すれば、関連付けられた回路は、数マイクロ秒後にそれらの活動を停止する。なぜならば、電圧存在検出器は、少なくとも電力良好(PWRGOOD)信号を切り替えて、それにより、論理停止およびCATERR 信号の立ち上がりを引き起こす。CATERR 信号は、パーティション内の全てのモジュールへ相互接続モジュールによって送信される。受信においては、CATERRは、全ての接続されたプロセッサおよびメンテナンスプロセッサをブロックし、ベースボード管理コントローラが故障を管理する手順を開始する。
同期機能を有している全てのトランザクションの停止が50ms以内に検出される。パーティションBは、この同期点までそれらのスレッドを実行して終了する。その後、パーティションAの障害が同期機能によって通知されるので、後者(パーティションB)は、それらの実行を続けるために、それらのスレッドを可能にするV操作シミュレーションによってパーティションBのスレッドを解放する。
メモリにおける致命的エラーは、かなり頻繁に起こるエラーのタイプである。なぜならば中央メモリを構成するトランジスタの数は、プロセッサおよびキャシュのトランジスタの数より、2ケタ上回ることができるからである。インテルの技術においては、それらのエラーの管理アーキテクチュアは、MCA(機械点検アーキテクチュア(Machine Check Architecture))と呼ばれる。もし、メモリセルが最終的に0または1に接続されていれば、このエラーはいわゆるハードタイプのエラーである。セルのコンテンツが変更されているが、このセルの動作が習得されたままであるときは、いわゆるソフト・タイプのエラーである。
MCAアーキテクチュアにおいて、メモリにおける致命的エラーは、OSまたはハイパーバイザの「クラッシュダンプ」メモリ以外の代替品に繋がる。再起動(reboot)は、非常に長く、通常、数分ほどかかる。
本発明の使用によって、クラッシュダンプ機能は、パーティションAとパーティションBとの間の変更を50msで可能にする変更機能によって進められる。
メモリにおいては、多数の致命的エラーが、ハードタイプエラーでなく、実行変更に続くソフトタイプエラーであるので、パーティションAを再起動させ、その後、パーティションCの同期機能を実際に再起動させることができるまで、徐々にOSおよびアプリケーションをパーティションBからパーティションAへ移行させることができる。一度、この段階になれば、システムは、1+1の冗長になり、それは完全に対称的なので、パーティションAを一次モードのなかに再び変更することは必要ではない。パーティションBが一次パーティションになっている状態で十分であり、パーティションAは、ミラーパーティションになっている。
XQPIバスの帯域幅は大きいので最新技術のもとでは10Gb/秒を超えているが、1Tbの中央メモリを移動させるのは、機械的に少なくとも1000G÷10G=100秒かかる。この転送は、好ましくは、パーティションCに属するソフトウエア・モジュールによって駆動される。このシステムが十分な冗長性がない際における、時間の大きさのオーダであるが、50ms以内のサービス再開が可能である。致命的な故障率はその後、この100秒の間隔の間のおける第2の致命的エラーの確率に関連する。例えば、1018の読み出しビット当たり1の致命故障率を導く技術を仮定すれば、1000Gb/秒のメモリの読み出しにおけるシステムにおける2つの故障の間の平均間隔は約106秒である。すなわち、ほぼ300時間である。実際には、メモリの読み出しプロセスは従来のランダム変数の定常状態特性を有してはいないので、読者はこのタイプの統計学に注意深くなければならない。致命的なメモリエラーは、OSまたは個別のアプリケーションによって非常に頻繁にアクセスされる、単一の故障セルに起因している合計であることができる。前述の仮説にこれを考慮した観点からは、平均では、致命エラーは106秒ごとに生じ、システムの致命故障率は、第2の致命エラーが100秒で起こる確率によって与えられる。即ち、1/10,000になる。これによりMTBFは約3百万時間、または約340年である。この故障率が高すぎると判断されれば、冗長性の構想を1+2または1+3に変えること、すなわち、3つ以上のマシンを同期させることを確保することが必要である。
記憶装置におけるエラーの原因は非常に多いので、ディスクの入出力での致命エラーは、また、完全に頻繁なタイプのエラーである。
本発明によるシステムの記憶サブシステムは、パーティションAに接続されているディスクに書き込むいかなるファイルもパーティションBに接続されているディスクのミラーファイルを有しているということを意味している、レイド(RAID)1モードが想定されている。
この分野における致命的エラーは、任意の故障によってインコヒーレントに上書きされているコンテンツを有するディスクブロックに起因することができる。エラーは、このブロックを読み出す際にコードを訂正する間違ったエラーによって検出され、このエラーは、故障ディスクのチャネルに対応するPCIバスの入出力マネージャに報告される。
この場合、ファイル全体が、このディスクに入出力をさせようとしているプログラムにアクセスできないので、通常は、OSがそのアプリケーションを停止状態に変更することによって終わらせる。ミラープログラムがエラー通知を直接的に受けていないので、なぜなら、それは、パーティションBで実行中であるので、同期機能は、しばらくたった後で同期V操作をシュミュレートして、それをミラープログラムに渡すことでファイルの回復を開始することができる。
このホット再開を可能にするアルゴリズムは知られており、市場の全てのレイド(RAID)コントローラで用いられている。ここで、レイドコントローラのファームウエア機能は、パーティションCで実行される1または2以上のソフトウエア機能によって交換される。これらの機能をファイルシステムの完全性を確保するイベントのログに実装する。
本発明の利点を再度述べれば、プログラムが50ms以内でその通常の活動を再開することを保証することができることである。

Claims (17)

  1. 超高速広帯域ネットワークによって相互接続された複数の計算モジュールを含む高稼働率環境においてアプリケーションを同期的に実行する方法であって、
    −少なくとも、
    数と特性が同一である複数のノードを含む、一次実行パーティションおよび二次実行パーティションである、2つの実行パーティションと、
    少なくとも1つのモジュールを含む監視パーティションと、
    を含む複数のパーティション内に複数のモジュールを構成するステップ(2000)と、
    −各実行パーティションで前記アプリケーションを実行する実行ステップであって、
    前記一次実行パーティションで処理された入出力が、前記一次実行パーティションと前記二次実行パーティションとの間の分散トランザクションとしてそれらの入出力のログをとる前記監視パーティションを介して前記二次パーティションに送信される実行ステップ(2100)と、
    −マイクロプロセッサのコンテキスト変化を番号付けることによって、前記一次実行パーティションおよび前記二次実行パーティションの実行を同期させる同期ステップであって、
    前記一次実行パーティションおよび前記二次実行パーティションにおける最新のコンテキスト数の間の違いに対応する時間のずれが所定の値よりも低くなければならない、同期ステップ(2200)と、
    −破局的なエラー信号を前記監視パーティションに送信する送信ステップであって、前記信号は実行中のパーティションのモジュールの障害の特徴を示している、送信ステップ(2300)と、
    −いわゆる劣化モードに対して切り替えることによって実行を継続する継続ステップであって、前記実行は単一のパーティションで続けられ、前記一次実行パーティションの障害の場合には、前記二次実行パーティションが新しい一次実行パーティションになるような変更動作(2400)を行う、継続ステップ(2500)と、
    を有することを特徴とする方法。
  2. マイクロプロセッサのコンテキスト変化を強制し、これにより同期を実行する(2200)ために、割り込みが所定の周波数で強制されることを特徴とする、請求項1に記載の同期実行方法。
  3. 前記所定の周波数は、約20Hzであり、非同期は従って50msに抑制されていることを特徴とする請求項2に記載の方法。
  4. 前記アプリケーションは、ハイパーバイザによって仮想化されていることを特徴とする請求項1から3のいずれか一項に記載の方法。
  5. 前記仮想マシンは単一のプロセッサ・コアで実行されており、前記仮想マシンは、前記一次実行パーティションおよび前記二次実行パーティションで同一であることを特徴とする請求項4に記載の方法。
  6. 複数のパーティション内に前記複数のモジュールを構成するステップ(2000)は、前記環境のサービスの停止なしに動的に行われることを特徴とする請求項1から5のいずれか一項に記載の方法。
  7. 環境の見かけの不稼働率は、前記一次実行パーティションおよび前記二次実行パーティションにおけるアプリケーションの実行の間の非同期に等しく、不稼働率は従って、実行の同期化(2200)によって制約されていることを特徴とする、請求項1から6のいずれか一項に記載の方法。
  8. 請求項1から7のいずれか一項に記載の方法を実行する命令コードに対応するファイルを含んでいるデジタル記憶装置。
  9. 請求項1から7のいずれか一項に記載の方法を実施する装置。
  10. フレームに挿入された前記複数のモジュールを含む請求項8または9に記載の装置であって、モジュールの底板は、前記底板に取り付けられた挿入ガイドを含み、
    これらのガイドは、
    最終的なガイド動作、および前記底板のコネクタの保護を確保する第1のタイプと、
    初期的なガイド動作を確保するために円錐状に終端した円筒形状を有する第2のタイプとの、2つのタイプであり、
    各ガイドは、前記フレームに対応する手段を有することを特徴とする装置。
  11. 前記第1のタイプは、円錐状に終端した円筒形状を有し、その長さは、前記第2のタイプの長さよりも約1センチメートル短いことを特徴とする、請求項10に記載の装置。
  12. 前記第1のタイプは、円錐状に終端した円筒形状と協働することができる凹状部分であることを特徴とする、請求項10に記載の装置。
  13. 前記第2のタイプの少なくとも1つのガイドは、前記底板に堅固に取り付けられていることを特徴とする、請求項10から12のいずれか一項に記載の装置。
  14. 前記第1のタイプの少なくとも1つのガイドは、前記底板にゆるやかに取り付けられていることを特徴とする、請求項11から13のいずれか一項に記載の装置。
  15. 前記第1のタイプのガイドと協働する少なくとも1つの円筒状のガイドは、前記フレームにゆるやかに取り付けられていることを特徴とする、請求項12または13に記載の装置。
  16. 前記底板は、前記第1のタイプのガイドを4個と、前記第2のタイプのガイドを2個含むことを特徴とする、請求項10から15のいずれか一項に記載の装置。
  17. 前記ガイドは、前記底板の対称軸に関して対称的に分布していることを特徴とする、請求項10から16のいずれか一項に記載の装置。
JP2015133056A 2014-07-01 2015-07-01 高稼働率環境においてアプリケーションを同期的に実行する方法および装置 Pending JP2016027470A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1456274A FR3023398B1 (fr) 2014-07-01 2014-07-01 Procede et dispositif d'execution synchronisee d'une application dans un environnement a haute disponibilite
FR1456274 2014-07-01

Publications (1)

Publication Number Publication Date
JP2016027470A true JP2016027470A (ja) 2016-02-18

Family

ID=51726669

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015133056A Pending JP2016027470A (ja) 2014-07-01 2015-07-01 高稼働率環境においてアプリケーションを同期的に実行する方法および装置

Country Status (5)

Country Link
US (1) US9575850B2 (ja)
EP (1) EP2975517B1 (ja)
JP (1) JP2016027470A (ja)
BR (1) BR102015015928A2 (ja)
FR (1) FR3023398B1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019115977A (ja) * 2017-12-26 2019-07-18 キヤノン株式会社 画像形成装置、その制御方法およびプログラム
CN109739568B (zh) * 2018-12-19 2021-12-21 卡斯柯信号有限公司 一种基于2乘2取2架构的安全平台启动方法
CN109947596A (zh) * 2019-03-19 2019-06-28 浪潮商用机器有限公司 Pcie设备故障系统宕机处理方法、装置及相关组件
CN110071851B (zh) * 2019-04-19 2022-01-25 成都飞机工业(集团)有限责任公司 一种测量飞行试验数据延迟的系统及方法
CN111177893B (zh) * 2019-12-11 2023-05-02 中电普信(北京)科技发展有限公司 基于多线程的并行离散仿真事件驱动方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4342083A (en) * 1980-02-05 1982-07-27 The Bendix Corporation Communication system for a multiple-computer system
WO1993009494A1 (en) * 1991-10-28 1993-05-13 Digital Equipment Corporation Fault-tolerant computer processing using a shadow virtual processor
US7966538B2 (en) * 2007-10-18 2011-06-21 The Regents Of The University Of Michigan Microprocessor and method for detecting faults therein
US8826077B2 (en) * 2007-12-28 2014-09-02 International Business Machines Corporation Defining a computer recovery process that matches the scope of outage including determining a root cause and performing escalated recovery operations
US9342358B2 (en) * 2012-09-14 2016-05-17 General Electric Company System and method for synchronizing processor instruction execution

Also Published As

Publication number Publication date
FR3023398B1 (fr) 2016-07-01
US9575850B2 (en) 2017-02-21
EP2975517A3 (fr) 2016-04-13
US20160004608A1 (en) 2016-01-07
EP2975517A2 (fr) 2016-01-20
FR3023398A1 (fr) 2016-01-08
BR102015015928A2 (pt) 2016-01-05
EP2975517B1 (fr) 2021-12-08

Similar Documents

Publication Publication Date Title
US9934183B2 (en) Server comprising a plurality of modules
CN102325192B (zh) 云计算实现方法和系统
AU2002324671B2 (en) Computer system partitioning using data transfer routing mechanism
US9389976B2 (en) Distributed persistent memory using asynchronous streaming of log records
JP2016027470A (ja) 高稼働率環境においてアプリケーションを同期的に実行する方法および装置
US20080046774A1 (en) Blade Clustering System with SMP Capability and Redundant Clock Distribution Architecture Thereof
CN108270726B (zh) 应用实例部署方法及装置
US20060281630A1 (en) Autonomic recovery from hardware errors in an input/output fabric
AU2002324671A1 (en) Computer system partitioning using data transfer routing mechanism
JP2004252591A (ja) 計算機システム、i/oデバイス及びi/oデバイスの仮想共有方法
GB2492620A (en) Midplane for blade server management
EP2084600A1 (en) Replacing system hardware
CN115225642B (zh) 超融合系统的弹性负载均衡方法及系统
KR20090081405A (ko) 파티션 유닛을 교체하는 방법 및 컴퓨터 판독가능 매체
US11086615B2 (en) Virtual appliance upgrades in high-availability (HA) computing clusters
CN113608836A (zh) 一种基于集群的虚拟机高可用方法及系统
JP2011034161A (ja) サーバシステム及びサーバシステムの管理方法
TWI756007B (zh) 用以進行全快閃記憶體陣列伺服器的高可用性管理的方法與設備
US20220215001A1 (en) Replacing dedicated witness node in a stretched cluster with distributed management controllers
US12093724B2 (en) Systems and methods for asynchronous job scheduling among a plurality of managed information handling systems
CN100559322C (zh) 具对称式多处理器性能的刀锋式丛集系统之时序分配结构
CN109995560A (zh) 云资源池管理系统及方法
KR101444783B1 (ko) 시스템 가용성 향상을 위한 시스템 운용 방법
JP4571056B2 (ja) 情報処理装置に新たに装置を組み込むための方法、情報処理装置及びプログラム
CN100472457C (zh) 多处理器环境中从控制块挂起恢复的方法和系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180608

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190507

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190912

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200303

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20201006