JP5102634B2 - 決定的イベント・シーケンスのロギングおよび再生のための命令をカウントする方法 - Google Patents

決定的イベント・シーケンスのロギングおよび再生のための命令をカウントする方法 Download PDF

Info

Publication number
JP5102634B2
JP5102634B2 JP2007552630A JP2007552630A JP5102634B2 JP 5102634 B2 JP5102634 B2 JP 5102634B2 JP 2007552630 A JP2007552630 A JP 2007552630A JP 2007552630 A JP2007552630 A JP 2007552630A JP 5102634 B2 JP5102634 B2 JP 5102634B2
Authority
JP
Japan
Prior art keywords
task
logged
processor
period
playback
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.)
Expired - Fee Related
Application number
JP2007552630A
Other languages
English (en)
Other versions
JP2008535040A (ja
Inventor
ヴェルテ、マルク
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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
Priority claimed from FR0500905A external-priority patent/FR2881244B1/fr
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2008535040A publication Critical patent/JP2008535040A/ja
Application granted granted Critical
Publication of JP5102634B2 publication Critical patent/JP5102634B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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
    • G06F11/3414Workload generation, e.g. scripts, playback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3409Recording 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
    • G06F11/3433Recording 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 for load management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、1つ以上のプロセッサ、特に並列アーキテクチャを有するマルチプロセッサ・システムにおいて実行されるタスクの動作を監視し管理するための透明かつ非侵入的な方法に関する。これは、具体的には、ネットワークにおいて実行されるマルチタスク・トランザクション・アプリケーションの様々なタスクに適用される。この管理は、特に、ロギング・データの形態でこれらのタスクの動作を記録し、かかるロギング・データからこの動作を再生して、ロギングの間に取得したものに対応する挙動および結果を提示することを可能とする。
また、本発明は、実行するソフトウェア・アプリケーションの機能管理においてかかる方法を実装するシステムに関する。
管理されるアプリケーションに関して非侵入的かつ透明な機能管理を実装することは、極めて有用である。これによって、特に、オリジナルの状態にある多くの既存のアプリケーション(「レガシー・アプリケーション」)を、一層柔軟に、信頼性高く、または高性能で使用可能とすることができる。
中間捕獲を行い、同期点または再開始点(「チェックポイント」)でアプリケーションの状態を復元することによる非侵入的な機能管理技法は、出願人によって、特許文献1においてすでに提案されている。補足的に、非侵入的なロギングおよび再生技法が、出願人によって、特文献2および3においてすでに提案されている。
フランス国特許出願FR 04 07180 フランス国特許出願FR 05 00605 フランス国特許出願FR 05 00613 フランス国特許FR 2 820 221
しかしながら、1つ以上のイベントのロギングは、ログされたアプリケーションまたはこれを実行するシステムにとって作業オーバーヘッドとなり、これをできる限り小さくすることには極めて関心が高い。
アプリケーションの実行を構成するイベントの中で、アプリケーションの状態に対して非決定的な挙動を有するものは、後の再生の間にそれらの結果を強制または再注入することができるように、それらの結果をロギング・データにストアしなければならない。従って、目的とすることは、非決定的として処理しなければならないイベント数をできる限り減らすことである。
アプリケーションの外部イベント、またはこれを実行しているシステムの外部イベントは、本質的に非決定的な挙動を有することが多く、一般に、例えば前掲の特許文献に記載されているようにストアしなければならない。
これに比べて、内部イベントは、非常に多くの場合に決定的な挙動を有し、アプリケーションの稼働中に実行される動作の大部分を構成する。従って、目的となるのは、特に内部イベントのうち非決定的なイベントのロギングを集約しかつ最適化することである。
実行の一部からの全てのイベントが決定的である場合、この部分は全て、例えば再開始点の形態で単にアプリケーションの開始状態をストアすることによって、経済的にログすることができる。そして、再生を行うには、例えば、アプリケーションをストアの際の再開始点状態に復元し、これらの決定的イベントの実行を起動する。その場合、決定的イベントのみから成る決定的部分のグループを含む「区分的に決定的な実行モデル」という用語を用いることができる。従って、一般に、決定的部分の境界は、非決定的イベントによって構成される。例えば、その開始時には外部メッセージが到着し、その終了時には別の非決定的イベントが起こる。
本発明の1つの目的は、かかる決定的部分のロギングおよび再生を簡略化または最適化することである。
更に、あるタイプのコンピュータ・アーキテクチャは、時にそれら自身の性質に固有の非決定の原因(non-determinism causes)を含む場合がある。特に並列アーキテクチャ・システムにおいて、時に物理的または実際の並列処理として認められるものがそうである。
従って、本発明の別の目的は、ロギングおよび再生機能の実装を容易にするまたは最適化することであり、特にマルチタスク・アプリケーションについて、並列環境において非決定の原因を少なくすることである。
冗長アーキテクチャにおける機能管理の状況において、本発明の別の目的は、並列環境において実行されるマルチタスク・アプリケーションの機能を高信頼性化する(reliabilize)ことである。
決定的部分は、本来、同じ状況から開始して同じ命令を実行すると、常に同じ結果を与える。従って、かかる決定的部分をログしかつ再生するために、開始状況のみをストアしかつ復元して、この部分の長さに対応する命令数の間、同じ実行可能ファイルから実行を行わせることができる。
しかしながら、これが最初のアプリケーションにおいて想定されていない場合、実行された命令のカウントの実装は、これらの命令を実行する少なくとも1つの械にとって著しい作業負荷となる。既知の技法では、かかる過負荷は多くの場合、容認できないか、またはかる実装を実験的な状況に限定してしまい、活用するという状況においては殆ど用いることができない。
本発明の目的は、これらの欠点の全てまたは一部を克服することである。
このため、本発明は、コンピュータ・システムにおいて、性能を監視または推定する手段を備えたプロセッサ内で、活動期(activity period)と称する所与の実行期間中に、ターゲットと称するコンピュータ・タスクを管理するための方法を提案する。これらの手段は、相対エラーと称するまたはの所与の可能なエラーを有するカウンタを含む。
この方法は、前記カウンタを用いて、前記活動期間の少なくとも1つの所与の時点まで、行された命令の数を評価するステップと、プロセッサまたはコンピュータ・システムの状態から読み取られたかまたは計算され、前記活動期間の少なくとも1つの所与の時点に対応する、署名と称するデータを生成するステップを含む。
管理された期間の開始以降に実行された命令のの評価が、コンピュータと共同で同期バリアとして少なくとも1つのシステム・コール命令を用いると好都合である。
この方法は、特に、2つの非決定的動作の間の連続的な決定的動作から成る活動期間の間のタスクを管理するために有用である。
従って、本発明は、ログされたプロセッサと称するプロセッサにログされているタスクを管理することを提案し、ログされた期間と称する前記タスクのこの活動期間に対応するロギング・データストアすることを含む。かかるロギング・データは、実行された命令の数の少なくとも1つの推定および記ログされた期間の終了に対応するログされた署名と称する署名を含む。
従って、順序付けられた態様で、プロセッサ・ログと称する少なくとも1つのファイルに、前記プロセッサにおいて実行される複数のタスクの連続的な活動期間のロギングを表すロギング・データをストアすることによって、プロセッサの使用をログすることができる。ロギング・データ、実行されたタスクを識別するデータのアイテムをこれらの各期間ごとに含む。
かかるロギング・データから、本発明は、ログされた期間の開始時においてログされたプロセッサまたはログされたシステムの状態に対応する状態から開始して、再生コンピュータ・システム内で、再生プロセッサと称するプロセッサによって実行される、再生タスクと称するタスクを管理することによって、ログされた期間を再生することを提案する。また、この方法は、再生タスクの実行の監視段階と確認段階を含む。
この監視段階は、カウンタによって評価されたログされた期間の命令数をカウンタの相対エラーだけ減少させた、ログされた期間の命令数の推定値に等しいかまたはこれより少ない数の命令を、再生の期間の開始から実行する。
この確認段階は、再生における所与の時点における再生タスクの実行を中断するステップと、ログされた署名と再生中断時点に対応する署名との間の比較テスト・ステップとの繰り返しからなる。
特に、ログされた署名は、ログ・ポインタと称するデータを含み、これがログされた期間の終了時におけるログされたタスクの命令ポインタの値を表す。また、この方法は、ログされたポインタ・データに対応する再生命令上にブレークポイントを設定するステップも含む。
本発明によれば、再生タスクの実行の監視段階は、特に、カウンタのオーバーフローを含み、このカウンタが、再生期間の開始から実行しなければならない命の数を決定するために事前に初期化され、そのオーバーフローによって再生タスクの中断生じさせる。
しかしながら、このタイプのカウンタは、かかる正確な使用には想定されていないので、かかる中断は、カウンタ・オーバーフローの後にある遅延をもって発生する場合がある。
従って、本発明は、カウンタのオーバーフローとこれ生じさせたタスクの中断との間にレイテンシ期間が存在する場合に充分に早期にオーバーフローを起こすため、再生タスクによって実行され命令数が、前記カウンタの相対エラーだけ減少させた、ログされた期間の命令数の推定に等しいかまたはこれより少ない数となるように、カウンタを、一定のマージンをもって再生期間の開始時において初期化することを提案する。
更に、セキュリティとして、確認段階は、再生タスクによって実行される命令数が、ログされた期間の命令数を所与の命令数だけ増大させた推定値を超えた場合に、エラーを信号で知らせるセキュリティ・ステップを含むことができる。
このようにログされたいくつかの期間を表すログから、本発明は、前記ログされたプロセッサにおいてログされた連続的な活動期間の1組の順序付けられたロギング・データを用いることによって、再生プロセッサと称するプロセッサにおいて、ログされたプロセッサの使用の再生を実行することができる。
また、本発明は、複数のログされたタスクによってアクセスされる、ターゲット・リソースと称する共有リソースに関連する連続的な帰属された排他的アクセスのロギングを行い、この方法は、リソース・ログと称する少なくとも1つのファイルの送信またはストアも行う。従って、このリソースは、これらの排他的アクセスを取得した異なる連続的なタスクの各々の識別を表すロギング・データを含む。
これらの技法から開始して、本発明は、少なくとも2つの演算ユニットにおいて同時に多数のアプリケーション・タスクを実行することができる計算手段を含む並列構造を備えた、コンピュータ・システムにおいて、少なくとも2つのアプリケーション・タスクの実行を連続的な活動化によって管理するシステム・ソフトウェア内で、前記タスクの機能を管理することを提案する。少なくとも1つの共有リソースにアクセスする、かかるアプリケーション・タスクについて、この方法は、
第1の演算ユニットにおいてこれらのタスクの一方または他方の第1の連続的な活動期間をロギングするステップと、
第2の演算ユニットにおいてこれらのタスクの一方または他方の第2の連続的な活動期間をロギングするステップと、
前記ターゲット・リソースに対するアクセスの要求に応答して、前記タスクのうちいわゆるアクセス・タスクに対して、前記ターゲット・リソースに排他的と称するアクセスの連続的な帰属(attribution)をロギングするステップを含む。すなわち、かかる帰属は、前記アクセス要求の直後のアクセス・タスクの活動期間の残り全ての間、これらのタスクの別のものによる前記ターゲット・リソースに対するいかなるアクセスも排除する。
他方で、この方法は、再生シリアル化と称する順序付けられた構造において、演算ユニットの各々における連続的な活動期間を表すロギング・データを、連続的な帰属された排他的アクセスを表すロギング・データと組み合わせる。この組み合わせは、各タスク内で、共有リソースに関連して、連続的な活動期間の順序を維持するように構成されている。
本発明によれば、ログされたタスクのログされた実行を再生するために、再生コンピュータ・システム内で、再生シリアル化データを用いることができる。
更に、この方法は、再生コンピュータ・システム内で、ロギングの間にログされたタスクにアクセス可能な前記ソフトウェア・リソースの全てまたは一部を仮想化することを含むことができる。
本発明によるこの方法は、コンピュータ・ネットワークの、1次ノードと称する並列構造を有する少なくとも1つのノード上で実行され、少なくとも1つの共有リソースにアクセスする、少なくとも2つのタスクを含むログされたアプリケーションの機能の、アクティブと称する複製を実行することを可能とする。従って、この複製は、再生システム上の少なくとも1つの再生アプリケーションにおいて、1次ノードから発生された場合に第2のノードへとオン・ザ・フローで送信されるロギング・データから開始する再生シリアル化の再生を含む。
一実施形態において、本発明は、コンピュータネットワークの、1次ノードと称する並列構造を有する少なくとも1つのノード上で実行され、少なくとも1つの共有リソースにアクセスする、少なくとも2つのタスクを含むアプリケーションの高信頼性化を実行することができる。従って、この高信頼性化は、1次ノード内での故障または所与のイベントの検出時に開始される、1次ノードから少なくとも1つの2次ノードへのサービスのスイッチングも含む。
別の実施形態において、本発明は、1次ノード上で実行されるターゲット・アプリケーションのアクティブ・レプリカを少なくとも1つの2次ノード上で実行するコンピュータネットワーク内で作業負荷の平衡化または調整を可能とする。従って、この負荷の平衡化は、管理されたターゲット・アプリケーションが提供するサービスの全てまたは一部のアクティブ・レプリカへのスイッチングを含む。
従って、本発明による方法は、例えばミドルウェア・タイプの1つ以上の機能管理アプリケーションが管理するクラスタを構成するネットワークのような、コンピュータ・ネットワークの少なくとも1つのノード内で実装することができる。従って、この方法は、特に命令シーケンスのロギングおよび再生によって、この機能管理の性能および機能を拡張または最適化することができる。
同一の状況において、本発明は、この方法を実装するシステムも提案する。これは、並列タイプまたは並列システムを構成し、場合によってはネットワークにおいて用いられる1つ以上のコンピュータ・システムに適用される。
本発明の他の特徴および利点は、限定的なものではない実施形態の詳細な説および添付図面から、明らかになろう。
発明を実装するための最良の形態
本明細書中に記載する技法は、例えばAMD社からのAthlon(TM)タイプのプロセッサ、またはIntel社からのPentium(R)プロセッサ等、PCタイプのコンピュータにおいて用いられるタイプのプロセッサのある特を用いた本発明の実施形態に対応する。もちろん、例えばワークステーションにおいて用いられる他の現行プロセッサまたは将来のプロセッサも、これらの特または同様の特の全てまたは一部を提供することができ、本発明を実行するために使用可能である。
図1および図2は、単一のμProXプロセッサまたは演算ユニットによって連続的に実行される決定的内部イベントの異なる部分ロギングするための技法を示す。
図1に示すように、異なるタスクTAおよびTBは、スケジューラSCHによって連続的に起動される、活動期間Sch1Sch3と称する部分によって実行することができる。スケジューラSCHは、コンテキスト・マネージャと称するシステム・エージェントの一部を形成し、これらの交番または交差を管理する。
コンピュータ・システムまたはプロセッサ内で実行される異なるタスクのうち、一部のものが、管理対象のアプリケーションの部分である場合があり、「被監視」タスクとして認められる。これらのタスクは、タスク記述子内の通常用いられないデータ・ビットの状態(1にセットされる)によって識別され、ここではこれを管理ビットMmAまたはMmB(図7を参照)と称する。被監視タスクおよび監視されない他のものは、プロセッサにおいて実行される連続的な活動期間内で交番することができる。
図2において文字「m」によって標示される被監視タスクTAおよびTBについては、それらが決定的イベントのみで構成されるように活動期間を選択する。これらの決定的期間は、1つ以上のロギング・ソフトウェア・エージェントによって定義される。このロギング・エージェントは、機能管理アプリケーションのタスクとして、コンピュータ・システムのユーザ・メモリ空間において実行される要素を含むことができる。また、このロギング・エージェントは、システム・ソフトウェア内、例えばスケジューラ内で、変更または追加された要素を含むかまたは用いることができる。
アプリケーションのイベントの大部分は内部イベントであり、それらの多くは決定的であるので、管理された各タスクの大部分は決定的イベントから成る。非決定的イベントが起こるたびに、ロギング・エージェントは決定的期間を終了させる。次いで、検出された非決定的イベントは、場合によっては監視されないタスクの形態で実行され、既知の方法に従ってその結果と共にログされる。この非決定的イベントが完了すると、ロギング・エージェントは新しい決定的部分の開始を定義し、再び命令のカウントを起動する。
非決定的イベントのロギンおよび合によってはその処理は、決定的動期間の外で、例えば、カーネル・モードKLvにおける実行期間K1またはK2で行われる。すなわちプロセッサ特権モードの値が0の間であり、これに対して、ユーザ・モードUlvについての値は3である。
ロギングの場合と同じ態様で各活動期間を再生することを可能とするために、本発明は、ロギングにこの決定的部分の間に実行される命令のカウントを実行する。従って、これらのタスクを後に再生RSCH(図3および図4を参照)する間、このログされた部分をロギングの場合と同じ状態から起動するだけで、この同じタスクについてロギング時のこの同じ部分が実行した命令数に厳密に相当する再生命令数までそれ自身で実行することができる。従って、この再生は、決定的部分内に結果を強制する介入なしに実行される。後者は決定的イベントのみを含むからである。
1つの決定的部分が、スケジューラによって確立された複数の活動期間にわたって延在する場合、これらの活動期間の各々は、この決定的部分の一部を含み、それ自体、完全な決定的部分として処理することができる。本明細書の残り部分では、決定的活動期間のロギングのみを説明するが、単一の決定的部分において多数の決定的活動期が互いの後に続くことができることは明らかである。
本発明によれば、決定的活動期間の命令のこのカウントは、性能および監視カウンタを用いる。これは現在、多数のプロセッサにおける既存のハードウェア機構である。例として、Intel社からのPentium(R)ファミリについてのPentium(R)2以降が挙げられる。この性能および監視カウンタは、持続時間において、または多数のイベントにおいて、プロセッサの機能を測定するために設けられており、例えばアプリケーション・プロファイルの統計的分析を実行するため、その値の周期的サンプリングによって、性能を測定するために主に用いられる。また、プロセッサ製造業者は、これらの性能カウンタが保証された精度を持たず、アプリケーションの最適化のために相対的または差動的な測定のために用いなければならないと指定する。
本発明は、この性能カウンタPMCの特の1つを用いることを提案する。すなわち、引退済みと称する命令、すなわち解決したか、または実行すべき命令のリストから出た命令のカウントである。これは、性能の理由のために前もっていくつかの命令を実行させることができる様々な投機的またはキャッシュ技法とは無関係である。
しかしながら、引退済み命令のこのカウントには、IntelおよびAMD社からの文書において記載されている、ある制限的な特がある。これらの特の1つは、このカウンタのための読み取り命令(「RDPMC」)が解決すべき命令に直接統合されないことである。これは、本発明と関連付けてこのカウンタを用いることに直接的な影響をもたらさない
一方、2つの他の制限的な特は、ロギングおよび再生のための命令のカウントにおいて不正確さを発生させる場合があり、考慮しなければならない。
不利益となる恐れのある第4の特、カウンタ・オーバーフローを引き起こした命令の後にいくらかの遅延を伴って、このカウンタ・オーバーフローによる実行の中断が起こる場合があるという事実である。
これらの不正確さによる制限は、一方では、ある複雑な命令が解決される前に中断されると2度カウントされる場合があることに関係し、他方では、ハードウェア中断を伴う命令によって命令の非カウントを生じさせる場合があることに関連する。この不正確さを克服するため、本発明は、活動期終了の正確な決定に関連する不確かさを排除することができる補足的な確認技法を用いる。
図1に示すように、μProXプロセッサにおいて実行される連続的な決定的活動期間Sch1、SchおよびSch3は、ログ・ファイルJμProXにログされかつ記録される。
プロセッサが被監視タスクTAを実行しているログされた活動期間Sch3の間、カウンタPMCの値UICXの1つ以上の読み取り命令RDPMCは、引退済み命令の数NJ3を供給する。この期間Sch3の停止(end Sch3)時に、ロギング・エージェントJSCHは、タスクTAおよびそのコンテキストの状態によって出力される状態データの1つ以上のアイテムを用いる。これは、この活動期間Sch3の間に実行された正確な命令数に関して存在し得る不確かさを排除するために、充分に明白な態様でこの状態を表すデータの1つ以上のアイテムを計算するためである。この状態データは、この期間終了(end Sch3)に対応する署名SG3を構成する。この署名は、具体的には、この期間の最後の命令の直後の命令ポインタの正確な値IPJX3、すなわちタスクTAの実行可能ファイルにおける最後に実行されたプログラム命令の位置の正確な識別を含む。また、この署名は、この停止(end Sch3)時におけるタスクTAのコンテキストからのコール・スタックPileJX3およびレジスタRegJX3に読み取られた値から計算された制御データ(「チェックサム」)を含む。
従って、ログされた期間SchJ(図3)の各々について、このプロセッサのログJμProXは、特に、次に関連するラインを含む。
−この期間において実行されたタスクTJの識別idJ、例えばこのタスクの「PID」
−カウンタPMCによって送信された、引退済み令のNJの値
−この期間の終了について計算された名SGJ
従って、図1に示したタスクTA、次いでタスクTB、次いでタスクTAという連続的なタスクについて、プロセッサμProXのログJμProXは、以下の連続的なラインを含む。
idA: NJ3: SG3
idB: NJ2: SG2
idA: NJ1: SG1
図2に示すように、所与のμProXプロセッサ内のログされたアプリケーションAPPJについてログされた連続的な異なるタスクは、最初に、ロギング・エージェントJSCHによって、FIFO(「先入れ先出し」)タイプのロギング・キューQJμProxに送信することができる。このキューの出力におけるロギング・ラインは、ログ・ストア・タスクTJμProxによって読み取られる。このタスクは、これらのラインを順序付けられた態様でこのプロセッサのログJμProxにストアすることを開始する。このストアは、ローカルに(MEM)、またはのノードまたはバックアップ・ステーションまたは周辺装置に送信(TRANS)することによって行われる。かかるロギング・キューの使用は、特にバッファ・ゾーンとして機能して、ロギング・データのフローを規制すると共に、ログされたアプリケーションまたはこのロギングを実行しているアプリケーションを妨害することを回避する
この利点は、特に、グローバル・アーキテクチャの場合に評価することができる。この場合、ロギング・データは、発生したときにオン・ザ・フローで(on-the-flow)、例えばスタンバイ機械上で同じ実行を再生している別のアプリケーションに送信されて、故障許容およびサービス継続を有する機能を実行する。
このカウント技法において、命令のカウントのための同期点としてシステム・コール命令を用いることが有利である場合がある。従って、これは、システム・コール・ルーチンがシステム・コール・カウンタを増分するようにこれらのシステム・コール・ルーチン装備化する(instrument)ことを伴う。従って、ハードウェア・カウンタPMCによる命令のカウントは、低いままに留まるを処理することができ、これによって性能が改善する。
図3および図4は、ログされた期間SchJの再生プロセッサμProZにおける再生技法を示す。図3は、このプロセッサにおける生タスクTRの最新状態TR1TR4を表す。図4は、かかる再生を実装するために用いる方法のフロー図を表す。実施形態または使用パラメータに依存して、再生はロギングと同じプロセッサにおいて行うことができ、例えば、異なる再生プロセッサと同じ原理に従って、アプリケーション追跡タイプの機能管理を行う。
かかる再生の間、例えば、再生エージェントRSCHを含むように変更されている場合があるスケジューラSCHによってスケジューリングした活動期間として、問題となっているタスクTJは、前述のプロセッサにおけるそのコンテキストを復元され、次いでこのタスクは解放され(41)、その実行が起動される。
ロギングが実行されたものとは異なる再生コンピュータ・システムにおける復元および実行を可能とするため、タスクまたはアプリケーションにアクセス可能なリソースの全てまたは一部を、例えば仮想的な態様、すなわちインスタンス化または再現して、再生アプリケーションに対してロギングの間と同じように見せなければならない。一般に関与するアイテムは、スレットTIPまたはプロセッサPIDについてのタスク識別子であり、更に再生アプリケーションがアクセスかつホスト・システムに依存するリソースの殆どであるこの仮想化は、再生タスクまたはアプリケーションの開始時に実行され、ロギングの間にストアされたデータに従って、このロギングの間と同様に変化するように再生中に変更される。
この仮想化は、カーネル・モードにおいて実行すると好都合である。これによって、特に、性能カウンタPMCによ命令のカウントにおいてその動作を考慮に入れることを回避することができる。
Intel社からの文書は、ハードウェア中断によるエラーは、+1命令または−1命令の相対エラーに制限されることを指定する。高々1つの単一ハードウェア中断を含むログされた決定的期間について、すなわち、その終了を生じさせたものについて、監視はカウンタPMCの2つの値を考慮する必要がある。すなわち、再生期間の開始時の値および監視点における値である。従って、最大相対エラーは、+2命令または−2命令である。
ログされたタスクTJの再生のための再生タスクTRの実行全体を通して、再生エージェントRSCHは引退した命令数を監視するため、RDPMCによって再生を実行するプロセッサμProXのカウンタPMCを読み取り、この読み取り値をこのログされたタスクTJに対応するロギング・データIdJ、NJ、SGJと比較する。この監視は、一旦この再生実行における命令の順序値がNJ−2に等しくなると再生タスクTRの実行を中断するように構成されている。この中断は、例えば、カウンタPMCのオーバーフローを所望の値にプログラミングすることによって実行される。
前述の第4の制限的な特のため、オーバーフローと中断との間のレイテンシ時間の存在は、あるマージンでオーバーフローをプログラミングする(41)(図4)ことによって補償することができる。そのようにすれば、NJ−2の所望の値の前に中断を確実に行うようにすることができるからである。このマージンは実験によって決定することができ、例えば約50の命令とすることができる。
従って、再生期間SchRの最初の実行は、NJ−50とNJ−2との間の命令数で中断される。次いで、再生エージェントRSCHは、再生タスクTRの実行可能ファイルのうち、署名SGJにストアした命令ポインタの値IPJに対応するプログラム命令BKI上に実行ブレークポイントBKをセットする(42)。次いで、このブレークポイントBKによる中断まで実行を再起動し(43)、再生した命令数がログされた命令数から2命令を減じた値すなわちNR=NJ−2以上になるまで、カウンタPMCからの命令数をテストする(44)。
このため、ログされた期間SchJの実際の正確な終了位置は、4つの後続の単一命令実行Instru0Instru3内に存在し、その各順序値はNJ−1NJ+2である。すなわち、この同じ期間SchJの推定終了位置NJと比べて2および間に含まれる相対的な位置にある。
次いで、確認段階(図4)では、この実際の位置を決定することができる。この位置を決定するため、後続の単一命令実行Instr1Instr4の後に、署名SGJを再生タスクTRの状態TR1TR4から同じやり方で計算した値SG1SG4(図3)と比較する。
この確認段階の開始時において、再生エージェントは、これに先行する監視によって生ぜられた中断の直後の再生タスクTRの状態に従って計算した再生署名SGRの値SG0を調べる(45)。
本発明によれば、署名SGJおよびSG0が一致しない場合、タスクTRの実行を再起動し、このブレークポイント命令BK1の最初の新しい実行TR2において停止する(46)。
しかしながら、この新しい停止位置TR2が疑わしい場合がある。例えば、ログされたタスクTJが、停止される前にこのブレークポイント命令BKIを数回実行することによって極めて短いループを実行した場合である。このブレークポイント命令BKIに対する実行の各ブレークTR2、TR4において、再生エージェントは署名SGJおよびSGRの一致を再び検証し(47)、この一致が得られるまで実行を再起動する。署名が一致すると(この例ではSGJ=SG4)、これは、ブレークポイント命令BKIの最後の実行Instr4がログされた期間SchJにおいてログされた最後の動作に対応することを意味する。次いで、再生エージェントは再生期間SchRを終了する(48)。
また、本発明は、セキュリティ機構を想定する、例えば、テスト(49)において再生TRを中断し、ある数の特定の命令実行の後に再生エラーを戻して(401)、例えば8回の単一命令実行の終了時に、エラーの場合の無限ループを回避する
複数のログされた期間を再生するため、例えばログされたアプリケーションAPPJに対応する再生アプリケーションAPPP(図5)の再生において、再生エージェントRSCHは、ログJμProXの異なるラインを連続して読み取り問題となっているラインに対応する活動期間を再生するためにこれらの各々を用いる。
図5に示すように、このログJμProXの異なるラインは、再生プロセッサμProZにおいて実行されるログ読み取りタスクTμProZによって、直接受信される(TRANS)か、またはローカルに読み取られる(MEM)。
次いで、各々がログされた期間に対応するこのログJμProXのラインの全ては、ログされた順序で、FIFOタイプの再生キューQJμProZに送信される。このキューの出力において、再生エージェントRSCHは、これらのログ・ラインの各々を用いて、それが表す期間を、ログされたタスクTA、TおよびTCに対応する、再生タスクTA’、TBおよびTC’によって再生させる。
再生プロセッサμProZ内でこれらの期間のスケジューリングを実行するため、再生エージェントRSCHは、スケジューラSCHの機能を、意味構造の変化なしに標準的なシステム・ソフトウェアに存在するとおりに用いる。この態様によって、特に、同じプロセッサにおいて実行され他のTNMのタスクとの互換性を維持することができる。スケジューラSCHの通常の機能を妨害することなく、ロギング中と同じスケジューリングを得るため、再生エージェントRSCHは、識別子TIDまたはPIDが再生しなければならないラインにストアされた識別子idAに対応しない限り、各再生タスクTB’、TC’の解放を阻止する(55b、55c)。
決定的期間のロギングおよび再生のためのこれらの技法は、前掲の特許文献に記載されているように、1つ以上の単プロセッサ・コンピュータ内で機能管理アプリケーションの性能および機能を最適化することができる。
マルチプロセッサ・コンピュータまたは並列に動作する多数のコンピュータを含むネットワーク等の並列アーキテクチャの場合には、複数のタスクがアクセス可能な共有リソースの使用によって、非決定の原因が増す。これは、この機能管理の状況において著しい性能損失の源となる恐れがあり、またはいくつかの重要かつ有用な機能を実装することを不可能とする場合さえある。
これらの非決定の原因の全てまたは一部を排除するため、本発明は、特に直接アクセス・タイプの共有リソースに対するアクセスを管理または制御することを可能とする方法を提案し、システムによって活動化される期間全体にわたって、各タスクが共有リソースに対して排他的アクセスを得ることができるようにする。
6は、並列マルチプロセッサ環境の機能の一例を示す。これは、マルチプロセッサ環境において、例えばLinuxタイプのシステムである第1のプロセッサμProXおよび第2のプロセッサμProYを含む。これらの2つのプロセッサは各々、単一の作業メモリ空間RAM内で、タスクTAおよびTBをそれぞれ並列に実行し、スケジューラによって調整される。各タスクTAおよびTBの活動期間の間、プロセッサμProX、μProYにおいて、そのプログラムEXEA、EXEBからの命令シーケンスSchA、SchBが実行される。このシーケンスからの命令InstrA、InstrBの実行中、プロセッサは、レジスタRegA、RegB、スタックPilA、PilB等、内部のリソースを用いることができる。
作業メモリRAM内で、例えば「マップ」タイプの命令によって、いくつかの共有メモリ・ゾーンShMPiShMPkを定義し、それらの物理アドレスによって直接、異なるタスクTAおよびTBからアクセス可能とする。
図6は、従来技術からの状況を示す。すなわち、タスクTAおよびTBは共通の期間にわたって並列に実行され、各々は単一の共有メモリ・ゾーンShMPiに対するアクセスを要求する命令InstrAおよびInstrBを含む。これらの2つのアクセス要求は、各プロセッサのメモリ・マネージャ・ユニットMMUによって独立した態様で処理され、互いに無関係にこの共有メモリ・ゾーンに到着する。
システム・コール・タイプのいくつかの命令からのみアクセス可能なリソースについて、これらの命令を実行するシステム・ルーチンを装備化することができる。すなわち、これらのルーチンを変更するか、またはれらのシステム・コールをインターセプトまたはこれらのシステム・コールに反応する要素をシステムに挿入することができる。ロギングおよび再生による機能管理の状況において、この装備化(instrumentation)は、特に、それらの挙動を記録して、後に全く同様に再生可能とすること、またはの挙動を決定的にして記録する必要がないように変更することができる。
これとは逆に、システム・コールなしに直接、従って場合によっては任意のプログラム命令からアクセス可能なリソースについては、殆どのオペレーティング・システおよびにUnix(R)またはLinuxタイプのものでは、この共有メモリ・ゾーンShMPiのレベルにおいて、これらのアクセスの到着を制御することはできない。
この問題を解決するため、図7および図8に示すように、本発明は、他機能のために現用されているある既存のハードウェア機能を変更または拡張するように、いくつかのシステム・ソフトウェア要素のコードを変更すること、または他のいくつかのコードを追加することを提案する。
具体的には、現行プロセッサのハードウェア特を変更することなく、Unix(R)またはLinuxタイプのシステム・ソフトウェアの数の要素を変更することによって、この問題を解決することができる。従って、わずかに変更されたかまたは変更されていないマルチタスク・アプリケーションを実行および管理するために、既存のシステム・ソフトウェアにわずかな変更のみ行うことによって、共通タイプ、従って経済的かつ充分に検査された機械を用いることができ、それらの上位互換性を損なうことなく機能を追加する。
本発明は、このため、例えばIntel社からのPentium(R)プロセッサまたはAMD社からのAthlon(TM)のような、PCタイプのアーキテクチャにおいて用いられるプロセッサ等、多くの最新のマイクロプロセッサに既存のいくつかの機構を用いる。これらのプロセッサは、特にPentium(R)2以降のものは、メモリ管理ユニット内に仮想メモリ管理機構を統合する。この機構は、作業メモリ定義されたいくつかのページを使用しない場合に、それらのページをハード・ディスク上に「アンロード」するために用いられ、物理メモリ内の対応する空間を解放するためにそれらのページをそこにストアする。現実行中のアプリケーションについては、これらのページはなお作業メモリにリスト化されているが、タスクがそれに実際にアクセス可能となるためには、それらはハード・ディスクから物理メモリに再び「ロード」しなければならない。
この仮想メモリを管理するため、図8に示すように、システム・ソフトウェアは仮想メモリ・マネージャVMMを含む。これは、仮想化可能なメモリの各ページごとに、異なる各アプリケーション・プロセス内でページ・テーブル・エントリ(「PTE」)を生成する。このため、各々がプロセス(すなわちその専有に係る実行コンテキストを有する)の形態で実行される2つのタスクTAおよびTBについて、ページShMPiShMPkの各々は、タスクTAのプロセスにおいてページ・テーブル・エントリPTEiAPTEkAを取得し、タスクTBのプロセスにおいてページ・エントリ・テーブルPTEiBPTEkBを取得する。
仮想メモリ・マネージャVMMは、ページ・ローダ・ソフトウェアPLを含む。これは、ハード・ディスク上の「スワップ」ファイルにメモリ・ページをロードおよびアンロードする。例えば、Microsoft社からのWindowsシステム(R)では、拡張子「.swp」を有するファイルである。SMPiページの各ロードまたはアンロードの間、物理メモリ内のその存在または不在の状態は、それに対応するページ・テーブル・エントリPTEiAおよびPTEiBにおいて、VMMマネージャによってストアされかつ維持される(30)。これらのテーブルPTEiAおよびPTEiB内で、この存在状態は、それぞれデータ・ビットPriAおよびPriBの形態でストアされ、存在する場合は値1であり不在の場合は値0である。
各プロセッサμProXおよびμProY内で、メモリ・マネージャMMUXまたはMMUYは、ページ不在(page fault)中断機構PFIntXまたはPFIntYを含む。これによって、実行されプログラム命令InstrAまたはInstrBから開始する任意のアクセス要求を渡す。プロセッサμProXが実行するタスクTAからの命令InstrAが、メモリ・ページShMPiに関係するアクセスを要求すると(33)、プロセッサの中断機構PFIntXは、対応するエントリ・テーブルPTEiA内にあるその存在ビットPriAの値を読み取ることによって、このページが物理メモリRAMに存在するか否かを検証する。
このビットPriAがページの存在を示す場合、中断機構PFIntXはアクセスを許可する。逆の場合、この中断機構PFIntAはタスクTAの実行を中断し、エラーのパラメータを、システム・ソフトウェアの仮想メモリ・マネージャVMMに含まれる「ページ不在ハンドラ」ソフトウェア・エージェントPFHに送信する。次いで、このページ不在ハンドラPFH実行され、システム・ソフトウェア内でアプリケーションに関連してこのエラーの結果を管理する。
図7は、本発明に従って共有リソースに対するアクセスを管理するために、これらの既存の機構をどのように変更して適合させるかを示す。
かかる並列環境において実行されるアプリケーションAPPからのこれらのアクセスを管理するため、図7に示すように、ランチャ・ソフトウェアLCHを用いて、例えばUnix(R)またはLinuxタイプのシステムにおいて、このアプリケーションの実行を起動する。その起動時に、第1のタスクTAを有するアプリケーションAPPを生成する。第1のタスクTAは、実行「スレッド」ThrA1を含むプロセスの形態であり、タスク記述子TDAを形成するデータ・テーブルを用いる。
このタスク記述子TDA内で、ランチャは、ここでは管理ビットMmAと称する通常は用いないデータ・ビットの状態を1に変更することによって、このタスクTAが管理または「監視」されなければならないという事実をストアする(21)。
ここでは共有メモリ・ページShMPi、ShMPおよびShMPkとして認められる作業メモリ内の異なる共有メモリ・ゾーンは、ページ・メモリ構造PMStrAを形成するデータ・テーブルにおいてタスクTA内にリスト化されている。この構造PMStrAにおいて、ページ・テーブル・エントリPTEiA1PTEkA1の形態で、共有ページを記述しかつ更新する。その各々は、前述のように仮想メモリ・マネージャVMMが用いるデータ・ビットPriA1PrKA1を組み込んでいる。通常、このページ構造PMStrAは、タスクTAと同時に生成され、共有メモリに任意の変化があると、「マップ」タイプのルーチン等、これらの変更を確立する異なるシステム・ルーチンによって更新される(20)。
管理されたアプリケーションAPPの実行中、この第1のタスクTAから、または同じ態様で生成した他のものから、「生成」タイプの命令CREによって他のタスクを生成することができる。また、新しく生成された任意のタスクTBは、スレッドThrB1およびタスク記述子TB、ならびにページ・メモリ構造PMStrBを含む。その親タスクからの継承関係INHを通して、新しいページ・メモリ構造PMStrBは、存在ビットPriB1PrkB1を有する異なるページ・テーブル・エントリPTEiB1PTEkB1も含み、これらは同じように最新の状態に維持される。
被監視タスクTAから新しいタスクTBを生成する(CRE)際に、新しいタスク記述子TDBは管理ビットMmBも含む。その値は、親タスクからの管理ビットMmAのものから継承される(INH)。
管理されたアプリケーションAPPの実行中に、最初は単一のスレッドThrB1を有するプロセスの形態で機能したタスクTB内で、他のスレッドを生成することができる。
既存の被監視タスクTB内で、「クローン」命令等のシステム・コールによって、任意の新しいスレッドThrB2を生成する。通常、マルチスレッド・プロセスの形態のタスクは、そのページ構造PMStrB内に、1組のみのエントリ・テーブルPTEiB1PTEkB1を含む。本発明によれば、「クローン」システム・コール等の新しいスレッドを生成可能な任意のシステム・ルーチンの機能は、例えば、その内部に補足的な部分CSUPを統合することによって変更される。この変更では、既存のタスクTBにおける新しいスレッドThrB2の生成が、既存の1組のテーブルPTEiB1PTEkB1を読み取ること(22および新しい1組のページ・テーブル・エントリPTEiB2PTEkB2を生成すること(23)を含み、これらが同じ共有ページShMPIShMPkに対応して、特に新しいスレッドThrB2と共に機能するように設計されている。この変更は、例えば、これらのルーチンCLONEの装備化によって、特許文献4に記載されているように、システム内の共有ライブラリのロードによる動的介入の技法を用いて実行可能である。
この生成は、新しいテーブルPTEiB2PTEkB2がそれらの親テーブルPTEiB1PTEkB1と同様の態様で最新に維持される(24、25)ことを保証するように実行される。そのため、この更新を管理するシステム・ルーチンMAP内にそれらを更新のために登録するか、またはえばそれらに補足的な部分MSUPを統合することによってこれらのシステム・ルーチンMAPを装備化する。
図8は、2つのプロセッサμProXおよびμProYにおいて並列に実行される2つの単一スレッド・タスクTAおよびTBを含む一例にこの構造を適用した、アクセス管理の機能を示す。ページ・テーブル・エントリPTEの構造を各タスク内でクローンした各スレッドThrB2に拡張することは、単一スレッドであれマルチスレッドであれ、被監視タスクに属する全スレッドから来る任意のアクセスも同じ態様で管理可能とすることに留意すべきである。
ここに述べた実施形態において、本発明によるアクセス管理は、各タスク(プロセスTAまたはTBという意味および各スレッドThrB1またはThrB2という味)に対し、共有メモリ・ページに対するアクセスを保証するように構成される。このアクセスは、動期間の全期間にわたって排他的であり、その間にそれらのコヒーレンス(または一貫性)が、システム・ソフトウェアによって保証される。かかる期間は、ここでは活動期間として記載し、システム・ソフトウェアのスケジューラSCHによって割り当てられ管理される。他のタイプのコヒーレンス期間を同じ精神で選択可能であることは明らかである。
また、アクセスが管理または制御される共有リソースは、ここでは共有メモリの形態で記載し、特定のメモリ・ゾーンとして、またはメモリ・ページとして定義した。同じ概念を、それに対応するシステム・ルーチンを同様に構成することによって他のタイプのリソースに適用することも可能である。
本発明の実装は、システム・ソフトウェアのいくつかの要素を、以下に記載するとおりに機能するように変更することを含む場合がある。もちろん、必要な変更レベルは、システム・ソフトウェアのタイプまたはバージョンに依存して様々となり得る。Linuxタイプのシステムの場合には、これらの変更は一般に、前述のような「クローン」または「マップ」タイプのルーチンの装備化を含み、更に、スケジューラSCH、ページ不在ハンドラPFおよびページ・ローダPLを生成するエージェント内の変更およびコード追加を含む。ここで述べたアクセス制御タイプを生成するために変更されるシステム機能は、標準的なシステムの機能と比べて完全な拡張となるという利点を有することができる。すなわち、機能を排除することがなく、またはなくとも、標準的なシステム・バージョンのために開発されたアプリケーションとの上位互換性を損なうことがない。
更に、仮想メモリ管理のためのプロセッサに想定されるハードウェア機構を用いるが、記載したアクセス制御は必ずしもこの仮想メモリの非活動化を必要とせず、これと両立することができる。例えば、仮想ページShMPiの物理メモリRAMhへのロードは、このページがすでに別のタスクTAによって用いられている場合には被監視タスクTBによってこのページの存在ビットPriBに反映されないように、ページ・ローダPLを構成または変更することができる。
図8に示すように、その活動期間SchAの1つの開始時に、タスクTAは時点SCHALにおいてスケジューラSCHによって解放される。このタスクを解放する前に、スケジューラSCHは、このタスクTAの管理ビットMmAをテストして(31)、それにアクセス制御を適用しなければならないか否かを確かめる。これが当てはまる場合、スケジューラSCHは次いで、このアクセス制御に関す全ての共有ページに対応するページ・テーブル・エントリPTEiAPTEkAの全ての存在ビットPriAPrkAを0にセットし(32)、このタスクTAによる任意のアクセス要求が、デフォルトで、このタスクTAを実行することができる全てのプロセッサμProXの中断機構PFIntXにおいてページ・エラーを引き起こすようにする。
プロセッサμProX内のこの活動期間SchAの間、命令InstrAは、共有メモリ・ページSchMPiに対するアクセスを要求する(33)。対応する存在ビットPriAがゼロであるので、プロセッサμProXの中断機構PFIntXは、このアクセス要求の実行を停止し、システム・ソフトウェアのページ不在ハンドラPFHをコールすると同時に、問題となっているページおよびタスクの識別をそれに送信する。
このエラーを処理する場合、ページ不在ハンドラPFHの補足的機能PFHSUPは、システム・ソフトウェアの仮想メモリ・マネージャTMM内のカーネル・メモリ構造KMStr(「カーネル・メモリ構造」)エージェントを形成するデータ・テーブル内のテストまたは変更あるいはその両方を実行する。
通常、このカーネル・メモリ構造KMStrは、作業環境の全てまたは作業メモリの全てのための明白な態様で、メモリ・リソースの構造およびそれらの形成を表すデータをストアする。本発明によれば、このカーネル・メモリ構造KMStrは1組のデータ・ビットも含む。これらのビットは、ここではアクセス・ビットKSi、KSおよびKSkと称し、問題となっている共有ページShMPiShMPkの各々ごとに、このページに対するアクセスがタスクに対し現に付与されている(ビットが1)か、または付与されていない(ビットが0)という事実を表す。
ページ不在ハンドラPFHが、プロセッサμProXによって送信されたエラーを処理する場合、これは、問題となっているShMPiページに対応するアクセス・ビットKSiを調べる(34)。このアクセス・ビットが任意の現行アクセスを示さない場合、このページに対するアクセスを付与したことをストアするために、このアクセス・ビットKSiを変更し(34)、更に、このタスクTAが今は問題となっているページShMPPiに対する排他的なアクセスを有するという事実をストアするために、要求側のタスクTAに対応する存在ビットPriAを変更する(ビットを1に変更する)(35)。
カーネル・メモリ構造KMStrのアクセス・ビットKSiのこれらのテストおよび変更動作は、アトミックな態様で実装される動作(34)を構成することに留意すべきである。すなわち、これは、マルチプロセッサ環境においても、完全に達成されるかまたは全く達成されないことが保証される。
一旦ページ不在ハンドラPFIntが要求されたページShMPi上の排他性を帰属させると、命令InstrAの実行を再起動して、このページの内容に実際にアクセスする(36)。
この後、別のプロセッサμProYによって並列に実行される別の被監視タスクTBからの命令InstrBが、このすでに帰属されたページShMPiに対するアクセスを要求すると(37)、このプロセッサの中断機構PFIntYは、要求側タスクTB用のこのページの存在ビットPriBを調べる。タスクTB被監視タスクであるので、調べられる存在ビットPriBは不在位置にある(値は0である)。従って、中断機構PFIntYは要求側命令InstrBを停止し、ページ不在ハンドラPFHにエラーを送信する(38)。
この時点で、このページ不在ハンドラPFHは、このページのアクセス・ビットKSiが1であることに注目し、すでにこのページShMPi上の排他性が別のタスクに付与されていることを示す。従って、ページ不在ハンドラPFHは、例えばシステム・ソフトウェア・コンテキスト変更マネージャ内でその活動期間を終了することによって、要求側タスクTBの全体の停止を開始する(39)。従って、その次の活動期間の間、このタスクTBは、これが中断された箇所までその実行を繰り返し、もう一度この同じページShMPiにアクセスを試みることができる。
要求側タスクがマルチスレッド・プロセスに属するスレッドThrB2(図7)である場合、この単一のスレッドThrB2に固有の1組のページ・テーブル・エントリPTEiB2の存在によって、すでに排他的アクセスに割り当てられたページに対するアクセスを要求するスレッドのみを停止することができ、この排他性と衝突しない他のスレッドThrB1については停止しない。
各タスクの活動期間SchAの完了時に(SCHAS)、スケジューラは、このタスクの実行を停止し、その実行コンテキストをバックアップする。
この停止時(SCHAS)またはすでに割り当てたページ要求の停止(39)の際に、本発明は、このタスクが排他的アクセスを受けた全ての共有メモリ・ページのための解放段階を想定する。従って、スケジューラSCHが、管理ビットMmAによって、停止中のタスクTA監視されることに注目する(301)場合、このタスクの全てのページ・テーブル・エントリPTEiAPTEkAをスキャンして、異なる存在ビットPriAPrkAの状態を調べることによって、どのページ上で排他的アクセスを有するかを確かめる。次いで、この情報に基づいて、カーネル・メモリ構造KMStrにおいてそれらのアクセス・ビットKSiを0にリセットすることによって、全てのこれらのページShMPiを解放する。
他の図示しない変形において、例えば単一のタスク記述子内にいくつかの管理ビットを想定することによって、管理または監視の概念をいくつかのタイプの管理に分離することもできる。従って、あるカテゴリのタスクに関しては、排他的アクセスから利益を得るようにタスクを監視することができる。同様に、あるカテゴリのタスクによってのみタスクを排除することも可能である。
このため、すでに割り当てたページにアクセスしようとする全てのタスクを停止することで、このページの排他性は、これを要求する第1のタスクのために得ることができ、しかも、このように停止した他のタスクの実行のコヒーレンスは損なわれない。
同時に実行されている2つのタスクによって共有される単一メモリ・ゾーンの任意の変更を回避することで、このメモリ・ゾーンの内容が変化する際のそれらの間の干渉を回避する。このメモリ・ゾーンにアクセスするタスクの各動期の開始時における、当該メモリ・ゾーンの所与の初期状態からの、その内容の変化は、この活動期間中のこのタスクのアクションにのみ依存する。例えばスケジューリングされた活動期間のような、このタスクが実行する所与の命令シーケンスについて、既知の初期状態から開始することで、このタスクに関して決定的かつ反復可能なこのシーケンスの実行を行うことができる。
特に、アクセスされたメモリ・ゾーンに対する排他性の割り当てをストアするためにアトミックな動作を用いるので、この方法は、競合してアクセスしようとする複数のタスク間で共有される単一のリソースのデッドロックのリスクを回避または軽減することができる。
共有メモリ・ページShMPiに対するこの期間の残りの間の排他的アクセスを、アクセスしているタスクTAに帰属させる際に、ページ不在ハンドラPFH、PFHSUPは、この帰属を表すロギング・データを用意することができると好都合である。このロギング・データは、この排他的アクセスが帰属されたタスクTAの識別を含み、更に、場合によっては、問題となっているタスクTAのコンテキストに適用されるかまたはタスクTAの実行における要求側命令InstrAの位置を表す他の補足的デーおよび得した排他的アクセスの持続時間においてこのタスクTAが実行する命令数を含む。
システム・ソフトウェア内で、このロギング・データをアクセス・ログにおいてグループ化して、ある期間または実行中に帰属された連続的な排他的アクセスを表すことができる。このログは、具体的には、1組の順序付けられたデータを含み、例えばそれらのPIDまたはTIDによって、これらの排他的アクセスを取得した連続的なタスクを識別する。従って、被監視タスクがアクセスした各リソースは、その専有に係りかつこのリソースに対する排他的アクセスを取得した連続的なタスクをグループ化するログを確立することができる。
これらのアクセス制御技法(図7および図8)を、前述の決定的期間をロギングするための技法(図1図5)、ならびに、前掲の特許文献に記載されたチェックポイントおよびロギングおよび再生技法と組み合わせることによって、本発明は、並列アーキテクチャ・システムにおいて、前述の異なるタイプの機能管理を実装することも提案する。
従って、図9は、本発明による、マルチプロセッサ・システムMP1におけるマルチタスク・アプリケーションAPPJのロギンおよび一プロセッサ・システムUP2において必要とされるその再生を示す。
ログされたアプリケーションAPPJについて、ロギング・エージェントJSCHは、各プロセッサμProXまたはμProYごとに、異なる被監視タスクTA、TおよびTCの全ての連続的な活動期間をログする。前述のように、これは、それぞれキューQJμProXおよびQJμProYとしてそれらを別個に送信する。タスクを一旦あるプロセッサにおいて実行し、一旦別のプロセッサにおいて実行する場合、このタスクの活動期間は2つのキューに存在することに留意すべきである。
ログされたアプリケーションAPPJがアクセスする共有リソースShMPiShMPkについて、ロギング・エージェントJVMMは、これらの各リソースごとに、このリソース上に割り当てらた連続的な排他的アクセスを表すロギング・データを記録する。この排他的アクセス・ロギング・データは、仮想メモリ・マネージャVMM内において、ページ不在ハンドラPFHによって、異なるタスクに割り当てる排他的アクセスと共に発生される。
このアクセス・ロギング・データの各記録は、特に、以下を含む。
問題となっている共有リソースの一義的な識別子。例えば共有メモリ・ゾーンのためのアドレス
−このアクセスを取得したタスクのための識別子(PIDまたはTIP)
−例えばここに述べたカウント技法によって取得した、この排他的アクセスの持続時間
−このカウントの不正確さを補償することを可能とする補足的データ。例えば前述のような署名
−例えば、システム・リソースおよび異なる外部または入出力イベントの仮想化のために有用な何らかの補足的データ。
このロギング・データは、FIFOタイプのロギング・キューQJShMPiに送信される。
実施形態に応じて、これらのキューQJμProX、QJμProY、QJμMPiの内容を、例えば後に用いるために、1つ以上のログ・ファイルにストアすることができる。
これらのキューから、コンピュータ通信ネットワーク等の通信手段によって、異なるロギング・データを再生システムUP2に送信する。
各ロギング・キューQJμProX、QJμProY、QJμMPiからのデータは、発行キューに対応する再生キューQRμProX、QRμProY、QRμMPiによってそれぞれ受信される。
これらの再生キューの出力において、アクセス・ロギング・データに従って、異なるログされたプロセッサμProXおよびμProYのロギング・データを組み合わせて、ログされた活動期間および割り当てられた(連続的な)排他的アクセスを組み合わせたシリアル化を復元する。
再生システム内で、この再生シリアル化を定義した後に、または再生スケジューリングの後に、再生プロセッサにおいて再生の実行を起動する。
この再生シリアル化のスケジューリングを妨害しない態様でこれらのプロセッサ間にタスクを分散させると、再生の際の性能を除いて、再生プロセッサの数は重要でないことに留意すべきである。
従って、マルチプロセッサ・システムMP1におけるログされたアプリケーションAPPJから、そのアプリケーションの異なるタスクTA、TおよびTCの決定的期間の再生を、再生マシンUP2において再生タスクTA’、TBおよびTC’の形態で行うことができる。決定的期間のこの再生を、非決定的イベンおよびに外部イベントのロギングおよび再生と組み合わせることで、本発明は、ログされたアプリケーションAPPJの実行を再現する再生アプリケーションAPPJを、高性能で得ることができる。
発生されるとすぐに(オン・ザ・フロー)ログされたシステムから再生システムにロギング・データを送信することによって、ログされたアプリケーションと全く同じ態様で動作し、単に時間遅延があるだけの、追従型または「シャドー」再生アプリケーションを生成することができる。この種の状況では、「アクティブ−アクティブ」構成という用語を用いることができる。この構成では、双方のアプリケーションが実行中であり、例えば、将来のプロビジョンとしてアプリケーションの状態をストアする技法とは対照的である。
かかる「アクティブ−アクティブ」構成では、再生アプリケーションAPPRが、マスタまたは1次アプリケーションのアクティブなレプリカとなると考えることができる。このアクティブなレプリカは、2つのシステムの比較性能等の要因に依存し得るわずかな時間遅延を生じ、これに対して、ロギング・データの送信および処理の時間が主に追加される。典型的な遅延は、少数のスケジューリング期間であり、一般には数ミリ秒である。
まず考えられることとして、ここに述べた技法は、オリジナルのまたはレガシー・アプリケーションに比べて小さいオーバーヘッドのみを生じ、活用状況においておそらく許容可能な種類の性能損失のみを生じる機能管理の実装を可能とする。
本発明は、好都合なことに、このタイプの「アクティブ−アクティブ」構成を、アプリケーション高信頼性化実装適用することができる。その場合、アクティブなレプリカは、オリジナルのミラー・アプリケーションとして用い、故障またはある特定のイベントの場合にそれを引き継ぐことができる。ミラー・システムのハードウェア実装に比べて、本発明は、用いる機械のハードウェア特からの独立性が向上しているため、機能およびハードウェア管理においてはるかに柔軟性を高めることができる。
従って、かかる構成によって、柔軟かつ非侵入的な態様で、既存のアプリケーションに故障許容機能を導入することができ、同時に、並列アーキテクチャにおいても、性能損失を抑えることができる。
また、サービスの全てまたは一部をログされたアプリケーションからアクティブなレプリカへと再分配することによって、作業負荷の平衡化または調整(「ロード・バランシング」)のために、かかる「アクティブ−アクティブ」構成を用いる場合にも、これらの利点は存在する。これによって、例えば、ハードウェアの使用を最適化することができ、または、再配置可能(relocative)保守を実装するためにその一部を解放することができる。
ここで述べた異なる機構は、ハードウェア部分とは切り離してソフトウェア部分を用いることに留意すべきである。そのため、ハードウェアに関して良好な独立性が得られ、これは特に、実装を簡単にし、信頼性化し、これらがプロセッサまたはコンピュータである場合、アーキテクチャが異なる計算要素の並列処理を最良に管理することを可能とすることで、良好な性能を維持する。
更に、本発明は多くの場合、純粋にソフトウェア実装であるので、全ての利点を含みながら、標準的なハードウェアを用いることができる。
本発明は、特に、単一の計算要素において共有時間で機能するマルチタスク・アプリケーションのために開発された機能管理技法を、並列環境に拡張することができる。従って、本発明は、かかる並列環境を、ミドルウェア・タイプのアプリケーション内でこの機能管理を実装するネットワークまたはクラスタに統合することができ、例えば、「オン・デマンド」サービスを提供する分散型アプリケーションまたは可変配置(variable deployment)アプリケーションを管理することを可能とする。
明らかに、本発明は記載してきた例に限定されるものではなく、本発明の枠組みから逸脱することなく、多くの修正を行うことができる。
本発明に従って、プロセッサにおいてタスクをカウントすることによってタスクの実行のスケジューリングをロギングすることを示す図である 本発明に従って、プロセッサにおいてタスクをカウントすることによってタスクの実行のスケジューリングをロギングすることを示す図である 本発明に従って、プロセッサにおいて命令をカウントすることによってタスクの活動期再生することを示す図である 本発明に従って、プロセッサにおいて命令をカウントすることによってタスクの活動期再生することを示す図である 本発明に従って、プロセッサにおけるタスク・スケジューリングの、命令をカウントすることによるロギングから得られた、マルチタスク・アプリケーションの単一プロセッサ・システムにおける決定的再生を示す図である 従来技術に従った、単一環境からの2つの異なるプロセッサによって並列に実行される2つのタスク間で共有されるメモリに対するアクセスの機能を示す図である 本発明に従った、単一環境からのいくつかの異なるプロセッサ上で並列に実行される多数のタスク間で共有されるメモリ・ページに対するアクセスの制御を可能とする構造の、タスク内での生成および保守を示す図である 本発明に従った、単一環境からの2つの異なるプロセッサ上で並列に実行される2つのタスクが共有するメモリ・ページに対するアクセスの制御の機能を示す図である 本発明に従った、マルチプロセッサ・コンピュータ上でのマルチタスク・アプリケーションのロギンおよび一プロセッサ機械上でのそのオン・ザ・フロー再生を示す図である

Claims (7)

  1. コンピュータ・システムにおいて、性能を監視または推定する手段を備えたプロセッサ内で、2つの非決定的動作の間の連続的な決定的動作から成る、動期間(SchJ、SchR)と称する所与の実行期間中に、ターゲットと称するコンピュータ・タスクを管理するための方法であって、前記手段は、相対エラーと称するまたはの所与の可能なエラー有するカウンタ(PMC)を含み、
    記カウンタを用いて、前記活動期間の少なくとも1つの所与の時点まで、実行された命令の数(NR、NJ)を評価するステップと、
    記プロセッサまたは前記コンピュータ・システムの状態から読み取られたかまたは計算された、前記活動期間の少なくとも1つの所与の時点に対応する、署名(SGJ、SGR)と称するデータを生成するステップをみ、
    前記方法が、順序付けられた態様で、プロセッサ・ログ(JμProX)と称する少なくとも1つのファイル内に、ログされたプロセッサと称するプロセッサ(μProX)において実行される複数のタスク(TA、TB、TA)の連続的な活動期間(Sch1、Sch2、Sch3)のロギングを表すロギング・データをストアすることによって、前記ログされたプロセッサ(μProX)の使用をログし、前記ロギング・データが、前記実行されたタスク(TJ)を識別するデータ(idJ)をこれらの各期間ごとに含み、
    前記方法が、前記ログされた期間(SchJ)の開始時における前記ログされたプロセッサの状態または前記ログされたシステムの状態に対応する状態から開始して、再生コンピュータ・システム(UP2)内で、再生プロセッサ(μProZ)と称するプロセッサによって実行される、再生タスク(TR)と称するタスクを管理することによって、前記ログされた期間(SchJ)の再生を、前記ロギング・データから実行し、
    前記方法が、前記再生タスク(TR)の実行の監視段階と確認段階とをさらに含み、
    前記監視段階が、
    前記カウンタ(PMC)によって評価された前記ログされた期間の命令数(NR)を前記カウンタの前記相対エラーだけ減少させた、前記ログされた期間の命令数の推定値(NJ)に等しいかまたはこれより少ない数の命令を前記再生の期間の開始から実行し、
    前記確認段階が、
    前記再生における所与の時点(TRI0、TRI2、TRI4)において、前記再生タスクの実行を中断するステップ(46)と、
    前記ログされた署名(SGJ)と前記再生中断時点に対応する署名(SGR)との間の比較テストを行うステップ(47)との繰り返しからなり、
    前記ログされた署名(SGJ)が、ログ・ポインタ(IPJ)と称するデータを含み、これが前記ログされた期間(SchJ)の終了時における前記ログされたタスクの命令ポインタ(IPJX3)の値を表す、方法。
  2. 記ログされたポインタ・データ(IPJ)に対応する再生命令(BKI)上にブレークポイント(BK)を設定するステップ(42)も含む、請求項1記載の方法。
  3. 前記監視段階、前記カウンタ(PMC)のオーバーフローを含み、このカウンタが、前記再生期間の開始から実行しなければならない命(NR)を決定するために事前に初期化され、そのオーバーフローによって前記再生タスクの中断(41)生じさせる、請求項1記載の方法。
  4. 前記カウンタのオーバーフローとこれ生じさせたタスクの中断との間にレイテンシ期間が存在する場合に充分に早期にオーバーフロー(41)を起こすため、前記再生タスク(TR)によって実行される命(NR)が、前記ログされた期間の前記命令数の推定値(NJ)に等しいかまたはこれより少ない数となるように、前記カウンタ(PMC)を、一定のマージンをもって前記再生期間の開始時において初期化する、請求項3記載の方法。
  5. 前記確認段階は、前記再生タスク(TR)によって実行される命令(NR)が、前記ログされた期間の命令数(NR)を所与の命令数だけ増大させた推定値(NJ)を超えた場合に、エラーを信号で知らせるセキュリティ・ステップを含む、請求項1記載の方法。
  6. 前記ログされたプロセッサ(μProX)においてログされた連続的な活動期間(Sch1、Sch2、Sch3)の1組の順序付けられたロギング・データを用いることによって、前記再生プロセッサ(μProZ)において、前記ログされたプロセッサの使用の再生を実行する、請求項1記載の方法。
  7. 複数のログされたタスクによってアクセスされる、ターゲット・リソース(ShMPi)と称する共有リソースに関連する連続的な帰属された排他的アクセスのロギングを実行し、前記方法が、これらの排他的アクセスを取得した前記連続的なタスクの少なくとも1つの識別を含む、リソース・ログ(JShmPi)と称する少なくとも1つのファイルの送信またはストアも行う、請求項1記載の方法
JP2007552630A 2005-01-28 2006-01-24 決定的イベント・シーケンスのロギングおよび再生のための命令をカウントする方法 Expired - Fee Related JP5102634B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0500905A FR2881244B1 (fr) 2005-01-24 2005-01-28 Procede de comptage d'instructions pour journalisation et rejeu d'une sequence d'evenements deterministes
FR0500905 2005-01-28
PCT/EP2006/050406 WO2006079623A1 (en) 2005-01-28 2006-01-24 Method for counting instructions for logging and replay of a deterministic sequence of events

Publications (2)

Publication Number Publication Date
JP2008535040A JP2008535040A (ja) 2008-08-28
JP5102634B2 true JP5102634B2 (ja) 2012-12-19

Family

ID=36096780

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007552630A Expired - Fee Related JP5102634B2 (ja) 2005-01-28 2006-01-24 決定的イベント・シーケンスのロギングおよび再生のための命令をカウントする方法

Country Status (7)

Country Link
US (1) US7774647B2 (ja)
EP (1) EP1856612B1 (ja)
JP (1) JP5102634B2 (ja)
CN (1) CN101103338B (ja)
AT (1) ATE409909T1 (ja)
DE (1) DE602006002967D1 (ja)
WO (1) WO2006079623A1 (ja)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE602007002828D1 (de) * 2006-08-28 2009-11-26 Ibm Verfahren zur verbesserung des transfers von ereignisprotokollierungen zur replikation gerade ausgeführter programme
US7770064B2 (en) * 2007-10-05 2010-08-03 International Business Machines Corporation Recovery of application faults in a mirrored application environment
US7856536B2 (en) * 2007-10-05 2010-12-21 International Business Machines Corporation Providing a process exclusive access to a page including a memory address to which a lock is granted to the process
US7921272B2 (en) * 2007-10-05 2011-04-05 International Business Machines Corporation Monitoring patterns of processes accessing addresses in a storage device to determine access parameters to apply
US8055855B2 (en) * 2007-10-05 2011-11-08 International Business Machines Corporation Varying access parameters for processes to access memory addresses in response to detecting a condition related to a pattern of processes access to memory addresses
US20090100243A1 (en) * 2007-10-16 2009-04-16 International Business Machines Corporation High Performance, Lock-Free Virtual Storage Manager
US7840839B2 (en) * 2007-11-06 2010-11-23 Vmware, Inc. Storage handling for fault tolerance in virtual machines
CN101446909B (zh) * 2007-11-30 2011-12-28 国际商业机器公司 用于管理任务事件的方法和系统
US9928072B1 (en) 2008-05-02 2018-03-27 Azul Systems, Inc. Detecting and recording atomic execution
US9064043B2 (en) * 2008-12-19 2015-06-23 Ncr Corporation Fault replay system and method
US8627292B2 (en) * 2009-02-13 2014-01-07 Microsoft Corporation STM with global version overflow handling
US8402318B2 (en) * 2009-03-24 2013-03-19 The Trustees Of Columbia University In The City Of New York Systems and methods for recording and replaying application execution
US8346509B2 (en) * 2009-04-08 2013-01-01 Intel Corporation Context switch sampling
JP2011258055A (ja) * 2010-06-10 2011-12-22 Fujitsu Ltd 情報処理システム及び情報処理システムの障害処理方法
US8924788B2 (en) * 2010-06-28 2014-12-30 Intel Corporation Replaying architectural execution with a probeless trace capture
KR101635816B1 (ko) 2010-07-02 2016-07-04 삼성전자주식회사 결정적 프로그레스 인덱스를 이용한 스레드 프로그레스 트래킹 방법 및 장치
KR101686082B1 (ko) * 2010-07-22 2016-12-28 삼성전자주식회사 결정적 프로그레스 인덱스 기반 락 제어 및 스레드 스케줄링 방법 및 장치
US9052967B2 (en) * 2010-07-30 2015-06-09 Vmware, Inc. Detecting resource deadlocks in multi-threaded programs by controlling scheduling in replay
US9189308B2 (en) * 2010-12-27 2015-11-17 Microsoft Technology Licensing, Llc Predicting, diagnosing, and recovering from application failures based on resource access patterns
US20120179898A1 (en) * 2011-01-10 2012-07-12 Apple Inc. System and method for enforcing software security through cpu statistics gathered using hardware features
US8442941B2 (en) 2011-01-19 2013-05-14 Microsoft Corporation Scalable database workload replay with mode selections
US8856764B2 (en) * 2011-01-25 2014-10-07 International Business Machines Corporation Distributed static analysis of computer software applications
KR102028663B1 (ko) * 2012-07-24 2019-10-04 삼성전자주식회사 에러 검출 방법 및 장치
CN102981944B (zh) * 2012-12-12 2016-04-20 青岛海信宽带多媒体技术有限公司 一种基于文件系统的日志存储方法
CA2948404A1 (en) * 2014-05-08 2015-11-12 Tsx Inc. System and method for running application processes
US9361068B2 (en) 2014-05-21 2016-06-07 International Business Machines Corporation System and method for using development objectives to guide implementation of source code
US9886363B2 (en) * 2015-03-27 2018-02-06 International Business Machines Corporation Identification of storage performance shortfalls
US10055199B2 (en) * 2016-02-10 2018-08-21 NodeSource, Inc. Transparent node runtime and management layer
US9858151B1 (en) * 2016-10-03 2018-01-02 International Business Machines Corporation Replaying processing of a restarted application
US10545952B2 (en) * 2017-01-31 2020-01-28 Xactly Corporation Multitenant architecture for prior period adjustment processing
CN109710470A (zh) * 2018-12-03 2019-05-03 中科曙光信息产业成都有限公司 处理器重放调试方法及系统
CN112825058A (zh) * 2019-11-21 2021-05-21 阿里巴巴集团控股有限公司 处理器性能评估方法及装置
CN112540288B (zh) * 2020-11-30 2023-02-21 海光信息技术股份有限公司 用于硅后芯片验证的方法、系统、设备以及存储介质
US11366705B1 (en) * 2021-07-29 2022-06-21 Apex.AI, Inc. Deterministic replay of events between software entities

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4703481A (en) * 1985-08-16 1987-10-27 Hewlett-Packard Company Method and apparatus for fault recovery within a computing system
JPH03241438A (ja) * 1990-02-20 1991-10-28 Nec Corp プログラムデバッグ支援装置
US5214780A (en) * 1990-03-23 1993-05-25 Sun Microsystems, Inc. Synchronized journaling system
JP2758311B2 (ja) * 1992-05-28 1998-05-28 富士通株式会社 複合システムにおけるログファイル制御方式
US5875294A (en) * 1995-06-30 1999-02-23 International Business Machines Corporation Method and system for halting processor execution in response to an enumerated occurrence of a selected combination of internal states
GB9601585D0 (en) * 1996-01-26 1996-03-27 Hewlett Packard Co Fault-tolerant processing method
US5774660A (en) * 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US5961654A (en) 1996-12-17 1999-10-05 International Business Machines Corporation Operand fetch bandwidth analysis
US6112317A (en) 1997-03-10 2000-08-29 Digital Equipment Corporation Processor performance counter for sampling the execution frequency of individual instructions
US5970439A (en) * 1997-03-13 1999-10-19 International Business Machines Corporation Performance monitoring in a data processing system
US5978912A (en) * 1997-03-20 1999-11-02 Phoenix Technologies Limited Network enhanced BIOS enabling remote management of a computer without a functioning operating system
US6574750B1 (en) * 2000-01-06 2003-06-03 Oracle Corporation Preserving consistency of passively-replicated non-deterministic objects
FR2843209B1 (fr) 2002-08-02 2006-01-06 Cimai Technology Procede de replication d'une application logicielle dans une architecture multi-ordinateurs, procede pour realiser une continuite de fonctionnement mettant en oeuvre ce procede de replication, et systeme multi-ordinateurs ainsi equipe.
US7373548B2 (en) * 2003-08-29 2008-05-13 Intel Corporation Hardware recovery in a multi-threaded architecture
US8301868B2 (en) * 2005-09-23 2012-10-30 Intel Corporation System to profile and optimize user software in a managed run-time environment

Also Published As

Publication number Publication date
US20090119549A1 (en) 2009-05-07
WO2006079623A1 (en) 2006-08-03
EP1856612A1 (en) 2007-11-21
ATE409909T1 (de) 2008-10-15
CN101103338B (zh) 2011-11-23
EP1856612B1 (en) 2008-10-01
JP2008535040A (ja) 2008-08-28
DE602006002967D1 (de) 2008-11-13
US7774647B2 (en) 2010-08-10
CN101103338A (zh) 2008-01-09

Similar Documents

Publication Publication Date Title
JP5102634B2 (ja) 決定的イベント・シーケンスのロギングおよび再生のための命令をカウントする方法
JP5505914B2 (ja) 単一プロセッサまたはマルチプロセッサ・コンピュータ・システムにおけるマルチタスク・アプリケーションのロギングおよび再生を最適化する方法
JP4866864B2 (ja) マルチ・プロセッサ環境において共有されるリソースへのアクセスを管理する方法およびプログラム
JP5258019B2 (ja) アプリケーション・プロセス実行の範囲内での非決定論的オペレーションを管理、ロギング、またはリプレイするための予測方法
US8370841B2 (en) Optimizing deterministic event record and replay operations
US8739163B2 (en) Critical path deterministic execution of multithreaded applications in a transactional memory system
Musuvathi et al. Finding and Reproducing Heisenbugs in Concurrent Programs.
US7966459B2 (en) System and method for supporting phased transactional memory modes
JP2008529114A5 (ja)
JP5519909B2 (ja) アプリケーション・プロセスにおいて内部イベントをリプレイするための非侵入的方法およびこの方法を実装するシステム
US20070130569A1 (en) Method, apparatus and program storage device for providing a no context switch attribute that allows a user mode thread to become a near interrupt disabled priority
Lange et al. Symcall: Symbiotic virtualization through vmm-to-guest upcalls
Bai et al. Task-aware based co-scheduling for virtual machine system
Müller et al. MULTI SLOTH: An efficient multi-core RTOS using hardware-based scheduling
Chen et al. Asymmetric virtual machine replication for low latency and high available service
Benbachir et al. Hypertracing: Tracing through virtualization layers
Miller High Velocity Operating Systems Development
Miller et al. Enoki: High Velocity Linux Kernel Scheduler Development
Nikolaev Design and Implementation of the VirtuOS Operating System
JPH03158936A (ja) プログラムのテスト方法
Gala et al. Resource Management Services
Stewart et al. Policy-independent real-time operating system mechanisms for timing error detection, handling and monitoring
Girme Replay Debugger For Multi Threaded Android Applications
Radder Hard Real-Time Linux for Off-The-Shelf Multicore Architectures
Müller An Efficient Hybrid Real-Time System by Hardware-Based Task Dispatching

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120207

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: 20120904

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120928

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151005

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees