JP5547373B2 - 単一プロセッサまたはマルチプロセッサ・コンピュータ・システムにおけるマルチタスク・アプリケーションのロギングおよび再生を最適化する方法 - Google Patents

単一プロセッサまたはマルチプロセッサ・コンピュータ・システムにおけるマルチタスク・アプリケーションのロギングおよび再生を最適化する方法 Download PDF

Info

Publication number
JP5547373B2
JP5547373B2 JP2007551685A JP2007551685A JP5547373B2 JP 5547373 B2 JP5547373 B2 JP 5547373B2 JP 2007551685 A JP2007551685 A JP 2007551685A JP 2007551685 A JP2007551685 A JP 2007551685A JP 5547373 B2 JP5547373 B2 JP 5547373B2
Authority
JP
Japan
Prior art keywords
task
logging
access
tasks
application
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
JP2007551685A
Other languages
English (en)
Other versions
JP2008529114A (ja
JP2008529114A5 (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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2008529114A publication Critical patent/JP2008529114A/ja
Publication of JP2008529114A5 publication Critical patent/JP2008529114A5/ja
Application granted granted Critical
Publication of JP5547373B2 publication Critical patent/JP5547373B2/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/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/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging

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)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、コンピュータまたはコンピュータのネットワーク上で実行されるマルチタスク・アプリケーションにおける1つ以上のソフトウェア・タスクの実行に対する管理の方法に関し、特に、外部からのトランスペアレントな且つ非干渉型制御による管理の方法に関する。この管理には、具体的には、ロギング・データの形でこれらのタスクの実行を記録すること、ならびにロギングの間に得られた動作および結果に対応する動作および結果を提供するために、前述のロギング・データを基に上記実行を再生することが含まれる。
本発明は、さらに、システムが実行するソフトウェア・アプリケーションの機能の管理において前述のような方法を実装する該システムに関する。
管理されるアプリケーションに関して非干渉型のトランスペアレントな機能管理を実装することは非常に有益であり、特に、より高い柔軟性、または信頼性、または性能をもたせつつ、既存の多数のアプリケーションを原状のまま(「レガシー・アプリケーション」)使用することができるようにするには、有益である。
中間におけるキャプチャ、および同期ポイントまたは再起動ポイント(「チェックポイント」)におけるアプリケーションの状態の復元による非干渉型の機能管理技術は、同一出願人によって既に仏国特許出願第0407180号明細書の中で提示されている。これと相補するように、非干渉型のロギングおよび再生の技術が、同一出願人によって仏国特許出願第0500605号明細書から仏国特許出願第0500613号明細書の中で詳細に提示されている。
しかしながら、1つ以上のイベントのロギングは、ログされるアプリケーションまたはそれを実行するシステムにとっては依然としてオーバーヘッド作業に相当するので、できる限りそれを最小限に抑えることに大きな関心が寄せられている。
アプリケーションの実行を構成するイベントのうちでアプリケーションの状態に対して非決定論的動作を有するものについては、後の再生において結果を強制または再注入できるようにするために、それらのイベントの結果をロギング・データ中に保存することによってログおよび再生をしなければならない。したがって、非決定論的なものとして扱わなければならないイベントの数をできる限り低減することが有利である。
アプリケーションまたはアプリケーションを実行するシステムの外部のイベントは、例えば先に引用した出願明細書にも記載されているように、本質的に非決定論的な動作を有することが多く、概して保存しなければならない。
もし、実行の一部分からのイベントが全て決定論的であれば、再起動ポイント方式などのように、単純にアプリケーションの開始状態を保存することによってこの部分を全て効率的にログすることができる。その後、再生を行うには、例えばアプリケーションを保存されている再起動ポイント状態に復元して、これらの決定論的イベントの実行を開始する。これを称して、「区分的決定論的実行モデル(piecewise deterministic execution model)」という用語が使用される。これには、決定論的イベントのみで構成される決定論的部分のグルーピングが含まれる。このように、一般に、決定論的部分の境界線を成しているのは非決定論的イベントであり、例えば初めに外部メッセージが到着し、別の非決定論的イベントが発生して終了となる。
本発明の目的は、前述のような決定論的部分のロギングおよび再生を容易化または最適化することである。
上記に引用した文書の中には、(ヒューリスティック圧縮または予測圧縮により)記憶装置の計算コストの低減が可能となる技術を記述しているものがある。さらに、非決定論的になりえる特定のシステム・コール・ルーチンをインストルメントすることによってそれらの動作を決定論的にすることを提案している文書もある。
しかし、最も多数を占める内部イベントの中には、非決定論的となりえる動作、または非決定性の原因となりえる動作を有しているものがあり、具体的には、共有メモリ・ゾーンまたはセマフォ若しくはミューテックスなどの共有リソースにアクセスする内部イベントである。
本発明の別の目的は、ロギングまたは再生あるいはその両方において非決定論的なものとして扱わなければならないイベントの数を減らすことである。
さらに、ある種のコンピュータ・アーキテクチャ、特に物理的にまたは実際に並列であるとみなされる並列アーキテクチャ・システムにおいては、その性質に固有の非決定論的な要因をかかえていることがある。
一般に、上述の並列環境は、既存のハードウェア・エレメントからはるかに大きな計算能力を得るために設計され使用されている。たいてい、これは、これを最初から考慮して設計されている技術的アプリケーションまたは科学的アプリケーションで煩わしく複雑な計算を行う場合に適用される。
このような環境は、複数のプロセッサを、単一のコンピュータの中に組み入れることによって形成できる。このコンピュータは、このコンピュータに求められている計算作業を上記複数のプロセッサに分配するものである。ときには、数個のコンピュータがネットワークで組み合わされ、ユーザによる干渉がほとんどない状態で特定の作業負荷を分担するように管理されることもある。
これらの種々の特定のエレメント、プロセッサまたはコンピュータが、後に順序付けされる別々のタスクで同時に作業することができる場合、物理的並列性という用語が用いられる。その一方で、例えばいくつかの仮想作業ゾーンにおいて単一エレメントの作業時間を共有することでシミュレートされるような並列性もある。
マルチプロセッサまたはマルチコンピュータのいずれかを含み物理的並列処理能力を備えている既存の環境は、たいてい最大限の総合的計算能力を得られるように設計および最適化されている。このため、できる限り分断された状態で異なるエレメントが作業し、互いの間で協調することはほとんどない。
例えばコストまたはフレキシビリティの理由から、単独でまたはグループとして、大型の中央コンピュータをマイクロ・コンピュータまたはワークステーションに置き換えることが頻繁に求められている。このようなマシンは、より高い能力を求めて並列に作業するマルチプロセッサ構成を取るか、または、それ自体が外部に対して単一の並列作業環境を構成するネットワーク、すなわち外部に対する単一の応答者として動作するネットワークで並列に作業するようにグループ化されてもよい。
したがって、単純に重たい計算アプリケーションではなく、別個のまたはより多様なアプリケーション、特に、コーポレート・マネジメント・ドメイン、またはワークステーション・ネットワーク、または通信ネットワークにおいて一般的なトランザクション式のマルチタスク・アプリケーションを実行するのに、上述のような並列環境を使用することは有利となるであろう。上述のようなアプリケーションはかなり変化に富んだ構造を有することが多く、さらに、同一の環境下で共有リソースを使用するいくつかのタスクを含むことが非常に多い。
しかしながら、これらのオペレーティング・システムまたはアプリケーションは単一プロセッサ・マシン向けに設計されているため、物理的並列処理の場合のように実際に同時に実行される2つのタスク間の干渉を管理するようには設計されていないことが多い。故に、同時に実行されているいくつかのタスクが1つのデータにアクセスしなければいけないとき(「競合状態」)、あるタスクによる読み取りの結果は、この読み取りの前または後に別のタスクによる変更が加えられたか否かによって大きく異なることになるだろう。
さらに、大部分のマルチタスク・オペレーティング・システムでは、実際の並列処理において機能する環境の管理は想定されておらず、直接アクセスにおける共有リソースの管理については、なおさら想定されていない。共有アクセスのタイプの中で直接アクセスとみなすことができるのは、例えば「map」形式の命令によって初期に定義される共有メモリ・ゾーンのように、アドレッシングによってプログラム命令からアクセスすることができるものである。
いくつかのタスクがこのタイプの共有リソースに直接アクセスを介して並列にアクセスする場合、このアクセスは、一般に、システム・ソフトウェアによって管理されることはほとんどなく、「open」、「read」または「write」などのシステム・コールを用いて「pipe」または「socket」形式のメッセージをパスするリソースなど、システム・コールを必要とする他の共有リソースへのアクセスとは対照的である。したがって、並列環境において直接アクセスを介した共有リソースへのアクセスを管理するのは、たいていの場合、ほぼ全面的にアプリケーションのタスクとなる。
そこで、本発明の別の目的は、ロギングおよび再生機能の実装を容易化または最適化すること、および並列環境において、特にマルチタスク・アプリケーションに関して、非決定論的な要因を低減することである。
冗長アーキテクチャにおける機能管理に関連して、本発明の別の目的は、並列環境において実行されるマルチタスク・アプリケーションの機能の信頼性を高めることである。
前述の技術を根幹として、本発明は、少なくとも2つのアプリケーション・タスクの機能を、コンピュータ・システムにおいて順次活動化によって上述のタスクの実行を管理しているシステム・ソフトウェア内で管理することを提示する。このコンピュータ・システムは、少なくとも2つの演算ユニットにおいて同時にいくつかのアプリケーション・タスクを実行することのできる計算手段を備えた並列構造を備えている。少なくとも1つの共有リソースにアクセスするアプリケーション・タスクのために、本方法は、一方では以下のステップを含んでいる。
−第1の演算ユニットにおけるこれらタスクのうちのいずれかのタスクの第1の継続する活動期間をロギングするステップ、および
−第2の演算ユニットにおけるこれらタスクのうちのいずれかのタスクの第2の継続する活動期間をロギングするステップ、および、
−前記ターゲット・リソースへのアクセス要求に応じて、前記タスクのうちのいわゆるアクセス元タスクに対し前記ターゲット・リソースへの排他的アクセスの一連の帰属(attribution)をロギングするステップ、すなわち、前記アクセス要求の直後から前記アクセス元タスクの活動期間の残りの全期間を通して、上記タスクのうちの別のタスクによる前記ターゲット・リソースへのアクセスを全て排除するような帰属をロギングするステップ。
他方では、上記方法は、再生シリアライゼーションという順序付き構造において、演算ユニットのそれぞれにおける一連の活動期間を表すロギング・データと一連の帰属された排他的アクセスを表すロギング・データとを組み合わせることを含む。この組み合わせは、各タスク内で前記共有リソースに対する一連の活動期間の順序を保つように構成されている。
本発明によれば、再生シリアライゼーション・データを再生コンピュータ・システム内で使用して、ログされたタスクのログされた実行を再生してもよい。
さらに、本方法には、再生コンピュータ・システムにおいて、ロギングの間にログされるタスクからアクセスできるソフトウェア・リソースの全てまたは一部を仮想化することが含まれてもよい。
したがって、本発明による方法は、コンピュータ・ネットワークの少なくとも1つのノード内に実装されてもよく、コンピュータ・ネットワークの例としては、ミドルウェア形式の1つ以上の機能管理アプリケーションにより管理されるクラスタを構成するネットワークなどが挙げられる。このように、本方法は、特に命令シーケンスのロギングおよび再生によって、機能管理に関する性能および機能性の拡張または最適化を可能にする。
同様に、本発明は、本方法を実装するシステムも提示しており、このシステムは並列式であるかまたは並列システムを構成しかつネットワークで使用可能な1つ以上のコンピュータ・システムに適用される。
本発明の他の特徴および利点は、決して制限するものではない実施形態の詳細な説明および添付の図面によって明らかになるだろう。
以下に記載される技術は、例えばAMD社のAthlon系のプロセッサ、またはインテル社のPentium(登録商標)プロセッサなどPCタイプのコンピュータに採用されているタイプのプロセッサの特定の特性を用いる本発明の実施形態に相当する。例えばワークステーションで使用されているプロセッサまたは次世代プロセッサなど最近の他のプロセッサも、当然これらの全てまたは一部の特性または類似した特性を提供でき、本発明を実装するのに採用されてもよい。
図1から図2は、単一のμProXプロセッサまたは演算ユニットによって逐次的に実行される決定論的な内部イベントの別々の部分をロギングする技術を示している。
図1に示されるように、スケジューラSCHが逐次的に開始する活動期間Sch1乃至Sch3と称される部分によって、異なるタスクTAおよびTBが実行可能である。スケジューラSCHは、上記部分の交替の管理をするコンテキスト・マネージャと称されるシステム・エージェントの一部を成している。
コンピュータ・システムまたはプロセッサ内で実行される様々なタスクの中には、管理を求められるアプリケーションの一部であるものもあり、「監視される」タスクとみなされることになる。こうしたタスクは、タスク・ディスクリプタにおいて、通常は未使用のデータ・ビットの状態(1に設定)によって識別され、ここでは管理ビットMmAまたはMmBと称する(図7を参照)。監視されるタスクと他の監視されないタスクは、プロセッサ内で実行される一連の活動期間の中で交互になってもよい。
図2において文字「m」で記されている監視されるタスクTAおよびTBについては、これらが決定論的イベントのみで構成されるように活動期間が選択されている。これらの決定論的期間は、1つ以上のロギング・ソフトウェア・エージェントによって定義される。このロギング・エージェントは、コンピュータ・システムのユーザ・メモリ空間において機能管理アプリケーションのタスクとして実行されるエレメントを備えていてもよい。このロギング・エージェントは、さらに、システム・ソフトウェアの中、例えばスケジューラの中で変更または追加されるエレメントを、備えるかまたは使用してもよい。
アプリケーションのイベントの大多数は内部イベントであるので、その多くは決定論的なものであり、そのため管理される各タスクは大部分が決定論的イベントで構成されている。非決定論的イベントが発生するたびに、ロギング・エージェントが決定論的期間を終了させる。次に、検出された非決定論的イベントが場合によっては監視されないタスクの形で実行され、既知の方法にしたがってその結果とともにログされる。この非決定論的イベントが完了すると、ロギング・エージェントは新しい決定論的部分の開始を定義し、再び命令のカウントを始める。
非決定論的イベントのロギング、および場合によっては処理が、決定論的活動期間の範囲外で行われ、例を挙げるとカーネル・モードKLvで実行期間K1またはK2に行われる。すなわちプロセッサの特権モードの値が0となっている期間で、対するユーザ・モードULvの値は3である。
各活動期間をロギングのときと同じように再生することができるように、本発明では、ロギングに際してこの決定論的部分の間に実行される命令のカウントを行う。したがって、後でこれらのタスクを再生RSCH(図3および図4を参照)するときは、このログされた部分を単純にロギングの際と同じ状態から開始するだけでよく、ロギングのときに同じ部分によって同じタスクのために実行された命令数と正確に一致する数に至るまで、再生命令を実行すればよい。故に、後の再生においては、決定論的イベントしか含んでいないため、決定論的部分の中で結果を強制するような介入をなんら受けることなく再生が行われる。
決定論的部分が、スケジューラの設定した複数の活動期間に渡るとき、これらの活動期間のそれぞれには、この決定論的部分の一部が含まれ、この一部は、それだけで完全な決定論的部分として処理されることが可能である。以下、決定論的活動期間のロギングのみが説明されることになるが、複数の決定論的活動期間が1つの決定論的部分の中で、互いに後に続くようになるであろうことは明らかである。
本発明によれば、決定論的活動期間の命令をカウントするのにパフォーマンス監視カウンタを用いており、これは、現在ではインテル社のPentium(登録商標)系のPentium(登録商標)2以降のものなど多数のプロセッサに既設のハードウェア機能である。このパフォーマンス監視カウンタは、イベントの継続期間にわたるまたは多数のイベントにおけるプロセッサの機能を計測するために設けられ、主にパフォーマンスを計測するために用いられており、例えば、数値の定期的なサンプリングによるアプリケーション・プロファイルの統計的な分析などに使用される。なお、プロセッサの製造者によれば、これらのパフォーマンス・カウンタは保証された精度は有しておらず、アプリケーション最適化のために相対的あるいは差分的な計測用として使用されるべきであることが明示されている。
本発明は、このパフォーマンス・カウンタPMCの特性の1つを用いることを提示しており、具体的にはリタイアと称する命令をカウントすること、すなわち、性能上の理由から特定の命令を先行して実行させることのできる様々な投機的またはキャッシュ技術とは無関係に解決されたかまたは実行命令リストを離れた命令をカウントすることを提示している。
しかしながら、このリタイアした命令のカウントはある制限的な特性を示すことが、インテル社およびAMD社の文書に記載されている。こうした特性の1つとして、このカウンタ用の読み取り命令(「RDPMC」)が、解決される命令に直接組み込まれていないことが挙げられるが、このことは、本発明に関連してこのカウンタを使用することに何ら直接的な影響を与えるものではない。
一方、他の2つの制限的な特性は、ロギングおよび再生用の命令のカウントに際して不正確さをもたらす可能性があり、考慮されるべきである。
第4の特性も不利益をもたらす可能性のあるもので、命令がカウンタ・オーバーフローを引き起こした後、このカウンタ・オーバーフローによる実行の割り込みが一定の遅れを伴って生じることである。
不正確さを招くこれらの制限は、一方では、解決する前に割り込みを掛けられると二重にカウントされてしまう可能性のある特定の複雑な命令に関連し、他方では、命令をカウントしそこなう原因となりえるハードウェア割り込みを伴う命令に関連している。この不正確さを克服するために、本発明は、補足的な確認技術を使用し、それにより活動期間の終了の的確な決定に関する疑わしさを取り除くことができる。
図1に示されるように、μProXプロセッサ内で実行される一連の決定論的活動期間であるSch1、Sch2およびSch3が、ログ・ファイルJμProXにログおよび記録される。
ログされる活動期間Sch3では、監視されるタスクTAをプロセッサが実行しており、その間にカウンタPMCの値UICXの1つ以上の読み取りRDPMCが、リタイアした命令の数NJ3を提供する。この期間Sch3の停止(Sch3終了)において、ロギング・エージェントJSCHは、タスクTAおよびそのコンテキストの状況から出力された状況データの1つ以上のアイテムを使用して、この活動期間Sch3の間に実行された命令の正確な数に関して存在するかもしれない疑わしさを取り除くために、この状態を十分に一義的に表しているデータの1つ以上のアイテムを算出する。この状況データは、この期間の終了(Sch3終了)に対応する署名SG3となる。この署名は、具体的には、この期間における最後の命令の直後の命令ポインタの正確な値IPJX3を含み、すなわちタスクTAの実行可能ファイル内における最後に実行されたプログラム命令の正確な位置を示している。この署名は、さらに、この停止(Sch3終了)時にタスクTAのコンテキストからレジスタRegJX3およびコール・スタックPileJX3に読み取られた値から算出された制御データ(「チェックサム」)も備えている。
したがって、ログされる各期間SchJ(図3)に関して、このプロセッサのログJμProXは、特に以下のものに関連する行から成る。
−この期間に実行されるタスクTJの識別表示idJ、例えばこのタスクの「PID」など。
−カウンタPMCが送信する、取り消された命令数NJの値。
−この期間の終了に関して算出された署名SGJ。
したがって、図1に示されたTAの次にTBその次にTAという一連のタスクについては、プロセッサμProXのログJμProXに次のような連続する行が含まれる。
「idA: NJ3: SG
idB: NJ2: SG
idA: NJ1: SG1」
図2に示されるように、任意のプロセッサμProX内でログされるアプリケーションAPPJのログされる一連の異なったタスクは、ロギング・エージェントJSCHによって、最初にFIFO(「先入れ先出し」)方式のロギング・キューQJμProXへと伝送される。このキューから出力されるロギング行がログ保存タスクTJμProXによって読み取られ、これによって、ローカルMEMにか、または別のノード、バックアップ・ステーション若しくは周辺機器への伝送TRANSによって、このプロセッサのログJμProXへの順序付けられた上記行の保存が開始される。このようなロギング・キューの使用は、特に、バッファ・ゾーンの役割を果たし、それによりロギング・データの流れを調整し、ログされるアプリケーションまたはこのロギングを行うアプリケーションに妨害が生じるのを回避する。
この利点が特に顕著となるのはグローバル・アーキテクチャの場合であり、そこでは、耐障害性および連続性のあるサービスを備えた機能を実現するために、ロギング・データが発生されると次々に、例えば予備のマシンなどで同一の実行を再生する別のアプリケーションに伝送される。
このカウント技術においては、命令のカウントに際してシステム・コール命令を同期ポイントとして使用すると有利になるだろう。したがって、これには、システム・コール・カウンタをインクリメントするように、システム・コール・ルーチンをインストルメントすることが含まれる。その結果、ハードウェア・カウンタPMCによる命令のカウントは少なくて済む値を対象にすることができ、それにより性能が向上することになる。
図3および図4は、再生プロセッサμProZにおけるログされた期間SchJの再生技術を示している。図3は、プロセッサにおける再生タスクTRの最新の状態TR1乃至TR4を表している。図4は、上述の再生を実施するために使用される方法のフローを図示している。実施形態または使用パラメータによっては、別個の再生プロセッサの場合と同様の原理にしたがって、例えばアプリケーション追跡型の機能管理などのためにロギングと同一のプロセッサで再生を行ってもよい。
例えば、スケジューラSCHによってスケジュールされるような活動期間での再生においては、再生エージェントRSCHを含めるように変更されてもよいが、当該タスクTJが前述のプロセッサ内にコンテキストとともに復元されると、その後このタスクは解放41されてタスクの実行が開始される。
ロギングが行われたのとは異なる再生コンピュータ・システムで復元および実行できるようにするためには、タスクまたはアプリケーションにとってアクセス可能なリソースの全てまたは一部を仮想化、すなわち例えば仮想的にインスタンス化または再生成することによって、再生されるアプリケーションからはロギングの際と同様に見えるようにしなければならない。通常関連するアイテムとしては、スレッドTIPまたはプロセスPIDに関するタスク識別子のほか、アプリケーションからアクセスできかつホスト・システムに依存する大部分のリソースなどがある。この仮想化は、再生されるタスクまたはアプリケーションの開始時に実施され、再生の間には、ロギングと同様に変化するように、ロギング中に保存されたデータに基づいて修正が加えられる。
この仮想化はカーネル・モードで行われると有利であり、それによって、特に、パフォーマンス・カウンタPMCが命令カウントを行う際に、この仮想化の操作を考慮しなくても済むようにできる。
インテル社の文書では、ハードウェア割り込みを原因とするエラーは、プラスマイナス1命令の相対誤差に限られると明示している。ログされた決定論的期間に、多くて1つのハードウェア割り込みが含まれる場合、すなわちその終了の原因となる割り込みが多くても1つである場合、それを監視するには、カウンタPMCの2つの値を考慮する必要がある。つまり、再生期間の開始時の値、および監視ポイントにおける値である。相対誤差の上限は、したがって、プラスマイナス2命令となる。
ログされたタスクTJの再生を行う再生タスクTRの実行中、再生エージェントRSCHは、再生を実行しているプロセッサμProZのカウンタPMCをRDPMC命令で読み取り、この読み取りをログされたこのタスクに対応するロギング・データIdJ、NJ、SGJと対比させることによって、リタイアされた命令数を監視する。この監視は、この再生実行における順序値がNJ−2である命令に達したらすぐに再生タスクTRの実行に割り込みをかけるように構成されている。この割り込みを行うには、例えば、希望の値でカウンタPMCがオーバーフローするようにプログラミングする。
既に示した第4の制限的特性のためにオーバーフローと割り込みの間に待ち時間ができるが、これは、ある程度のマージンを持たせてオーバーフロー41(図4)をプログラミングすることで補償することができ、それにより確実に希望の値NJ−2よりも前に割り込みを引き起こせるようになる。このマージンは実験によって決定してもよいし、例えば50命令程度にしてもよい。
したがって、再生期間SchRの最初の実行は、命令数がNJ−50からNJ−2の間のときに割り込みをかけられる。次に、再生エージェントRSCHが、署名SGJに保存された命令ポインタの値IPJに対応するプログラム命令BKIに応じて、再生タスクTRの実行可能ファイル内に実行ブレークポイントBKを設定42する。次に、実行は再開され、このブレークポイントBKによって割り込み43がかけられるまで継続する。このとき同時に、再生された命令の数がログされた命令の数マイナス2命令以上、すなわちNR≧NJ−2になるまで、カウンタPMCの示す命令数を検査44する。
ログされた期間SchJの実際の終了の正確な位置は、故に、順序値がそれぞれNJ−1乃至NJ+2である4つの連続する単位命令の実行Instr0乃至Inst3に置かれる、すなわち、この同じ期間SchJの想定された終了の位置NJを基準にしてマイナス2からプラス2の間の相対的位置に置かれる。
次に、確認段階40(図4)は、連続する単位命令の実行Instr1乃至Instr4の後で、署名SGJと、再生タスクTRの状態TR1乃至TR4から同様のやり方で算出される値SG1乃至SG4(図3)とを比較することにより、この実際の位置を決定する。
この確認段階の開始時に、再生エージェントは、先立つ監視の引き起こした割り込みの直後における再生タスクTRの状態に応じて算出された再生署名SGRの値SG0を照合45する。
本発明によれば、もし署名SGJとSG0とが一致しなかったら、ここでタスクTRの実行は再開され、このブレークポイント命令BKIがまた新たに実行TR2されると停止46する。
しかしながら、例えば、ログされたタスクTJが、停止の前にこのブレークポイント命令BKIを何度か実行することによって非常に短いループを実行していると、この新しい停止位置TR2に関して疑わしさの残る場合もある。このブレークポイント命令BKIによる実行の各ブレークTR2、TR4において、再生エージェントは、署名SGJとSGRとの一致を再度検証47し、この一致が得られるまで実行を再開する。署名が一致したとき(この例においてはSGJ=SG4)、それはブレークポイント命令BKIの最後の実行Instr4が、ログされた期間SchJでログされた最後のオペレーションと一致したことを意味する。再生エージェントは、このとき、再生期間SchRを終了48させる。
本発明は、さらにセキュリティ・メカニズムも想定している。エラー発生時の無限ループを避けるために、例えば検査49で再生TRに割り込みをかけ、特定数の命令実行の後で、例えば単位命令の実行を8回したあとなどに、再生エラーを返す401。
ログされた複数の期間の再生をするには、例えばログされたアプリケーションAPPJに対応する再生アプリケーションAPPR(図5)の再生の場合、再生エージェントRSCHは、ログJμProXの別々の行を連続的に読み取り、そのそれぞれを使用して該当する行に対応する活動期間を再生する。
図5に示すように、このログJμProXのそれぞれの行は、再生プロセッサμProZにおいて実行されるログ読み取りタスクTRμProZによって、直接受け取りTRANSされるか、またはローカルに読み取りMEMされる。
このログJμProXの全ての行はそれぞれログされた期間に対応しており、その後FIFO形式の再生キューQJμProZへ、ログされた順番の通りに伝送される。このキューの出力において、再生エージェントRSCHはこれらの各ログ行を使用して、それぞれの行が示す期間を、ログされたタスクTA、TBおよびTCに対応する再生タスクTA’、TB’およびTC’によって再生させる。
再生プロセッサμProZにおいてこれらの期間のスケジューリングを実施するのに、再生エージェントRSCHは、意味的変化を加えることなくスケジューラSCHの機能を標準のシステム・ソフトウェアにあるままで使用している。このことにより、特に、同じプロセッサにおいて実行される他のTNM’タスクとの互換性が保たれるようになる。スケジューラSCHの通常の機能を妨害することなくロギングの際と同じスケジューリングを得るために、再生エージェントRSCHは、各再生タスクTB’、TC’の識別子TIDまたはPIDがそのとき再生すべき行に保存されている識別子idAに一致しない限りは、再生タスクTB’、TC’の解放を阻止(55B、55C)することで対処している。
上記に引用した出願明細書に記載されているように、決定論的期間をロギングおよび再生するためのこれらの技術を用いて、1つ以上の単一プロセッサ・コンピュータにおける機能管理アプリケーションの性能および機能を最適化することができる。
マルチプロセッサ・コンピュータまたは並列に作業する多数のコンピュータを備えるネットワークなど並列アーキテクチャの場合には、複数のタスクからアクセス可能な共有リソースを使用することによって非決定論的な原因が加わり、このことから、機能管理に関連して深刻な性能の低下の原因となりかねず、何らかの重要かつ有用な機能の実装が不可能になってしまう原因にもなりかねない。
これら非決定論的な原因の全てまたは一部を排除するために、本発明は共有リソース、特に直接アクセス・リソースへのアクセスを管理または制御できる方法を提示し、それにより各タスクが、システムによって活動化されている期間を通して共有リソースへの排他的なアクセスを得られるようにする。
図6に示す並列マルチプロセッサ環境の機能の一例においては、例えばLinux(登録商標)系システムのように、第1のプロセッサμProXおよび第2のプロセッサμProYがマルチプロセッサ環境に備えられている。これらの2つのプロセッサは、単一の作業メモリ空間RAM内でそれぞれTAおよびTBのタスクを並列に実行し、スケジューラによって協調させられている。それぞれのタスクTAおよびTBの活動期間中、プログラムEXEA、EXEBからの命令のシーケンスSchA、SchBが、プロセッサμProX、μProYの中で実行されることになる。このシーケンスからの命令InstrA、InstrBを実行中、プロセッサは、レジスタRegA、RegBおよびスタックPileA、PileBなどの内部のリソースを使用することができる。
作業メモリRAMの中には、例えば「map」形式の命令などによって、いくつかの共有メモリ・ゾーンShMPi乃至ShMPkが定義されており、別々のタスクTAおよびTBから物理アドレスで直接アクセス可能となっている。
図6は、先行技術に基づく状況を示しており、そこではタスクTAおよびTBは共通する期間にわたって並列に実行され、単一の共有メモリ・ゾーンShMPiへのアクセスを要求する命令InstrAおよびInstrBをそれぞれ備えている。これらの2つのアクセス要求は、各プロセッサのメモリ・マネージャ・ユニットMMUによって別々に処理され(11、13)、互いに無関係にこの共有メモリ・ゾーンに到達する(12、14)だろう。
システム・コール型式の特定の命令からのみアクセス可能なリソースに関しては、これらの命令を実行するシステム・ルーチンをインストルメントすること、すなわち、これらのルーチンを変更するか、またはこれらのシステム・コールを傍受またはこれらに反応するエレメントをシステムに挿入することができる。ロギングおよび再生による機能管理に関連しては、このインストルメンテーションにより、特に、動作を記録することが可能となって、それを後で完全に同じように再生することができるか、あるいはこの動作が決定論的となって記録する必要がなくなるように動作を変更することができる。
その一方で、システム・コールを用いず直接アクセスが可能な、ひいてはどのようなプログラム命令からもおそらく直接アクセスが可能なリソースの場合、大部分のオペレーティング・システム、特にUnix(登録商標)またはLinux(登録商標)系のものは、この共有メモリ・ゾーンShMPiのレベルでアクセスの到着を制御することはできない。
この問題を解決するために、図7および図8に示すように、本発明は、特定のシステム・ソフトウェア・エレメントのコードを変更するか、または他の特定のエレメントを追加し、それにより既存のハードウェア機能のうち現在他の機能に使用されているものを変更または拡張することを提示している。
具体的には、Unix(登録商標)またはLinux(登録商標)系のシステム・ソフトウェアにおいてごく少数のエレメントを変更することにより、現在のプロセッサのハードウェア特性を変更することなく、この問題を解決することが可能である。したがって、既存のシステム・ソフトウェアにほんのわずかな変更をもたらし、それにより上位互換性を危うくすることなく機能性を追加すること、一般的な種類であり故に経済的でありかつ保証付きのマシンを使用して少し変更されたまたは変更されていないマルチタスク・アプリケーションを実行および管理することが可能である。
本発明は、このことを、例えばインテル社のPentium(登録商標)プロセッサ、またはAMD社のAthlonなどPC型式のアーキテクチャに使用されているプロセッサを始め、最近の多数のマイクロ・プロセッサに既設の特定のメカニズムに用いている。これらのプロセッサは、特にPentium(登録商標)2以降、メモリ管理ユニット内に仮想メモリ管理メカニズムを組み込んでいる。このメカニズムを使うと、作業メモリ内で定義されている特定のページが未使用時にハード・ディスク上に「アンロード」され、それをハード・ディスクに保存することによって、物理メモリ内の相当する空間が空く。現在稼働中のアプリケーションに関しては、これらのページはまだ作業メモリ内に載せられてはいるものの、タスクが実際にそのページにアクセスできるようにするためには、それらは再度ハード・ディスクから物理メモリに「ロード」されなければならない。
この仮想メモリを管理するために、図8に示すように、システム・ソフトウェアは仮想メモリ・マネージャVMMを備えており、これは、様々な各アプリケーション・プロセスの中で仮想化可能なメモリの各ページ用にページ・テーブル・エントリ(「P.T.E.」)を作成する。したがって、プロセスの形で各々が実行されるすなわち固有の実行コンテキストを伴って実行される2つのタスクTAおよびTBに関しては、ShMPi乃至ShMPkの各ページが、それぞれページ・テーブル・エントリPTEiA乃至PTEkAをタスクTAのプロセスで受け取り、同様にページ・テーブル・エントリPTEiB乃至PTEkBをタスクTBのプロセスで受け取る。
仮想メモリ・マネージャVMMは、ページ・ローダ・ソフトウェアPLを備え、これは、ハード・ディスク上の「スワップ」ファイル、例えばマイクロソフト社のWindows (登録商標)システムにおいては拡張子「.swp」を伴うファイルに、メモリ・ページをロードおよびアンロードする。ShMPiページのロードおよびアンロードそれぞれの作業の間、物理メモリにおけるそのページの存在の有無の状況については、VMMマネージャが、対応するページ・テーブル・エントリPTEiAおよびPTEiBそれぞれの中に保存および管理する(30)。この存在の有無の状況は、これらのテーブルPTEiAおよびPTEiBの中に、それぞれデータ・ビットPriAおよびPriBの形で保存され、存在していれば値は1、不在であれば値は0となる。
各プロセッサμProXおよびμProYにおいて、メモリ・マネージャMMUXまたはMMUYはページ・フォルト割り込みメカニズムPFIntXまたはPFIntYを備え、実行されるプログラム命令InstrAまたはInstrBから届くあらゆるアクセス要求はここを通るようになっている。もしプロセッサμProXによって実行されるタスクTAからの命令InstrAがメモリ・ページShMPiに関するアクセスを要求したら(33)、プロセッサの割り込みメカニズムPFIntXが、対応するテーブル・エントリPTEiAにある存在ビットPriAの値を読み取ることによって、このページが物理メモリRAMに存在するかどうかを検証する。
もしこのビットPriAがこのページの存在することを示していたら、割り込みメカニズムPFIntXはアクセスを許可する。逆の場合は、この割り込みメカニズムPFIntXは、タスクTAの実行に割り込みをかけ、エラーのパラメータをシステム・ソフトウェアの仮想メモリ・マネージャVMMに備わった「ページ・フォルト・ハンドラ」ソフトウェア・エージェントPFHに伝送する。次に、このフォルト・ハンドラPFHが実行され、システム・ソフトウェアにおいてアプリケーションに関し、このエラーの結果の管理を行う。
図7は、本発明にしたがって共用リソースに対するアクセスを管理するためには、既存のメカニズムをどのように修正し、適用または転用するのかを図示している。
図7に示すような並列環境において実行されるアプリケーションAPPからのアクセスを管理するために、例えば、Unix(登録商標)またはLinux(登録商標)系のシステムにおいて、ランチャ・ソフトウェアLCHを使用してこのアプリケーションの実行を開始する。開始に際して、アプリケーションAPPはプロセスの形をとる第1のタスクTAと共に作成され、このプロセスは実行「スレッド」ThrA1を備え、タスク・ディスクリプタTDAを形成するデータ・テーブルを用いている。
ランチャは、管理ビットMmAと称される通常は未使用のデータ・ビットの状態を1に修正することによって、このタスクTAが管理されるまたは「監視される」必要があるという情報をこのタスク・ディスクリプタTDAの中に保存21する。
作業メモリ内の異なる共有メモリ・ゾーンは、ここでは共有メモリ・ページShMPi、ShMPjおよびShMPkとするが、タスクTAの中でページ・メモリ構造PMStrAを形成するデータ・テーブルに載せられている。この構造PMStrAにおいて、共有ページはページ・テーブル・エントリのPTEiA1乃至PTEkA1の形で記載および更新され、そのそれぞれが、先に説明したように、仮想メモリ・マネージャVMMによって使用されるデータ・ビットPriA1乃至PrKA1を内蔵している。通常、このページ構造PMStrAはタスクTAと同時に作成され、共有メモリに何らかの変更があればそれに従い、これらの変更を確実にする様々なシステム・ルーチン、例えば「map」型式のルーチンによって、更新される(20)。
管理されるアプリケーションAPPの実行中、「create」型式の命令CREによって、この第1のタスクTAから、または同様の方法で作成されたその他のタスクから、別のタスクが作成されてもよい。新規に作成された任意のタスクTBにも、スレッドThrB1およびタスク・ディスクリプタTDBが、ページ・メモリ構造PMStrBとともに備わっている。親タスクからの継承関係INHを通じて、新しいページ・メモリ構造PMStrBも、存在ビットPriB1乃至PrkB1を有する別々のページ・テーブル・エントリPTEiB1乃至PTEkB1を備え、これらは同様の方法で最新の状態に保たれている。
監視されているタスクTAからの新しいタスクTBの作成CREに当たり、新規のタスク・ディスクリプタTDBには管理ビットMmBも備わり、その値は親タスクの管理ビットMmAの値を継承INHしたものである。
管理されるアプリケーションAPPの実行の間に、当初は単一スレッドThrB1を有するプロセスの形で機能していたタスクTBの中に、他のスレッドが作成されてもよい。
既存の監視されているタスクTBの中に、「clone」命令などのシステム・コールによって任意の新しいスレッドThrB2が作成される。通常、マルチスレッド・プロセスの形をとるタスクは、そのページ構造PMStrBの中に、テーブル・エントリPTEiB1乃至PTEkB1を1セットだけ備える。本発明によれば、「clone」システム・コールなど新しいスレッドを作成することのできる任意のシステム・ルーチンの機能は、例えば補足的な部分CSUPをその中に組み入れることなどによって変更される。この変更が目的としているのは、既存のタスクTBの中での新しいスレッドThrB2の作成の全てに、既存のセットであるテーブルPTEiB1乃至PTEkB1の読み取り(22)、および新しいセットのページ・テーブル・エントリPTEiB2乃至PTEkB2の作成(23)を含ませ、これらを同様に共有ページShMPi乃至ShMPkに対応させ、新しいスレッドThrB2に特化して機能させることである。この修正は、例えば、同一出願人による仏国特許第2820221号明細書に記載されているように、システム内の共有ライブラリのロードを通じて動的な干渉の技術を用いることによって、これらのルーチンCLONEをインストルメントすることなどにより行われてもよい。
この作成においては、親テーブルPTEiB1乃至PTEkB1と同様の方法で、新しいテーブルPTEiB2乃至PTEkB2についても確実に最新の状態を維持する(24、25)ようになっている。これは、この更新を管理しているシステム・ルーチンMAPの中にテーブルを登録して更新するか、あるいは補足的な部分MSUPを組み入れることなどによってこれらのシステム・ルーチンMAPをインストルメントするかのいずれかによって維持される。
図8は、一例として2つのプロセッサ、μProXおよびμProYにおいて並列に実行される2つの単一スレッド型タスクTAおよびTBを含むものに上記構造を適用したアクセス管理の機能を示す。なお、各タスク内に複製される各スレッドThrB2にもページ・テーブル・エントリPTEの構造を拡張して適用させることにより、スレッドが単一スレッド、マルチスレッドのいずれであっても、監視されているタスクに属する全てのスレッドからの各種アクセスを同様の方法で管理できるようになる。
本明細書に記載された実施形態においては、本発明によるアクセス管理は、活動期間を通して一貫性(または整合性)がシステム・ソフトウェアによって保証されている共有メモリ・ページ群への排他的アクセスを、該期間全体を通じて各タスクに、つまり、各スレッドThrB1またはThrB2にもプロセスTAまたはTBにも、保証するように構成されている。このような期間は、本明細書ではシステム・ソフトウェアのスケジューラSCHによって割り当ておよび管理が行われる活動期間として記載されている。同様の趣旨で、別のタイプの一貫性ある期間が選択されてもよいことは明らかである。
同様に、アクセスが管理または制御される共有リソースについて、本明細書では、特定のメモリ・ゾーンまたはメモリ・ページとして定義される共有メモリの形で記載している。他の種類のリソースでも、それに対応するシステム・ルーチンを同様にインストルメントすれば、同じコンセプトを適用することもできる。
本発明の実施においては、システム・ソフトウェアの一部のエレメントを変更し、それらが以下に記載するような機能をもつようにしてもよい。必要とされる変更の程度は、システム・ソフトウェアの種類またはバージョンに応じて確実に異なってくるだろう。Linux(登録商標)系システムの場合、これらの修正には、通常、先に記載したように「clone」および「map」型式のルーチンをインストルメントすること、ならびにスケジューラSCH、ページ・フォルト・ハンドラPFHおよびページ・ローダPLを形成しているエージェントにおいて変更およびコードの追加をすることが含まれる。本明細書に記載されたタイプのアクセス制御を形成するためにはシステムの機能性を変更するが、有利なことに、標準システムの機能性と比較して純然たる拡張として行うことができ、すなわち、機能性を除外することもなく、または少なくとも標準システム・バージョン用に開発されたアプリケーションの上位互換性を危うくすることもない。
さらに、プロセッサにおける仮想メモリ管理を想定されているハードウェア・メカニズムを使用するとはいえ、上述のアクセス制御のために必ずしもこの仮想メモリを非活動化しなくてもよく、両立可能である。例えば、仮想ページShMPiが既に別のタスクTAによって使用されている場合に、このページの物理メモリRAMへのロードが、監視されているタスクTBによってこのページの存在ビットPriBへ反映されないように、ページ・ローダPLをインストルメントまたは変更してもよい。
図8に示すように、活動期間の1つであるSchAの開始に際して、タスクTAはスケジューラSCHによって時点SCHALにおいて解放される。スケジューラSCHは、このタスクを解放する前にタスクTAの管理ビットMmAを検査して(31)、アクセス制御を適用すべきかどうかを確定する。アクセス制御が必要な場合、スケジューラSCHは、次にこのアクセス制御に関わる全ての共有ページに対応するページ・テーブル・エントリPTEiA乃至PTEkAの全存在ビットPriA乃至PrkAを0に設定し(32)、それにより、このタスクTAを実行することのできる全プロセッサμProX用の割り込みメカニズムPFIntXにおいて、このタスクTAによるあらゆるアクセス要求が初期設定によってページ・エラーをもたらすようにする。
プロセッサμProXにおけるこの活動期間SchAの間に、命令InstrAが、共有メモリ・ページShMPiへのアクセスを要求する(33)。対応する存在ビットPriAが0になっているので、プロセッサμProXの割り込みメカニズムPFIntXはこのアクセス要求の実行を停止し、システム・ソフトウェアのページ・フォルト・ハンドラPFHをコールし、同時にそれに対して問題のページおよびタスクの識別表示を伝送する。
このエラーの処理に際し、ページ・フォルト・ハンドラPFHの補足的機能PFHSUPは、そのとき、システム・ソフトウェアの仮想メモリ・マネージャVMM内部にカーネル・メモリ構造KMStrエージェントを形成するデータ・テーブルにおいて、検査もしくは変更またはその両方をおこなう。
通常、このカーネル・メモリ構造KMStrは、メモリ・リソースの構造およびその展開を表しているデータを、全作業環境に関してまたは全作業メモリに関して一意の方法で保存する。本発明によれば、このカーネル・メモリ構造KMStrは、アクセス・ビットKSi、KSjおよびKSkと称する1セットのデータ・ビットをさらに備え、これは当該の共有ページShMPi乃至ShMPkのそれぞれに関して、現在このページへのアクセスがタスクに対して認められている(ビットは1)か、または認められていない(ビットは0)かという情報を提示する。
ページ・フォルト・ハンドラPFHがプロセッサμProXから伝送されたエラーを処理するとき、問題のページShMPiに対応するアクセス・ビットKSiを参照(34)する。もしこのアクセス・ビットが現在のアクセスを何も示していなかったら、このアクセス・ビットKSiを修正して(34)このページへのアクセスを許可したことを保存し、さらに、要求元タスクTAに対応する存在ビットPriAを修正し(35)(ビットは1に変更)、現在このタスクTAが問題のページShMPPiへの排他的なアクセス権を有しているという情報を保存する。
なお、カーネル・メモリ構造KMStrのアクセス・ビットKSiのこれらの検査および変更オペレーションは、アトミックな方法で実施されるオペレーション34となっており、すなわち、マルチプロセッサ環境下であっても、全面的に実施されるか、または全く実施されないかのどちらかとなる。
ページ・フォルト・ハンドラPFHは、要求されたページShMPiに対する排他性を付与したらすぐに、このページの内容に実際にアクセスするよう命令InstrAの実行を再開する。
その後、別のプロセッサμ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に特化した一連のページ・テーブル・エントリPTEiB2が存在しているため、既に排他的アクセスを割り当てられているページへのアクセスを要求したこのスレッドのみを停止し、排他性に抵触しないであろう別のスレッドThrB1については停止しないでおくことができる。
各タスクの活動期間SchAの完了SCHASに際しては、スケジューラがこのタスクの実行を停止し、実行コンテキストをバックアップする。
この停止SCHASに際して、または既に割り当てられたページへの要求に対する停止(39)に際して、本発明は、さらに、このタスクが排他的アクセス権を受けている全ての共有メモリ・ページに関する解放段階も想定している。したがって、スケジューラSCHは、管理ビットMmAを通じて停止中のタスクTAが監視されていることを感知(301)したら、このタスクの全ページ・テーブル・エントリPTEiA乃至PTEkAに目を通し、個別の存在ビットPriA乃至PrkAの状態を参照することによって、どのページに対する排他的アクセス権を有しているのかを確定させる。次に、この情報に基づいて、カーネル・メモリ構造KMStrの中のアクセス・ビットKSiを0に再設定することで、これらのページShMPiを全て解放する。
他の例示されていない変形例においては、例えば単一のタスク・ディスクリプタの中にいくつかの管理ビットを想定することなどにより、管理または監視のコンセプトをいくつかの種類の管理に分離させることも可能である。このため、特定のカテゴリのタスクに関して排他的アクセスの利益を享受できるようにタスクを監視することもできる。同様に、タスクは、特定のカテゴリのタスクについてのみ除外されるようにしてもよい。
このように、既に割り当てが行われているページへのアクセスを求める全てのタスクを停止することによって、ここで停止された他のタスクの実行の一貫性を阻害することなく、最初に要求を行ったタスクがこのページの排他性を獲得することができる。
2つのタスクに共有されている単一のメモリ・ゾーンについてのあらゆる変更が同時に実行されるのを回避することによって、このメモリ・ゾーンの内容の変更の際2つのタスク間に何らかの干渉が生じるのを回避する。つまり、このメモリ・ゾーンの所定の初期状態以降、すなわちそこにアクセスするタスクの各活動期間の開始時以降のメモリ・ゾーンの内容の変化は、この活動期間におけるこのタスクの動作のみに依存することになる。したがって、例えばスケジュールされた活動期間などこのタスクによって実行されるある特定の命令のシーケンスが既知の初期状態から開始すれば、それにより決定論的でこのタスクに関して反復可能なシーケンスの実行が可能となる。
特に、アクセスされるメモリ・ゾーンにおける排他性の割り当てを保存するのにアトミックなオペレーションを使用しているため、この方法によって、競争的にアクセスを求める複数のタスク間で共有されている単一リソースのデッドロックの危険を回避または低減することが可能になる。
これらのアクセス制御技術(図7乃至図8)を上述の決定論的期間のロギング技術(図1から図5)、ならびに上記に引用した明細書に記載のチェックポインティング、ロギングおよび再生の技術を組み合わせることによって、本発明は、さらに、先に記載した様々な形式の機能管理を並列アーキテクチャ・システムにおいて実施することを提示している。
故に、図9では、本発明によるマルチプロセッサ・システムMP1上におけるマルチタスク・アプリケーションのロギングAPPJ、および単一プロセッサ・システムUP2において必要に応じて行われる再生を図示している。
ログされたアプリケーションAPPJに関し、ロギング・エージェントJSCHは、各プロセッサμProXまたはμProYのために、監視されている別々のタスクTA、TBおよびTCの一連の全ての活動期間をログする。上述のように、ロギング・エージェントJSCHはそれらをそれぞれキューQJμProXおよびQJμProYとして別々に伝送する。なお、タスクが或るプロセッサで1回実行され、さらに別のプロセッサで1回実行された場合は、このタスクの活動期間は2つのキューに現れることになる。
ログされたアプリケーションAPPJによってアクセスされる共有リソースShMPi乃至ShMPkについて、ロギング・エージェントJVMMは、各々のリソースに関してリソース上に割り当てられた一連の排他的アクセスを表すロギング・データを記録する。この排他的アクセスのロギング・データは、仮想メモリ・マネージャVMMにおいて、別々のタスクに割り当てる排他的アクセスとともにページ・フォルト・ハンドラPFHによって作成される。
このアクセス・ロギング・データの各記録は、具体的には次のものを含む。
−共有メモリ・ゾーンのアドレスなど当該共有リソースの一意の識別子。
−このアクセスを取得したタスクの識別子(PIDまたはTIP)。
−本明細書に記載のカウンティング技術などを通じて取得したこの排他的アクセスの継続期間。
−先に記載の署名のように、このカウンティングの不正確さを補償することのできる補足的なデータ。
−システム・リソースおよび様々な外部または入出力イベントの仮想化などに役立つ補足的なデータ。
このロギング・データは、FIFO形式のロギング・キューQJShMPiへと伝送される。
実施形態によっては、これらのキューQJμProX、QJμProY、QJShMPiの内容を1つ以上のログ・ファイルに保存して、例えば後から使用することなどができる。
これらのキューの中から、各種ロギング・データが、コンピュータ通信ネットワークなどの通信手段を用いて再生システムUP2へと伝送される。
各ロギング・キューQJμProX、QJμProY、QJμMPiからのデータは、発行元の各キューに対応する再生キューQRμProX、QRμProY、QRShMPiによってそれぞれ受け取られる。
これらの再生キューの出力に際し、ログされた別個のプロセッサμProXおよびμProYのロギング・データはアクセス・ロギング・データにしたがって組み合わされ、それにより、ログされた活動期間の総合的なシリアライゼーションおよび割り当てられた(連続的な)排他的アクセスが復元されるようになる。
再生システムの内部では、この再生シリアライゼーションまたは再生スケジューリングの定義後に、再生プロセッサにおいて再生の実行が開始される。
なお、再生シリアライゼーションのスケジューリングを中断させない方法でタスクがプロセッサに分配されている以上、再生におけるパフォーマンスは別だが、再生プロセッサの数は重要視しなくてもよい。
なお、本明細書に記載された各種メカニズムでは、ソフトウェアの部分をハードウェアの部分から切り離したやり方で使用している。したがってハードウェアに対して十分な独立性が得られ、それにより特に実装の簡潔性および信頼性が高まり、さらに、プロセッサまたはコンピュータと想定される様々な計算エレメントの並列性をアーキテクチャが最良の状態で管理できるようになるため、優れた性能が保たれる。
さらに、本発明はほとんどの場合純粋にソフトウェアによって実施されるものであるため、標準的なハードウェアをそれが備えているであろう全ての利点と一緒に使用することができる。
本発明は、特に、単一の計算エレメントに関して共有された時間において機能するマルチタスク・アプリケーション用に開発された機能管理技術を、並列環境に拡張することを可能にしている。このように、本発明は、前述の並列環境をネットワークまたはクラスタと一体化させることができ、そこでは、この機能管理がミドルウェア・タイプのアプリケーションに実装され、それにより例えば「オンデマンド」のサービスを提供する分散型アプリケーションまたは可変展開型のアプリケーションを管理する。
当然ながら、本発明は、記載してきた例に制限されるものではなく、本発明の枠組みから離れることなく多数の修正を加えることが可能である。
本発明による、プロセッサにおけるタスクの実行のスケジューリングの、タスクのカウントによるロギングを示す図である。 本発明による、プロセッサにおけるタスクの実行のスケジューリングの、タスクのカウントによるロギングを示す図である。 本発明による、プロセッサにおける命令のカウントによるタスクの活動期間の再生を示す図である。 本発明による、プロセッサにおける命令のカウントによるタスクの活動期間の再生を示す図である。 本発明による、命令のカウントによってプロセッサにおけるタスク・スケジューリングのロギングから得られた、単一プロセッサにおけるマルチタスク・アプリケーションの決定論的な再生を示す図である。 先行技術による、単一の環境からの2つの異なるプロセッサにより並列に実行される2つのタスク間で共有されるメモリへのアクセス機能を示す図である。 本発明による、単一環境からのいくつかの異なるプロセッサ上で並列に実行される多数のタスク間で共有されるメモリ・ページへのアクセスの制御を可能とする構造を、タスクにおいて構築および維持することを示す図である。 本発明による、単一環境からの2つの異なるプロセッサ上で並列に実行される2つのタスクによって共有されるメモリ・ページへのアクセスを制御する機能を示す図である。 本発明による、マルチプロセッサ・コンピュータ上のマルチタスク・アプリケーションのロギング、および状況に応じて行われる単一プロセッサ・マシン上での再生を示す図である。

Claims (2)

  1. 少なくとも2つのアプリケーション・タスク(TA、TB)の機能を管理する方法であって、前記方法は、少なくとも2つの演算ユニット(μProX、μProY)において複数のアプリケーション・タスクを同時に実行することのできる複数の計算手段を備えた並列構造のコンピュータ・システムにおいて前記少なくとも2つのアプリケーション・タスク(TA、TB)の実行を順次活動化によって管理するシステム・ソフトウェア内に実装され、前記少なくとも2つのアプリケーション・タスク(TA、TB)は少なくとも1つの共有リソース(ShMPi)にアクセスし、
    前記方法は、
    第1の演算ユニット(μProX)における前記TAの第1の継続する活動期間をロギングするステップと、
    第2の演算ユニット(μProY)における前記TBの第2の継続する活動期間をロギングするステップと、
    前記少なくとも1つの共有リソースへのアクセス要求(InstrA)に応じて、前記TA及び前記TBのうちのアクセス元アプリケーション・タスクに対して前記少なくとも1つの共有リソースのうちのターゲット・リソース(ShMPi)への排他的アクセスの一連の帰属をロギングするステップであって、前記排他的アクセスの一連の帰属をロギングすることが、前記アクセス要求の直後から前記アクセス元タスクの活動期間(SchA)の残りの全期間を通して、前記タスクのうちの別のタスクによる前記ターゲット・リソース(ShMPi)へのアクセスを全て排除するような帰属をロギングすることである、前記ロギングするステップ
    を含み、
    前記排他的アクセスの一連の帰属をロギングするステップが、
    前記ターゲット・リソース(ShMPi)の一意の識別子と、
    アクセスを取得したアプリケーション・タスクに関連付けられた識別子と、
    前記ターゲット・リソース(ShMPi)へのアクセスを取得したアプリケーション・タスクによる排他的アクセスの継続期間と
    を記録するステップと、
    FIFOキューへ前記記録されたロギング・データをロギングされた順番の通りに伝送するステップであって、当該伝送により各アプリケーション・タスク内で前記ターゲット・リソース(ShMPi)に対する一連の活動期間の順序を保つ、前記伝送するステップと
    を含む、
    前記方法。
  2. 請求項1記載の方法を実行するコンピュータ・システム。
JP2007551685A 2005-01-24 2006-01-24 単一プロセッサまたはマルチプロセッサ・コンピュータ・システムにおけるマルチタスク・アプリケーションのロギングおよび再生を最適化する方法 Expired - Fee Related JP5547373B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0500723A FR2881241B1 (fr) 2005-01-24 2005-01-24 Procede d'optimisation de la journalisation et du rejeu d'application multi-taches dans un systeme informatique mono-processeur ou multi-processeurs
FR0500723 2005-01-24
PCT/EP2006/050404 WO2006077260A1 (en) 2005-01-24 2006-01-24 Method for optimising the logging and replay of multi-task applications in a mono-processor or multi-processor computer system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013053064A Division JP5505914B2 (ja) 2005-01-24 2013-03-15 単一プロセッサまたはマルチプロセッサ・コンピュータ・システムにおけるマルチタスク・アプリケーションのロギングおよび再生を最適化する方法

Publications (3)

Publication Number Publication Date
JP2008529114A JP2008529114A (ja) 2008-07-31
JP2008529114A5 JP2008529114A5 (ja) 2012-03-08
JP5547373B2 true JP5547373B2 (ja) 2014-07-09

Family

ID=34979840

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2007551685A Expired - Fee Related JP5547373B2 (ja) 2005-01-24 2006-01-24 単一プロセッサまたはマルチプロセッサ・コンピュータ・システムにおけるマルチタスク・アプリケーションのロギングおよび再生を最適化する方法
JP2013053064A Expired - Fee Related JP5505914B2 (ja) 2005-01-24 2013-03-15 単一プロセッサまたはマルチプロセッサ・コンピュータ・システムにおけるマルチタスク・アプリケーションのロギングおよび再生を最適化する方法

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2013053064A Expired - Fee Related JP5505914B2 (ja) 2005-01-24 2013-03-15 単一プロセッサまたはマルチプロセッサ・コンピュータ・システムにおけるマルチタスク・アプリケーションのロギングおよび再生を最適化する方法

Country Status (8)

Country Link
US (1) US20080270770A1 (ja)
EP (1) EP1842132B1 (ja)
JP (2) JP5547373B2 (ja)
CN (1) CN100530123C (ja)
AT (1) ATE409326T1 (ja)
DE (1) DE602006002874D1 (ja)
FR (1) FR2881241B1 (ja)
WO (1) WO2006077260A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510596B1 (en) * 2006-02-09 2013-08-13 Virsec Systems, Inc. System and methods for run time detection and correction of memory corruption
US8607228B2 (en) 2006-08-08 2013-12-10 Intel Corporation Virtualizing performance counters
US20080046699A1 (en) * 2006-08-21 2008-02-21 International Business Machines Corporation Method and apparatus for non-deterministic incremental program replay using checkpoints and syndrome tracking
WO2008025575A1 (en) 2006-08-28 2008-03-06 International Business Machines Corporation A method for improving transfer of event logs for replication of executing programs
CN101446909B (zh) 2007-11-30 2011-12-28 国际商业机器公司 用于管理任务事件的方法和系统
US9928072B1 (en) 2008-05-02 2018-03-27 Azul Systems, Inc. Detecting and recording atomic execution
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
US20110078666A1 (en) * 2009-05-26 2011-03-31 University Of California System and Method for Reproducing Device Program Execution
KR20110095050A (ko) * 2010-02-18 2011-08-24 삼성전자주식회사 공유 라이브러리 디버깅 장치
CN102325091B (zh) * 2011-10-17 2014-09-17 迈普通信技术股份有限公司 内存释放方法和路由系统
IN2014MU00661A (ja) 2014-02-25 2015-10-23 Tata Consultancy Services Ltd
GB2552519A (en) 2016-07-27 2018-01-31 Undo Ltd Debugging Systems
US10579502B2 (en) 2017-02-28 2020-03-03 International Business Machines Corporation Resuming applications using pass-through servers and trace data
US20230058452A1 (en) * 2021-08-17 2023-02-23 Sap Se Efficient error reproduction scenarios through data transformation

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4847754A (en) * 1985-10-15 1989-07-11 International Business Machines Corporation Extended atomic operations
JPH02126340A (ja) * 1988-11-05 1990-05-15 Fuji Xerox Co Ltd データ処理システム
JP2807026B2 (ja) * 1990-02-17 1998-09-30 日本電信電話株式会社 並列プログラムの実行再現方法
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 富士通株式会社 複合システムにおけるログファイル制御方式
JP3154942B2 (ja) * 1995-09-11 2001-04-09 株式会社東芝 分散チェックポイント生成方法および同方法が適用される計算機システム
JPH09190375A (ja) * 1996-01-09 1997-07-22 Toshiba Corp 共有メモリ管理方法
US6128710A (en) * 1997-05-28 2000-10-03 International Business Machines Corporation Method utilizing a set of blocking-symbol resource-manipulation instructions for protecting the integrity of data in noncontiguous data objects of resources in a shared memory of a multiple processor computer system
JPH11272499A (ja) * 1998-03-23 1999-10-08 Nec Corp 性能測定回路を備えた並列プロセッサシステムと、プログラムの性能測定方法
JP2001184235A (ja) * 1999-12-24 2001-07-06 Hitachi Ltd ログ情報取得解析装置
US7137120B2 (en) * 2001-12-17 2006-11-14 International Business Machines Corporation Dynamic diagnostic program for determining thread wait time
US7392421B1 (en) * 2002-03-18 2008-06-24 Symantec Operating Corporation Framework for managing clustering and replication
JP2003280980A (ja) * 2002-03-20 2003-10-03 Matsushita Electric Ind Co Ltd 共有メモリ排他制御装置及び共有メモリ排他制御方法
JP2005538460A (ja) * 2002-09-12 2005-12-15 インターナショナル・ビジネス・マシーンズ・コーポレーション データ処理システム及び方法(非同種プロセスを統合するように適合されたデータ処理システム)
US7073002B2 (en) * 2003-03-13 2006-07-04 International Business Machines Corporation Apparatus and method for controlling resource transfers using locks in a logically partitioned computer system
GB0308923D0 (en) * 2003-04-17 2003-05-28 Ibm Low-overhead storage cluster configuration locking
US7047337B2 (en) * 2003-04-24 2006-05-16 International Business Machines Corporation Concurrent access of shared resources utilizing tracking of request reception and completion order
US7496574B2 (en) * 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
DE60315291T2 (de) * 2003-08-27 2008-04-17 Sap Aktiengesellschaft Computersystem und Verfahren zum Betreiben eines Computersystems

Also Published As

Publication number Publication date
FR2881241A1 (fr) 2006-07-28
EP1842132A1 (en) 2007-10-10
DE602006002874D1 (de) 2008-11-06
JP2013118005A (ja) 2013-06-13
WO2006077260A1 (en) 2006-07-27
JP2008529114A (ja) 2008-07-31
US20080270770A1 (en) 2008-10-30
FR2881241B1 (fr) 2007-05-04
ATE409326T1 (de) 2008-10-15
CN100530123C (zh) 2009-08-19
JP5505914B2 (ja) 2014-05-28
CN101107596A (zh) 2008-01-16
EP1842132B1 (en) 2008-09-24

Similar Documents

Publication Publication Date Title
JP5547373B2 (ja) 単一プロセッサまたはマルチプロセッサ・コンピュータ・システムにおけるマルチタスク・アプリケーションのロギングおよび再生を最適化する方法
US7774647B2 (en) Method for counting instructions for logging and replay of a deterministic sequence of events
JP2008529114A5 (ja)
JP4866864B2 (ja) マルチ・プロセッサ環境において共有されるリソースへのアクセスを管理する方法およびプログラム
Govil et al. Cellular Disco: Resource management using virtual clusters on shared-memory multiprocessors
US8370841B2 (en) Optimizing deterministic event record and replay operations
JP5214105B2 (ja) 仮想マシンの監視
US8949671B2 (en) Fault detection, diagnosis, and prevention for complex computing systems
US8234645B2 (en) Deallocation of computer data in a multithreaded computer
US9317297B2 (en) Replay execution of instructions in thread chunks in the chunk order recorded during previous execution
Govil et al. Cellular disco: resource management using virtual clusters on shared-memory multiprocessors
US20020087736A1 (en) Parallel dispatch wait signaling method, method for reducing contention of highly contended dispatcher lock, and related operating systems, multiprocessor computer systems and products
Pellegrini et al. Autonomic state management for optimistic simulation platforms
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
KR20090084881A (ko) 멀티프로세서 시스템 상에서 멀티스레드 프로그램으로부터의 메모리 액세스를 관리하기 위한 방법 및 시스템
US20070124457A1 (en) Analysis of nodal affinity behavior
Garefalakis et al. Neptune: Scheduling suspendable tasks for unified stream/batch applications
US8954969B2 (en) File system object node management
US20070079020A1 (en) Dynamically migrating channels
Sustran et al. Migration in hardware transactional memory on asymmetric multiprocessor
CARATA et al. Monitoring under the Microscope

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111227

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20111227

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20111227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120105

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20120105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20111228

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120912

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120912

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121120

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20121121

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20121121

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130315

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130315

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130404

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20130404

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130501

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20140423

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20140423

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140515

R150 Certificate of patent or registration of utility model

Ref document number: 5547373

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees