JP2008529114A5 - - Google Patents
Download PDFInfo
- Publication number
- JP2008529114A5 JP2008529114A5 JP2007551685A JP2007551685A JP2008529114A5 JP 2008529114 A5 JP2008529114 A5 JP 2008529114A5 JP 2007551685 A JP2007551685 A JP 2007551685A JP 2007551685 A JP2007551685 A JP 2007551685A JP 2008529114 A5 JP2008529114 A5 JP 2008529114A5
- Authority
- JP
- Japan
- Prior art keywords
- task
- access
- logging
- 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.)
- Granted
Links
- 230000004913 activation Effects 0.000 claims description 44
- 230000004044 response Effects 0.000 claims description 4
- 230000015654 memory Effects 0.000 description 55
- 238000000034 method Methods 0.000 description 27
- 230000000875 corresponding Effects 0.000 description 16
- 230000002104 routine Effects 0.000 description 9
- NINIDFKCEFEMDL-UHFFFAOYSA-N sulfur Chemical compound [S] NINIDFKCEFEMDL-UHFFFAOYSA-N 0.000 description 9
- 241000549435 Pria Species 0.000 description 7
- 230000003936 working memory Effects 0.000 description 6
- 229920001276 Ammonium polyphosphate Polymers 0.000 description 4
- 230000006399 behavior Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000000670 limiting Effects 0.000 description 4
- 238000011068 load Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000006011 modification reaction Methods 0.000 description 4
- 230000002452 interceptive Effects 0.000 description 3
- 230000008929 regeneration Effects 0.000 description 3
- 238000011069 regeneration method Methods 0.000 description 3
- 230000000153 supplemental Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 241001106412 Pilea Species 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000000295 complement Effects 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000004059 degradation Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001627 detrimental Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000000737 periodic Effects 0.000 description 1
- 230000002093 peripheral Effects 0.000 description 1
- 230000001172 regenerating Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 230000000576 supplementary Effects 0.000 description 1
- 230000001960 triggered Effects 0.000 description 1
Description
本発明は、コンピュータまたはコンピュータのネットワーク上で実行されるマルチタスク・アプリケーションにおける1つ以上のソフトウェア・タスクの実行に対する管理の方法に関し、特に、外部からのトランスペアレントな且つ非干渉型制御による管理の方法に関する。この管理には、具体的には、ロギング・データの形でこれらのタスクの実行を記録すること、ならびにロギングの間に得られた動作および結果に対応する動作および結果を提供するために、前述のロギング・データを基に上記実行を再生することが含まれる。 The present invention relates to a method of management for execution of one or more software tasks in a multitasking application running on a computer or a network of computers, and more particularly, a method of management with external transparent and non-interfering control. About. This management specifically includes recording the execution of these tasks in the form of logging data, as well as providing actions and results corresponding to the actions and results obtained during logging. Replaying the above execution based on the logging data.
本発明は、さらに、システムが実行するソフトウェア・アプリケーションの機能の管理において前述のような方法を実装する該システムに関する。 The invention further relates to a system implementing the method as described above in managing the functions of software applications executed by the system.
管理されるアプリケーションに関して非干渉型のトランスペアレントな機能管理を実装することは非常に有益であり、特に、より高い柔軟性、または信頼性、または性能をもたせつつ、既存の多数のアプリケーションを原状のまま(「レガシー・アプリケーション」)使用することができるようにするには、有益である。 Implementing non-interfering and transparent feature management for managed applications is extremely beneficial, especially with many existing applications intact while providing greater flexibility, reliability, or performance ("Legacy application") is beneficial to be able to use it.
中間におけるキャプチャ、および同期ポイントまたは再起動ポイント(「チェックポイント」)におけるアプリケーションの状態の復元による非干渉型の機能管理技術は、同一出願人によって既に仏国特許出願第0407180号明細書の中で提示されている。これと相補するように、非干渉型のロギングおよび再生の技術が、同一出願人によって仏国特許出願第0500605号明細書から仏国特許出願第0500613号明細書の中で詳細に提示されている。 Non-interfering function management technology by intermediate capture and restoration of application state at synchronization point or restart point ("checkpoint") is already described in French patent application No. 0407180 by the same applicant. Presented. Complementary to this, non-interfering logging and playback techniques have been presented in detail in French patent application No. 0500655 to French patent application No. 0500653 by the same applicant. .
しかしながら、1つ以上のイベントのロギングは、ログされるアプリケーションまたはそれを実行するシステムにとっては依然としてオーバーヘッド作業に相当するので、できる限りそれを最小限に抑えることに大きな関心が寄せられている。 However, the logging of one or more events still represents an overhead task for the logged application or the system that runs it, so there is great interest in minimizing it as much as possible.
アプリケーションの実行を構成するイベントのうちでアプリケーションの状態に対して非決定論的動作を有するものについては、後の再生において結果を強制または再注入できるようにするために、それらのイベントの結果をロギング・データ中に保存することによってログおよび再生をしなければならない。したがって、非決定論的なものとして扱わなければならないイベントの数をできる限り低減することが有利である。 For events that make up the execution of an application that have non-deterministic behavior on the state of the application, log the results of those events so that the results can be forced or re-injected in a later playback • Log and replay by saving in data. Therefore, it is advantageous to reduce as much as possible the number of events that must be treated as non-deterministic.
アプリケーションまたはアプリケーションを実行するシステムの外部のイベントは、例えば先に引用した出願明細書にも記載されているように、本質的に非決定論的な動作を有することが多く、概して保存しなければならない。 Events external to the application or the system executing the application often have inherently non-deterministic behavior, for example as described in the above-cited application specification and generally must be preserved .
もし、実行の一部分からのイベントが全て決定論的であれば、再起動ポイント方式などのように、単純にアプリケーションの開始状態を保存することによってこの部分を全て効率的にログすることができる。その後、再生を行うには、例えばアプリケーションを保存されている再起動ポイント状態に復元して、これらの決定論的イベントの実行を開始する。これを称して、「区分的決定論的実行モデル(piecewise deterministic execution model)」という用語が使用される。これには、決定論的イベントのみで構成される決定論的部分のグルーピングが含まれる。このように、一般に、決定論的部分の境界線を成しているのは非決定論的イベントであり、例えば初めに外部メッセージが到着し、別の非決定論的イベントが発生して終了となる。 If all the events from a part of execution are all deterministic, all this part can be efficiently logged by simply saving the application start state, such as the restart point method. Thereafter, to perform playback, for example, the application is restored to the saved restart point state and execution of these deterministic events begins. To that end, the term “piecewise deterministic execution model” is used. This includes a grouping of deterministic parts consisting only of deterministic events. Thus, in general, it is non-deterministic events that delimit the deterministic part, for example, an external message arrives first and another non-deterministic event occurs and ends.
本発明の目的は、前述のような決定論的部分のロギングおよび再生を容易化または最適化することである。 The object of the present invention is to facilitate or optimize the logging and playback of deterministic parts as described above.
上記に引用した文書の中には、(ヒューリスティック圧縮または予測圧縮により)記憶装置の計算コストの低減が可能となる技術を記述しているものがある。さらに、非決定論的になりえる特定のシステム・コール・ルーチンをインストルメントすることによってそれらの動作を決定論的にすることを提案している文書もある。 Some of the documents cited above describe techniques that can reduce the computational cost of a storage device (by heuristic compression or predictive compression). In addition, some documents have suggested making their behavior deterministic by instrumenting certain system call routines that can be non-deterministic.
しかし、最も多数を占める内部イベントの中には、非決定論的となりえる動作、または非決定性の原因となりえる動作を有しているものがあり、具体的には、共有メモリ・ゾーンまたはセマフォ若しくはミューテックスなどの共有リソースにアクセスする内部イベントである。 However, some of the most common internal events have actions that can be non-deterministic or can cause non-determinism, specifically shared memory zones or semaphores or mutexes. An internal event that accesses a shared resource such as
本発明の別の目的は、ロギングまたは再生あるいはその両方において非決定論的なものとして扱わなければならないイベントの数を減らすことである。 Another object of the present invention is to reduce the number of events that must be treated as non-deterministic in logging and / or playback.
さらに、ある種のコンピュータ・アーキテクチャ、特に物理的にまたは実際に並列であるとみなされる並列アーキテクチャ・システムにおいては、その性質に固有の非決定論的な要因をかかえていることがある。 In addition, certain computer architectures, particularly parallel architecture systems that are considered physically or actually parallel, may have non-deterministic factors inherent in their nature.
一般に、上述の並列環境は、既存のハードウェア・エレメントからはるかに大きな計算能力を得るために設計され使用されている。たいてい、これは、これを最初から考慮して設計されている技術的アプリケーションまたは科学的アプリケーションで煩わしく複雑な計算を行う場合に適用される。 In general, the parallel environment described above is designed and used to obtain much greater computing power from existing hardware elements. This is often the case when performing cumbersome and complex calculations in technical or scientific applications that are designed from the start.
このような環境は、複数のプロセッサを、単一のコンピュータの中に組み入れることによって形成できる。このコンピュータは、このコンピュータに求められている計算作業を上記複数のプロセッサに分配するものである。ときには、数個のコンピュータがネットワークで組み合わされ、ユーザによる干渉がほとんどない状態で特定の作業負荷を分担するように管理されることもある。 Such an environment can be formed by incorporating multiple processors into a single computer. This computer distributes the calculation work required for this computer to the plurality of processors. Sometimes, several computers are combined in a network and managed to share a specific workload with little interference from the user.
これらの種々の特定のエレメント、プロセッサまたはコンピュータが、後に順序付けされる別々のタスクで同時に作業することができる場合、物理的並列性という用語が用いられる。その一方で、例えばいくつかの仮想作業ゾーンにおいて単一エレメントの作業時間を共有することでシミュレートされるような並列性もある。 The term physical parallelism is used when these various specific elements, processors or computers can work simultaneously in separate tasks that are later ordered. On the other hand, there is parallelism as simulated, for example, by sharing the work time of a single element in several virtual work zones.
マルチプロセッサまたはマルチコンピュータのいずれかを含み物理的並列処理能力を備えている既存の環境は、たいてい最大限の総合的計算能力を得られるように設計および最適化されている。このため、できる限り分断された状態で異なるエレメントが作業し、互いの間で協調することはほとんどない。 Existing environments that include either multiprocessors or multicomputers and have physical parallel processing capabilities are often designed and optimized for maximum overall computational power. For this reason, different elements work in a state of being separated as much as possible, and rarely cooperate with each other.
例えばコストまたはフレキシビリティの理由から、単独でまたはグループとして、大型の中央コンピュータをマイクロ・コンピュータまたはワークステーションに置き換えることが頻繁に求められている。このようなマシンは、より高い能力を求めて並列に作業するマルチプロセッサ構成を取るか、または、それ自体が外部に対して単一の並列作業環境を構成するネットワーク、すなわち外部に対する単一の応答者として動作するネットワークで並列に作業するようにグループ化されてもよい。 For example, for cost or flexibility reasons, it is frequently required to replace a large central computer with a microcomputer or workstation, either alone or as a group. Such machines take a multiprocessor configuration that works in parallel for higher capacity, or a network that itself constitutes a single parallel work environment to the outside, ie a single response to the outside They may be grouped to work in parallel on a network operating as a person.
したがって、単純に重たい計算アプリケーションではなく、別個のまたはより多様なアプリケーション、特に、コーポレート・マネジメント・ドメイン、またはワークステーション・ネットワーク、または通信ネットワークにおいて一般的なトランザクション式のマルチタスク・アプリケーションを実行するのに、上述のような並列環境を使用することは有利となるであろう。上述のようなアプリケーションはかなり変化に富んだ構造を有することが多く、さらに、同一の環境下で共有リソースを使用するいくつかのタスクを含むことが非常に多い。 Therefore, it is not simply a heavy computational application, but it does run separate or more diverse applications, especially transactional multitasking applications that are common in corporate management domains, workstation networks, or communications networks. In addition, it may be advantageous to use a parallel environment as described above. Applications such as those described above often have a fairly varied structure, and very often involve several tasks that use shared resources in the same environment.
しかしながら、これらのオペレーティング・システムまたはアプリケーションは単一プロセッサ・マシン向けに設計されているため、物理的並列処理の場合のように実際に同時に実行される2つのタスク間の干渉を管理するようには設計されていないことが多い。故に、同時に実行されているいくつかのタスクが1つのデータにアクセスしなければいけないとき(「競合状態」)、あるタスクによる読み取りの結果は、この読み取りの前または後に別のタスクによる変更が加えられたか否かによって大きく異なることになるだろう。 However, because these operating systems or applications are designed for single processor machines, it is important to manage the interference between two tasks that are actually executed at the same time as in the case of physical parallel processing. Often not designed. Therefore, when several tasks running at the same time have to access one data ("race condition"), the result of a read by one task can be changed by another task before or after this read. It will vary greatly depending on whether or not it has been done.
さらに、大部分のマルチタスク・オペレーティング・システムでは、実際の並列処理において機能する環境の管理は想定されておらず、直接アクセスにおける共有リソースの管理については、なおさら想定されていない。共有アクセスのタイプの中で直接アクセスとみなすことができるのは、例えば「map」形式の命令によって初期に定義される共有メモリ・ゾーンのように、アドレッシングによってプログラム命令からアクセスすることができるものである。 Furthermore, most multitasking operating systems are not supposed to manage an environment that functions in actual parallel processing, and even more so not to manage shared resources in direct access. Some types of shared access that can be considered direct access are those that can be accessed from program instructions by addressing, such as shared memory zones that are initially defined by "map" style instructions. .
いくつかのタスクがこのタイプの共有リソースに直接アクセスを介して並列にアクセスする場合、このアクセスは、一般に、システム・ソフトウェアによって管理されることはほとんどなく、「open」、「read」または「write」などのシステム・コールを用いて「pipe」または「socket」形式のメッセージをパスするリソースなど、システム・コールを必要とする他の共有リソースへのアクセスとは対照的である。したがって、並列環境において直接アクセスを介した共有リソースへのアクセスを管理するのは、たいていの場合、ほぼ全面的にアプリケーションのタスクとなる。 If several tasks access this type of shared resource in parallel via direct access, this access is generally rarely managed by system software and is “open”, “read” or “write”. In contrast to accessing other shared resources that require a system call, such as a resource that passes a “pipe” or “socket” type message using a system call such as Therefore, managing access to shared resources via direct access in a parallel environment is almost always an application task.
そこで、本発明の別の目的は、ロギングおよび再生機能の実装を容易化または最適化すること、および並列環境において、特にマルチタスク・アプリケーションに関して、非決定論的な要因を低減することである。 Thus, another object of the present invention is to facilitate or optimize the implementation of logging and playback functions and to reduce non-deterministic factors in a parallel environment, especially for multitasking applications.
冗長アーキテクチャにおける機能管理に関連して、本発明の別の目的は、並列環境において実行されるマルチタスク・アプリケーションの機能の信頼性を高めることである。 In connection with function management in a redundant architecture, another object of the present invention is to increase the reliability of functions of multitasking applications running in a parallel environment.
前述の技術を根幹として、本発明は、少なくとも2つのアプリケーション・タスクの機能を、コンピュータ・システムにおいて順次活動化によって上述のタスクの実行を管理しているシステム・ソフトウェア内で管理することを提示する。このコンピュータ・システムは、少なくとも2つの演算ユニットにおいて同時にいくつかのアプリケーション・タスクを実行することのできる計算手段を備えた並列構造を備えている。少なくとも1つの共有リソースにアクセスするアプリケーション・タスクのために、本方法は、一方では以下のステップを含んでいる。
−第1の演算ユニットにおけるこれらタスクのうちのいずれかのタスクの第1の継続する活動化期間をロギングするステップ、および
−第2の演算ユニットにおけるこれらタスクのうちのいずれかのタスクの第2の継続する活動化期間をロギングするステップ、および、
−前記ターゲット・リソースへのアクセス要求に応じて、前記タスクのうちのいわゆるアクセス元タスクに対し前記ターゲット・リソースへの排他的アクセスの一連の帰属(attribution)をロギングするステップ、すなわち、前記アクセス要求の直後から前記アクセス元タスクの活動化期間の残りの全期間を通して、上記タスクのうちの別のタスクによる前記ターゲット・リソースへのアクセスを全て排除するような帰属をロギングするステップ。
Based on the foregoing techniques, the present invention presents managing the function of at least two application tasks in system software that manages the execution of the above tasks by sequential activation in a computer system. . The computer system has a parallel structure with computing means capable of performing several application tasks simultaneously in at least two computing units. For application tasks that access at least one shared resource, the method on the one hand includes the following steps:
Logging a first continuing activation period of any of these tasks in the first computing unit; and a second of any of these tasks in the second computing unit and the step, logging the activation period to continue the,
Logging a series of attribution of exclusive access to the target resource to a so-called source task of the tasks in response to an access request to the target resource, ie the access request Logging an attribution that eliminates all access to the target resource by another of the above tasks from immediately after, throughout the remainder of the activation period of the accessing task.
他方では、上記方法は、再生シリアライゼーションという順序付き構造において、演算ユニットのそれぞれにおける一連の活動化期間を表すロギング・データと一連の帰属された排他的アクセスを表すロギング・データとを組み合わせることを含む。この組み合わせは、各タスク内で前記共有リソースに対する一連の活動化期間の順序を保つように構成されている。 On the other hand, the method comprises combining logging data representing a series of activation periods in each of the arithmetic units and logging data representing a series of assigned exclusive accesses in an ordered structure of replay serialization. . This combination is configured to maintain a sequence of activation periods for the shared resource within each task.
本発明によれば、再生シリアライゼーション・データを再生コンピュータ・システム内で使用して、ログされたタスクのログされた実行を再生してもよい。 In accordance with the present invention, replay serialization data may be used in a replay computer system to replay logged executions of logged tasks.
さらに、本方法には、再生コンピュータ・システムにおいて、ロギングの間にログされるタスクからアクセスできるソフトウェア・リソースの全てまたは一部を仮想化することが含まれてもよい。 Further, the method may include virtualizing all or part of the software resources that can be accessed from tasks logged during logging in the playback computer system.
したがって、本発明による方法は、コンピュータ・ネットワークの少なくとも1つのノード内に実装されてもよく、コンピュータ・ネットワークの例としては、ミドルウェア形式の1つ以上の機能管理アプリケーションにより管理されるクラスタを構成するネットワークなどが挙げられる。このように、本方法は、特に命令シーケンスのロギングおよび再生によって、機能管理に関する性能および機能性の拡張または最適化を可能にする。 Thus, the method according to the invention may be implemented in at least one node of a computer network, an example of a computer network comprising a cluster managed by one or more function management applications in the form of middleware. Network etc. are mentioned. Thus, the method allows for the expansion or optimization of performance and functionality related to function management, particularly by logging and replaying instruction sequences.
同様に、本発明は、本方法を実装するシステムも提示しており、このシステムは並列式であるかまたは並列システムを構成しかつネットワークで使用可能な1つ以上のコンピュータ・システムに適用される。 Similarly, the present invention also presents a system that implements the method, which system is parallel or constitutes a parallel system and applies to one or more computer systems that can be used in a network. .
本発明の他の特徴および利点は、決して制限するものではない実施形態の詳細な説明および添付の図面によって明らかになるだろう。 Other features and advantages of the present invention will become apparent from the detailed description of the embodiments and the accompanying drawings, which are not intended to be limiting in any way.
以下に記載される技術は、例えばAMD社のAthlon系のプロセッサ、またはインテル社のPentium(登録商標)(登録商標)プロセッサなどPCタイプのコンピュータに採用されているタイプのプロセッサの特定の特性を用いる本発明の実施形態に相当する。例えばワークステーションで使用されているプロセッサまたは次世代プロセッサなど最近の他のプロセッサも、当然これらの全てまたは一部の特性または類似した特性を提供でき、本発明を実装するのに採用されてもよい。 Techniques described below, for example, a particular characteristic of AMD's Athlon system processor or Intel Pentium (registered trademark) (registered trademark) processor of the type employed in PC type of computer such as a processor, This corresponds to an embodiment of the present invention. Other recent processors, such as those used in workstations or next generation processors, for example, can of course provide all or some of these characteristics or similar characteristics and may be employed to implement the present invention. .
図1から図2は、単一のμProXプロセッサまたは演算ユニットによって逐次的に実行される決定論的な内部イベントの別々の部分をロギングする技術を示している。 FIGS. 1-2 illustrate techniques for logging separate portions of deterministic internal events that are performed sequentially by a single μProX processor or computing unit.
図1に示されるように、スケジューラSCHが逐次的に開始する活動化期間Sch1乃至Sch3と称される部分によって、異なるタスクTAおよびTBが実行可能である。スケジューラSCHは、上記部分の交替の管理をするコンテキスト・マネージャと称されるシステム・エージェントの一部を成している。 As shown in FIG. 1, different tasks TA and TB can be executed by the parts called activation periods Sch1 to Sch3 that are sequentially started by the scheduler SCH. The scheduler SCH forms part of a system agent called a context manager that manages the replacement of the above part.
コンピュータ・システムまたはプロセッサ内で実行される様々なタスクの中には、管理を求められるアプリケーションの一部であるものもあり、「監視される」タスクとみなされることになる。こうしたタスクは、タスク・ディスクリプタにおいて、通常は未使用のデータ・ビットの状態(1に設定)によって識別され、ここでは管理ビットMmAまたはMmBと称する(図7を参照)。監視されるタスクと他の監視されないタスクは、プロセッサ内で実行される一連の活動化期間の中で交互になってもよい。 Some of the various tasks performed within a computer system or processor are part of an application that needs to be managed and will be considered "monitored" tasks. Such a task is typically identified in the task descriptor by the state of unused data bits (set to 1), referred to herein as management bits MmA or MmB (see FIG. 7). Monitored tasks and other unmonitored tasks may alternate in a series of activation periods executed within the processor.
図2において文字「m」で記されている監視されるタスクTAおよびTBについては、これらが決定論的イベントのみで構成されるように活動化期間が選択されている。これらの決定論的期間は、1つ以上のロギング・ソフトウェア・エージェントによって定義される。このロギング・エージェントは、コンピュータ・システムのユーザ・メモリ空間において機能管理アプリケーションのタスクとして実行されるエレメントを備えていてもよい。このロギング・エージェントは、さらに、システム・ソフトウェアの中、例えばスケジューラの中で変更または追加されるエレメントを、備えるかまたは使用してもよい。 For the monitored tasks TA and TB, which are marked with the letter “m” in FIG. 2, the activation period has been selected so that they consist only of deterministic events. These deterministic periods are defined by one or more logging software agents. The logging agent may comprise an element that is executed as a function management application task in the user memory space of the computer system. The logging agent may further comprise or use elements that are changed or added in the system software, eg in the scheduler.
アプリケーションのイベントの大多数は内部イベントであるので、その多くは決定論的なものであり、そのため管理される各タスクは大部分が決定論的イベントで構成されている。非決定論的イベントが発生するたびに、ロギング・エージェントが決定論的期間を終了させる。次に、検出された非決定論的イベントが場合によっては監視されないタスクの形で実行され、既知の方法にしたがってその結果とともにログされる。この非決定論的イベントが完了すると、ロギング・エージェントは新しい決定論的部分の開始を定義し、再び命令のカウントを始める。 Since the majority of application events are internal events, many are deterministic, so each task managed is largely composed of deterministic events. Each time a non-deterministic event occurs, the logging agent terminates the deterministic period. The detected non-deterministic event is then executed in the form of a possibly unmonitored task and logged with its results according to known methods. When this non-deterministic event is complete, the logging agent defines the start of a new deterministic part and starts counting instructions again.
非決定論的イベントのロギング、および場合によっては処理が、決定論的活動化期間の範囲外で行われ、例を挙げるとカーネル・モードKLvで実行期間K1またはK2に行われる。すなわちプロセッサの特権モードの値が0となっている期間で、対するユーザ・モードULvの値は3である。 Non-deterministic event logging, and possibly processing, occurs outside of the deterministic activation period, for example in kernel mode KLv during execution period K1 or K2. That is, the value of the user mode ULv is 3 during the period when the value of the privilege mode of the processor is 0.
各活動化期間をロギングのときと同じように再生することができるように、本発明では、ロギングに際してこの決定論的部分の間に実行される命令のカウントを行う。したがって、後でこれらのタスクを再生RSCH(図3および図4を参照)するときは、このログされた部分を単純にロギングの際と同じ状態から開始するだけでよく、ロギングのときに同じ部分によって同じタスクのために実行された命令数と正確に一致する数に至るまで、再生命令を実行すればよい。故に、後の再生においては、決定論的イベントしか含んでいないため、決定論的部分の中で結果を強制するような介入をなんら受けることなく再生が行われる。 In order to be able to reproduce each activation period in the same way as during logging, the present invention counts the instructions executed during this deterministic part during logging. Therefore, when replaying these tasks later (see FIGS. 3 and 4), this logged part can simply be started from the same state as during logging, and the same part during logging. Thus, the reproduction instructions may be executed until the number exactly matches the number of instructions executed for the same task. Therefore, the subsequent regeneration includes only a deterministic event, so that the regeneration is performed without any intervention that forces the result in the deterministic part.
決定論的部分が、スケジューラの設定した複数の活動化期間に渡るとき、これらの活動化期間のそれぞれには、この決定論的部分の一部が含まれ、この一部は、それだけで完全な決定論的部分として処理されることが可能である。以下、決定論的活動化期間のロギングのみが説明されることになるが、複数の決定論的活動化期間が1つの決定論的部分の中で、互いに後に続くようになるであろうことは明らかである。 When the deterministic part spans multiple activation periods set by the scheduler, each of these activation periods includes a part of this deterministic part, which is a complete part by itself. It can be treated as a deterministic part. In the following, only logging of deterministic activation periods will be described, but it will be understood that multiple deterministic activation periods will follow each other in one deterministic part. it is obvious.
本発明によれば、決定論的活動化期間の命令をカウントするのにパフォーマンス監視カウンタを用いており、これは、現在ではインテル社のPentium(登録商標)系のPentium(登録商標)2以降のものなど多数のプロセッサに既設のハードウェア機能である。このパフォーマンス監視カウンタは、イベントの継続期間にわたるまたは多数のイベントにおけるプロセッサの機能を計測するために設けられ、主にパフォーマンスを計測するために用いられており、例えば、数値の定期的なサンプリングによるアプリケーション・プロファイルの統計的な分析などに使用される。なお、プロセッサの製造者によれば、これらのパフォーマンス・カウンタは保証された精度は有しておらず、アプリケーション最適化のために相対的あるいは差分的な計測用として使用されるべきであることが明示されている。 In accordance with the present invention, a performance monitoring counter is used to count instructions during the deterministic activation period, which is currently based on Intel's Pentium® family of Pentium® 2 and later. It is an existing hardware function in many processors such as those. This performance monitoring counter is provided to measure the processor capabilities over the duration of an event or in a large number of events, and is mainly used to measure performance, for example by application of periodic sampling of numbers. -Used for statistical analysis of profiles. According to processor manufacturers, these performance counters do not have guaranteed accuracy and should be used for relative or differential measurements for application optimization. It is specified.
本発明は、このパフォーマンス・カウンタPMCの特性の1つを用いることを提示しており、具体的にはリタイアと称する命令をカウントすること、すなわち、性能上の理由から特定の命令を先行して実行させることのできる様々な投機的またはキャッシュ技術とは無関係に解決されたかまたは実行命令リストを離れた命令をカウントすることを提示している。 The present invention proposes to use one of the characteristics of this performance counter PMC, specifically counting instructions called retire, i.e. preceding certain instructions for performance reasons. It presents counting instructions that have been resolved or left the execution instruction list independently of the various speculative or caching techniques that can be executed.
しかしながら、このリタイアした命令のカウントはある制限的な特性を示すことが、インテル社およびAMD社の文書に記載されている。こうした特性の1つとして、このカウンタ用の読み取り命令(「RDPMC」)が、解決される命令に直接組み込まれていないことが挙げられるが、このことは、本発明に関連してこのカウンタを使用することに何ら直接的な影響を与えるものではない。 However, it is stated in the Intel and AMD documents that this retired instruction count exhibits certain limiting properties. One such characteristic is that the read instruction for this counter (“RDPMC”) is not directly incorporated into the resolved instruction, which uses this counter in connection with the present invention. There is no direct impact on what you do.
一方、他の2つの制限的な特性は、ロギングおよび再生用の命令のカウントに際して不正確さをもたらす可能性があり、考慮されるべきである。 On the other hand, the other two limiting characteristics can lead to inaccuracies in counting logging and playback instructions and should be considered.
第4の特性も不利益をもたらす可能性のあるもので、命令がカウンタ・オーバーフローを引き起こした後、このカウンタ・オーバーフローによる実行の割り込みが一定の遅れを伴って生じることである。 The fourth characteristic can also be detrimental, in that after an instruction causes a counter overflow, an interrupt of execution due to this counter overflow occurs with a certain delay.
不正確さを招くこれらの制限は、一方では、解決する前に割り込みを掛けられると二重にカウントされてしまう可能性のある特定の複雑な命令に関連し、他方では、命令をカウントしそこなう原因となりえるハードウェア割り込みを伴う命令に関連している。この不正確さを克服するために、本発明は、補足的な確認技術を使用し、それにより活動化期間の終了の的確な決定に関する疑わしさを取り除くことができる。 These limitations that lead to inaccuracies are on the one hand related to certain complex instructions that, if interrupted before being resolved, can be double counted, and on the other hand they are responsible for failing to count instructions. Related to instructions with possible hardware interrupts. In order to overcome this inaccuracy, the present invention can use supplemental verification techniques, thereby removing the suspicion regarding the accurate determination of the end of the activation period.
図1に示されるように、μProXプロセッサ内で実行される一連の決定論的活動化期間であるSch1、Sch2およびSch3が、ログ・ファイルJμProXにログおよび記録される。 As shown in FIG. 1, a series of deterministic activation periods, Sch1, Sch2 and Sch3, executed in the μProX processor are logged and recorded in the log file JμProX.
ログされる活動化期間Sch3では、監視されるタスクTAをプロセッサが実行しており、その間にカウンタPMCの値UICXの1つ以上の読み取りRDPMCが、リタイアした命令の数NJ3を提供する。この期間Sch3の停止(Sch3終了)において、ロギング・エージェントJSCHは、タスクTAおよびそのコンテキストの状況から出力された状況データの1つ以上のアイテムを使用して、この活動化期間Sch3の間に実行された命令の正確な数に関して存在するかもしれない疑わしさを取り除くために、この状態を十分に一義的に表しているデータの1つ以上のアイテムを算出する。この状況データは、この期間の終了(Sch3終了)に対応する署名SG3となる。この署名は、具体的には、この期間における最後の命令の直後の命令ポインタの正確な値IPJX3を含み、すなわちタスクTAの実行可能ファイル内における最後に実行されたプログラム命令の正確な位置を示している。この署名は、さらに、この停止(Sch3終了)時にタスクTAのコンテキストからレジスタRegJX3およびコール・スタックPileJX3に読み取られた値から算出された制御データ(「チェックサム」)も備えている。 In the logged activation period Sch3, the processor is executing the monitored task TA, during which one or more reads RDPMC of the value PMICX of the counter PMC provide the number of retired instructions NJ3. In this period Sch3 stop (Sch3 end), the logging agent JSCH runs during this activation period Sch3 using one or more items of status data output from the status of the task TA and its context. In order to remove suspicion that may exist with respect to the exact number of instructions given, one or more items of data representing this state sufficiently unambiguously are calculated. This status data is the signature SG3 corresponding to the end of this period (Sch3 end). This signature specifically includes the exact value IPJX3 of the instruction pointer immediately after the last instruction in this period, ie, indicates the exact location of the last executed program instruction in the executable file of task TA. ing. The signature further includes control data (“checksum”) calculated from values read into the register RegJX3 and the call stack PileJX3 from the context of the task TA at the time of the stop (end of Sch3).
したがって、ログされる各期間SchJ(図3)に関して、このプロセッサのログJμProXは、特に以下のものに関連する行から成る。
−この期間に実行されるタスクTJの識別表示idJ、例えばこのタスクの「PID」など。
−カウンタPMCが送信する、取り消された命令数NJの値。
−この期間の終了に関して算出された署名SGJ。
Thus, for each logged period SchJ (FIG. 3), this processor's log JμProX consists of rows relating specifically to:
-An identification display idJ of the task TJ executed during this period, for example, "PID" of this task.
The value of the number of canceled instructions NJ sent by the counter PMC.
The signature SGJ calculated for the end of this period.
したがって、図1に示されたTAの次にTBその次にTAという一連のタスクについては、プロセッサμProXのログJμProXに次のような連続する行が含まれる。
「idA: NJ3: SG3
idB: NJ2: SG2
idA: NJ1: SG1」
Accordingly, for a series of tasks of TA, TB, and TA shown in FIG. 1, the log JμProX of the processor μProX includes the following consecutive lines.
“IdA: NJ3: SG3
idB: NJ2: SG2
idA: NJ1: SG1 "
図2に示されるように、任意のプロセッサμProX内でログされるアプリケーションAPPJのログされる一連の異なったタスクは、ロギング・エージェントJSCHによって、最初にFIFO(「先入れ先出し」)方式のロギング・キューQJμProXへと伝送される。このキューから出力されるロギング行がログ保存タスクTJμProXによって読み取られ、これによって、ローカルMEMにか、または別のノード、バックアップ・ステーション若しくは周辺機器への伝送TRANSによって、このプロセッサのログJμProXへの順序付けられた上記行の保存が開始される。このようなロギング・キューの使用は、特に、バッファ・ゾーンの役割を果たし、それによりロギング・データの流れを調整し、ログされるアプリケーションまたはこのロギングを行うアプリケーションに妨害が生じるのを回避する。 As shown in FIG. 2, a series of different tasks logged by the application APPJ logged in any processor μProX is first performed by the logging agent JSCH by the FIFO (“first in first out”) style logging queue QJμProX. Is transmitted to. The logging line output from this queue is read by the log save task TJμProX, which orders this processor's log JμProX by local MEM or by transmission TRANS to another node, backup station or peripheral. Saving of the above line is started. The use of such a logging queue serves in particular as a buffer zone, thereby adjusting the flow of logging data and avoiding disruption to the logged application or the application that performs this logging.
この利点が特に顕著となるのはグローバル・アーキテクチャの場合であり、そこでは、耐障害性および連続性のあるサービスを備えた機能を実現するために、ロギング・データが発生されると次々に、例えば予備のマシンなどで同一の実行を再生する別のアプリケーションに伝送される。 This advantage is particularly noticeable in the case of global architectures, where logging data is generated one after another in order to achieve functionality with fault-tolerant and continuous service, For example, it is transmitted to another application that reproduces the same execution on a spare machine or the like.
このカウント技術においては、命令のカウントに際してシステム・コール命令を同期ポイントとして使用すると有利になるだろう。したがって、これには、システム・コール・カウンタをインクリメントするように、システム・コール・ルーチンをインストルメントすることが含まれる。その結果、ハードウェア・カウンタPMCによる命令のカウントは少なくて済む値を対象にすることができ、それにより性能が向上することになる。 In this counting technique, it would be advantageous to use a system call instruction as a synchronization point when counting instructions. Thus, this includes instrumenting the system call routine to increment the system call counter. As a result, the instruction count by the hardware counter PMC can be targeted at a value that can be reduced, thereby improving performance.
図3および図4は、再生プロセッサμProZにおけるログされた期間SchJの再生技術を示している。図3は、プロセッサにおける再生タスクTRの最新の状態TR1乃至TR4を表している。図4は、上述の再生を実施するために使用される方法のフローを図示している。実施形態または使用パラメータによっては、別個の再生プロセッサの場合と同様の原理にしたがって、例えばアプリケーション追跡型の機能管理などのためにロギングと同一のプロセッサで再生を行ってもよい。 3 and 4 show the reproduction technique of the logged period SchJ in the reproduction processor μProZ. FIG. 3 shows the latest states TR1 to TR4 of the reproduction task TR in the processor. FIG. 4 illustrates the flow of the method used to implement the playback described above. Depending on the embodiment or usage parameters, playback may be performed on the same processor as logging, eg, for application tracking type function management, according to the same principles as for separate playback processors.
例えば、スケジューラSCHによってスケジュールされるような活動化期間での再生においては、再生エージェントRSCHを含めるように変更されてもよいが、当該タスクTJが前述のプロセッサ内にコンテキストとともに復元されると、その後このタスクは解放41されてタスクの実行が開始される。 For example, in the playback in the activation period as scheduled by the scheduler SCH, it may be changed to include the playback agent RSCH, but when the task TJ is restored with the context in the aforementioned processor, This task is released 41 and execution of the task is started.
ロギングが行われたのとは異なる再生コンピュータ・システムで復元および実行できるようにするためには、タスクまたはアプリケーションにとってアクセス可能なリソースの全てまたは一部を仮想化、すなわち例えば仮想的にインスタンス化または再生成することによって、再生されるアプリケーションからはロギングの際と同様に見えるようにしなければならない。通常関連するアイテムとしては、スレッドTIPまたはプロセスPIDに関するタスク識別子のほか、アプリケーションからアクセスできかつホスト・システムに依存する大部分のリソースなどがある。この仮想化は、再生されるタスクまたはアプリケーションの開始時に実施され、再生の間には、ロギングと同様に変化するように、ロギング中に保存されたデータに基づいて修正が加えられる。 In order to be able to be restored and executed on a different playback computer system from where the logging was done, all or part of the resources accessible to the task or application are virtualized, i.e. virtually instantiated or By regenerating it, it must be visible to the replayed application as it would be when logging. Items that are usually relevant include task identifiers for thread TIPs or process PIDs, as well as most resources that are accessible from applications and depend on the host system. This virtualization is performed at the start of the task or application being played, and during playback, modifications are made based on the data stored during logging so that it changes as well as logging.
この仮想化はカーネル・モードで行われると有利であり、それによって、特に、パフォーマンス・カウンタPMCが命令カウントを行う際に、この仮想化の操作を考慮しなくても済むようにできる。 This virtualization is advantageously performed in kernel mode, so that it is not necessary to consider this virtualization operation, especially when the performance counter PMC performs instruction counting.
インテル社の文書では、ハードウェア割り込みを原因とするエラーは、プラスマイナス1命令の相対誤差に限られると明示している。ログされた決定論的期間に、多くて1つのハードウェア割り込みが含まれる場合、すなわちその終了の原因となる割り込みが多くても1つである場合、それを監視するには、カウンタPMCの2つの値を考慮する必要がある。つまり、再生期間の開始時の値、および監視ポイントにおける値である。相対誤差の上限は、したがって、プラスマイナス2命令となる。 The Intel document states that errors due to hardware interrupts are limited to a relative error of plus or minus one instruction. If the logged deterministic period includes at most one hardware interrupt, i.e. at most one interrupt that causes its termination, to monitor it, counter PMC 2 One value needs to be considered. That is, the value at the start of the reproduction period and the value at the monitoring point. The upper limit of the relative error is therefore plus or minus 2 instructions.
ログされたタスクTJの再生を行う再生タスクTRの実行中、再生エージェントRSCHは、再生を実行しているプロセッサμProZのカウンタPMCをRDPMC命令で読み取り、この読み取りをログされたこのタスクに対応するロギング・データIdJ、NJ、SGJと対比させることによって、リタイアされた命令数を監視する。この監視は、この再生実行における順序値がNJ−2である命令に達したらすぐに再生タスクTRの実行に割り込みをかけるように構成されている。この割り込みを行うには、例えば、希望の値でカウンタPMCがオーバーフローするようにプログラミングする。 During the execution of the replay task TR for replaying the logged task TJ, the replay agent RSCH reads the counter PMC of the processor μProZ that is performing the replay with the RDPMC instruction, and this read is logged corresponding to this logged task. Monitor the number of retired instructions by comparing with data IdJ, NJ, SGJ. This monitoring is configured to interrupt execution of the reproduction task TR as soon as an instruction whose order value in this reproduction execution is NJ-2 is reached. To perform this interrupt, for example, programming is performed so that the counter PMC overflows at a desired value.
既に示した第4の制限的特性のためにオーバーフローと割り込みの間に待ち時間ができるが、これは、ある程度のマージンを持たせてオーバーフロー41(図4)をプログラミングすることで補償することができ、それにより確実に希望の値NJ−2よりも前に割り込みを引き起こせるようになる。このマージンは実験によって決定してもよいし、例えば50命令程度にしてもよい。 The fourth limiting characteristic already shown allows latency between overflow and interrupt, but this can be compensated by programming overflow 41 (FIG. 4) with some margin. This ensures that an interrupt can occur before the desired value NJ-2. This margin may be determined by experiment, for example, about 50 instructions.
したがって、再生期間SchRの最初の実行は、命令数がNJ−50からNJ−2の間のときに割り込みをかけられる。次に、再生エージェントRSCHが、署名SGJに保存された命令ポインタの値IPJに対応するプログラム命令BKIに応じて、再生タスクTRの実行可能ファイル内に実行ブレークポイントBKを設定42する。次に、実行は再開され、このブレークポイントBKによって割り込み43がかけられるまで継続する。このとき同時に、再生された命令の数がログされた命令の数マイナス2命令以上、すなわちNR≧NJ−2になるまで、カウンタPMCの示す命令数を検査44する。 Therefore, the first execution of the regeneration period SchR is interrupted when the number of instructions is between NJ-50 and NJ-2. Next, the reproduction agent RSCH sets 42 an execution breakpoint BK in the executable file of the reproduction task TR in accordance with the program instruction BKI corresponding to the instruction pointer value IPJ stored in the signature SGJ. Next, execution is resumed and continues until interrupt 43 is triggered by this breakpoint BK. At the same time, the number of instructions indicated by the counter PMC is checked 44 until the number of reproduced instructions is equal to or greater than the number of logged instructions minus 2 instructions, that is, NR ≧ NJ−2.
ログされた期間SchJの実際の終了の正確な位置は、故に、順序値がそれぞれNJ−1乃至NJ+2である4つの連続する単位命令の実行Instr0乃至Inst3に置かれる、すなわち、この同じ期間SchJの想定された終了の位置NJを基準にしてマイナス2からプラス2の間の相対的位置に置かれる。 The exact position of the actual end of the logged period SchJ is thus placed in the execution of four consecutive unit instructions Instr0 to Inst3 whose sequence values are NJ-1 to NJ + 2, respectively, ie, for this same period of SchJ It is placed at a relative position between minus 2 and plus 2 with respect to the assumed end position NJ.
次に、確認段階40(図4)は、連続する単位命令の実行Instr1乃至Instr4の後で、署名SGJと、再生タスクTRの状態TR1乃至TR4から同様のやり方で算出される値SG1乃至SG4(図3)とを比較することにより、この実際の位置を決定する。 Next, in the confirmation step 40 (FIG. 4), after execution of the continuous unit instructions Instr1 to Instr4, values SG1 to SG4 (similarly calculated from the signature SGJ and the states TR1 to TR4 of the playback task TR). This actual position is determined by comparing with FIG.
この確認段階の開始時に、再生エージェントは、先立つ監視の引き起こした割り込みの直後における再生タスクTRの状態に応じて算出された再生署名SGRの値SG0を照合45する。 At the start of this confirmation phase, the playback agent collates 45 the value SG0 of the playback signature SGR calculated according to the state of the playback task TR immediately after the interruption caused by the previous monitoring.
本発明によれば、もし署名SGJとSG0とが一致しなかったら、ここでタスクTRの実行は再開され、このブレークポイント命令BKIがまた新たに実行TR2されると停止46する。 According to the present invention, if the signatures SGJ and SG0 do not match, the execution of task TR is resumed here and stops 46 when this breakpoint instruction BKI is again executed TR2.
しかしながら、例えば、ログされたタスクTJが、停止の前にこのブレークポイント命令BKIを何度か実行することによって非常に短いループを実行していると、この新しい停止位置TR2に関して疑わしさの残る場合もある。このブレークポイント命令BKIによる実行の各ブレークTR2、TR4において、再生エージェントは、署名SGJとSGRとの一致を再度検証47し、この一致が得られるまで実行を再開する。署名が一致したとき(この例においてはSGJ=SG4)、それはブレークポイント命令BKIの最後の実行Instr4が、ログされた期間SchJでログされた最後のオペレーションと一致したことを意味する。再生エージェントは、このとき、再生期間SchRを終了48させる。 However, if, for example, the logged task TJ is executing a very short loop by executing this breakpoint instruction BKI several times before stopping, there remains doubt about this new stopping position TR2. There is also. In each of the breaks TR2 and TR4 executed by the breakpoint instruction BKI, the reproduction agent verifies the match between the signatures SGJ and SGR 47 again and resumes execution until this match is obtained. When the signatures match (SGJ = SG4 in this example), it means that the last execution Instr4 of the breakpoint instruction BKI matched the last operation logged in the logged period SchJ. At this time, the reproduction agent ends 48 the reproduction period SchR.
本発明は、さらにセキュリティ・メカニズムも想定している。エラー発生時の無限ループを避けるために、例えば検査49で再生TRに割り込みをかけ、特定数の命令実行の後で、例えば単位命令の実行を8回したあとなどに、再生エラーを返す401。 The present invention further envisions a security mechanism. In order to avoid an infinite loop when an error occurs, for example, the reproduction TR is interrupted in the inspection 49, and a reproduction error is returned 401 after execution of a specific number of instructions, for example, after eight executions of unit instructions.
ログされた複数の期間の再生をするには、例えばログされたアプリケーションAPPJに対応する再生アプリケーションAPPR(図5)の再生の場合、再生エージェントRSCHは、ログJμProXの別々の行を連続的に読み取り、そのそれぞれを使用して該当する行に対応する活動化期間を再生する。 In order to reproduce a plurality of logged periods, for example, in the case of reproduction of a reproduction application APPR (FIG. 5) corresponding to the logged application APPJ, the reproduction agent RSCH continuously reads different rows of the log JμProX. , Use each of them to play the activation period corresponding to the corresponding row.
図5に示すように、このログJμProXのそれぞれの行は、再生プロセッサμProZにおいて実行されるログ読み取りタスクTRμProZによって、直接受け取りTRANSされるか、またはローカルに読み取りMEMされる。 As shown in FIG. 5, each row of this log JμProX is either directly received by the log read task TRμProZ executed in the playback processor μProZ or read locally and MEM.
このログJμProXの全ての行はそれぞれログされた期間に対応しており、その後FIFO形式の再生キューQJμProZへ、ログされた順番の通りに伝送される。このキューの出力において、再生エージェントRSCHはこれらの各ログ行を使用して、それぞれの行が示す期間を、ログされたタスクTA、TBおよびTCに対応する再生タスクTA’、TB’およびTC’によって再生させる。 All the rows of this log JμProX correspond to the logged period, and are then transmitted in the logged order to the reproduction queue QJμProZ in the FIFO format. At the output of this queue, the replay agent RSCH uses each of these log lines to indicate the time period indicated by each line for the replay tasks TA ′, TB ′ and TC ′ corresponding to the logged tasks TA, TB and TC. To play.
再生プロセッサμProZにおいてこれらの期間のスケジューリングを実施するのに、再生エージェントRSCHは、意味的変化を加えることなくスケジューラSCHの機能を標準のシステム・ソフトウェアにあるままで使用している。このことにより、特に、同じプロセッサにおいて実行される他のTNM’タスクとの互換性が保たれるようになる。スケジューラSCHの通常の機能を妨害することなくロギングの際と同じスケジューリングを得るために、再生エージェントRSCHは、各再生タスクTB’、TC’の識別子TIDまたはPIDがそのとき再生すべき行に保存されている識別子idAに一致しない限りは、再生タスクTB’、TC’の解放を阻止(55B、55C)することで対処している。 To implement scheduling for these periods in the playback processor μProZ, the playback agent RSCH uses the functionality of the scheduler SCH as it is in standard system software without any semantic changes. This in particular ensures compatibility with other TNM ′ tasks running on the same processor. In order to obtain the same scheduling as during logging without disturbing the normal function of the scheduler SCH, the replay agent RSCH stores the identifier TID or PID of each replay task TB ′, TC ′ in the line to be replayed at that time. Unless the identifier idA matches, the release task TB ′, TC ′ is prevented from being released ( 55B, 55C ) .
上記に引用した出願明細書に記載されているように、決定論的期間をロギングおよび再生するためのこれらの技術を用いて、1つ以上の単一プロセッサ・コンピュータにおける機能管理アプリケーションの性能および機能を最適化することができる。 Using these techniques for logging and replaying deterministic periods as described in the above-cited application specification, the performance and functionality of function management applications on one or more single processor computers Can be optimized.
マルチプロセッサ・コンピュータまたは並列に作業する多数のコンピュータを備えるネットワークなど並列アーキテクチャの場合には、複数のタスクからアクセス可能な共有リソースを使用することによって非決定論的な原因が加わり、このことから、機能管理に関連して深刻な性能の低下の原因となりかねず、何らかの重要かつ有用な機能の実装が不可能になってしまう原因にもなりかねない。 In the case of parallel architectures, such as multiprocessor computers or networks with many computers working in parallel, non-deterministic causes are added by using shared resources that are accessible from multiple tasks. It can cause serious performance degradation in relation to management and can make it impossible to implement some important and useful functions.
これら非決定論的な原因の全てまたは一部を排除するために、本発明は共有リソース、特に直接アクセス・リソースへのアクセスを管理または制御できる方法を提示し、それにより各タスクが、システムによって活動化されている期間を通して共有リソースへの排他的なアクセスを得られるようにする。 In order to eliminate all or some of these non-deterministic causes, the present invention presents a way in which access to shared resources, especially direct access resources, can be managed or controlled so that each task is activated by the system Ensure exclusive access to shared resources throughout the specified period.
図6に示す並列マルチプロセッサ環境の機能の一例においては、例えばLinux(登録商標)系システムのように、第1のプロセッサμProXおよび第2のプロセッサμProYがマルチプロセッサ環境に備えられている。これらの2つのプロセッサは、単一の作業メモリ空間RAM内でそれぞれTAおよびTBのタスクを並列に実行し、スケジューラによって協調させられている。それぞれのタスクTAおよびTBの活動化期間中、プログラムEXEA、EXEBからの命令のシーケンスSchA、SchBが、プロセッサμProX、μProYの中で実行されることになる。このシーケンスからの命令InstrA、InstrBを実行中、プロセッサは、レジスタRegA、RegBおよびスタックPileA、PileBなどの内部のリソースを使用することができる。 In an example of the functions of the parallel multiprocessor environment shown in FIG. 6, the first processor μProX and the second processor μProY are provided in the multiprocessor environment, for example, as in the Linux ( registered trademark ) system. These two processors execute TA and TB tasks in parallel in a single working memory space RAM, and are coordinated by a scheduler. During the activation of the respective tasks TA and TB, the sequence of instructions SchA, SchB from the programs EXEA, EXEB will be executed in the processors μProX, μProY. While executing the instructions InstrA and InstrB from this sequence, the processor can use internal resources such as registers RegA and RegB and stacks PileA and PileB.
作業メモリRAMの中には、例えば「map」形式の命令などによって、いくつかの共有メモリ・ゾーンShMPi乃至ShMPkが定義されており、別々のタスクTAおよびTBから物理アドレスで直接アクセス可能となっている。 In the working memory RAM, several shared memory zones ShMPi to ShMPk are defined by, for example, “map” format instructions and can be directly accessed by physical addresses from separate tasks TA and TB. .
図6は、先行技術に基づく状況を示しており、そこではタスクTAおよびTBは共通する期間にわたって並列に実行され、単一の共有メモリ・ゾーンShMPiへのアクセスを要求する命令InstrAおよびInstrBをそれぞれ備えている。これらの2つのアクセス要求は、各プロセッサのメモリ・マネージャ・ユニットMMUによって別々に処理され(11、13)、互いに無関係にこの共有メモリ・ゾーンに到達する(12、14)だろう。 FIG. 6 shows a situation based on the prior art, where tasks TA and TB are executed in parallel over a common period of time, and instructions InstrA and InstrB requesting access to a single shared memory zone ShMPi, respectively, are shown. I have. These two access requests will be handled separately by each processor's memory manager unit MMU (11 , 13) and will reach this shared memory zone (12, 14) independently of each other.
システム・コール型式の特定の命令からのみアクセス可能なリソースに関しては、これらの命令を実行するシステム・ルーチンをインストルメントすること、すなわち、これらのルーチンを変更するか、またはこれらのシステム・コールを傍受またはこれらに反応するエレメントをシステムに挿入することができる。ロギングおよび再生による機能管理に関連しては、このインストルメンテーションにより、特に、動作を記録することが可能となって、それを後で完全に同じように再生することができるか、あるいはこの動作が決定論的となって記録する必要がなくなるように動作を変更することができる。 For resources that are accessible only from specific instructions of the system call type, instrument system routines that execute these instructions, that is, modify these routines or intercept these system calls. Alternatively, elements that respond to these can be inserted into the system. In the context of function management by logging and playback, this instrumentation makes it possible in particular to record an action and later reproduce it completely the same, or this action. The behavior can be changed so that is deterministic and no longer needs to be recorded.
その一方で、システム・コールを用いず直接アクセスが可能な、ひいてはどのようなプログラム命令からもおそらく直接アクセスが可能なリソースの場合、大部分のオペレーティング・システム、特にUnix(登録商標)またはLinux(登録商標)系のものは、この共有メモリ・ゾーンShMPiのレベルでアクセスの到着を制御することはできない。 On the other hand, a direct access without using a system call, for perhaps direct-accessible resources from any program instruction in turn, most of the operating system, in particular Unix (registered trademark) or Linux (registered trademark ) Cannot control access arrival at the level of this shared memory zone ShMPi.
この問題を解決するために、図7および図8に示すように、本発明は、特定のシステム・ソフトウェア・エレメントのコードを変更するか、または他の特定のエレメントを追加し、それにより既存のハードウェア機能のうち現在他の機能に使用されているものを変更または拡張することを提示している。 In order to solve this problem, as shown in FIGS. 7 and 8, the present invention modifies the code of certain system software elements or adds other particular elements, so that existing It suggests changing or extending the hardware functions currently used for other functions.
具体的には、Unix(登録商標)またはLinux(登録商標)系のシステム・ソフトウェアにおいてごく少数のエレメントを変更することにより、現在のプロセッサのハードウェア特性を変更することなく、この問題を解決することが可能である。したがって、既存のシステム・ソフトウェアにほんのわずかな変更をもたらし、それにより上位互換性を危うくすることなく機能性を追加すること、一般的な種類であり故に経済的でありかつ保証付きのマシンを使用して少し変更されたまたは変更されていないマルチタスク・アプリケーションを実行および管理することが可能である。 Specifically, this problem can be solved without changing the hardware characteristics of the current processor by changing a very small number of elements in the UNIX (registered trademark) or Linux (registered trademark) system software. It is possible. Therefore, using a machine of the general kind and therefore economical and guaranteed, bringing only minor changes to existing system software, thereby adding functionality without compromising upward compatibility It is possible to run and manage multitasking applications that are slightly modified or not modified.
本発明は、このことを、例えばインテル社のPentium(登録商標)プロセッサ、またはAMD社のAthlonなどPC型式のアーキテクチャに使用されているプロセッサを始め、最近の多数のマイクロ・プロセッサに既設の特定のメカニズムに用いている。これらのプロセッサは、特にPentium(登録商標)2以降、メモリ管理ユニット内に仮想メモリ管理メカニズムを組み込んでいる。このメカニズムを使うと、作業メモリ内で定義されている特定のページが未使用時にハード・ディスク上に「アンロード」され、それをハード・ディスクに保存することによって、物理メモリ内の相当する空間が空く。現在稼働中のアプリケーションに関しては、これらのページはまだ作業メモリ内に載せられてはいるものの、タスクが実際にそのページにアクセスできるようにするためには、それらは再度ハード・ディスクから物理メモリに「ロード」されなければならない。 The present invention takes advantage of this, such as the processors used in PC-type architectures, such as Intel's Pentium® processor or AMD's Athlon. Used for the mechanism. These processors have incorporated a virtual memory management mechanism in the memory management unit, especially since Pentium® 2 and above. With this mechanism, certain pages defined in the working memory are “unloaded” onto the hard disk when not in use and saved to the hard disk, thereby providing a corresponding space in physical memory. Is empty. For currently running applications, these pages are still in working memory, but in order to allow the task to actually access the pages, they are again transferred from the hard disk to physical memory. Must be “loaded”.
この仮想メモリを管理するために、図8に示すように、システム・ソフトウェアは仮想メモリ・マネージャVMMを備えており、これは、様々な各アプリケーション・プロセスの中で仮想化可能なメモリの各ページ用にページ・テーブル・エントリ(「P.T.E.」)を作成する。したがって、プロセスの形で各々が実行されるすなわち固有の実行コンテキストを伴って実行される2つのタスクTAおよびTBに関しては、ShMPi乃至ShMPkの各ページが、それぞれページ・テーブル・エントリPTEiA乃至PTEkAをタスクTAのプロセスで受け取り、同様にページ・テーブル・エントリPTEiB乃至PTEkBをタスクTBのプロセスで受け取る。 To manage this virtual memory, as shown in FIG. 8, the system software includes a virtual memory manager VMM, which is a page of memory that can be virtualized within various application processes. Create a page table entry ("PTE") for use. Thus, for the two tasks TA and TB, each executed in the form of a process, ie with a unique execution context, each page of ShMPi through ShMPk will task a page table entry PTEiA through PTEkA, respectively. The TA process receives the page table entries PTEiB to PTEkB in the same manner, and the task TB process receives them.
仮想メモリ・マネージャVMMは、ページ・ローダ・ソフトウェアPLを備え、これは、ハード・ディスク上の「スワップ」ファイル、例えばマイクロソフト社のWindows (登録商標)(登録商標)システムにおいては拡張子「.swp」を伴うファイルに、メモリ・ページをロードおよびアンロードする。ShMPiページのロードおよびアンロードそれぞれの作業の間、物理メモリにおけるそのページの存在の有無の状況については、VMMマネージャが、対応するページ・テーブル・エントリPTEiAおよびPTEiBそれぞれの中に保存および管理する(30)。この存在の有無の状況は、これらのテーブルPTEiAおよびPTEiBの中に、それぞれデータ・ビットPriAおよびPriBの形で保存され、存在していれば値は1、不在であれば値は0となる。 The virtual memory manager VMM includes a page loader software PL, which is a “swap” file on a hard disk, for example the extension “.swp in Microsoft Windows® systems. Load and unload memory pages into a file with " During each work of loading and unloading ShMPi pages, the VMM manager stores and manages in each corresponding page table entry PTEiA and PTEiB as to whether or not the page exists in physical memory ( 30) . The presence / absence status is stored in these tables PTEiA and PTEiB in the form of data bits PriA and PriB, respectively. The value is 1 if it exists and 0 if it does not exist.
各プロセッサμProXおよびμProYにおいて、メモリ・マネージャMMUXまたはMMUYはページ・フォルト割り込みメカニズムPFIntXまたはPFIntYを備え、実行されるプログラム命令InstrAまたはInstrBから届くあらゆるアクセス要求はここを通るようになっている。もしプロセッサμProXによって実行されるタスクTAからの命令InstrAがメモリ・ページShMPiに関するアクセスを要求したら(33)、プロセッサの割り込みメカニズムPFIntXが、対応するテーブル・エントリPTEiAにある存在ビットPriAの値を読み取ることによって、このページが物理メモリRAMに存在するかどうかを検証する。 In each processor μProX and μProY, the memory manager MMUX or MMUY has a page fault interrupt mechanism PFIntX or PFIntY, through which any access request received from the executed program instruction InstrA or InstrB. If the instruction InstrA from the task TA executed by the processor μProX requests access to the memory page ShMPi (33) , the processor interrupt mechanism PFIntX reads the value of the existence bit PriA in the corresponding table entry PTEiA. Verifies whether this page exists in the physical memory RAM.
もしこのビットPriAがこのページの存在することを示していたら、割り込みメカニズムPFIntXはアクセスを許可する。逆の場合は、この割り込みメカニズムPFIntXは、タスクTAの実行に割り込みをかけ、エラーのパラメータをシステム・ソフトウェアの仮想メモリ・マネージャVMMに備わった「ページ・フォルト・ハンドラ」ソフトウェア・エージェントPFHに伝送する。次に、このフォルト・ハンドラPFHが実行され、システム・ソフトウェアにおいてアプリケーションに関し、このエラーの結果の管理を行う。 If this bit PriA indicates that this page exists, the interrupt mechanism PFIntX grants access. In the opposite case, this interrupt mechanism PFIntX interrupts the execution of task TA and transmits the error parameters to the “page fault handler” software agent PFH in the system software virtual memory manager VMM. . Next, this fault handler PFH is executed to manage the result of this error for the application in the system software.
図7は、本発明にしたがって共用リソースに対するアクセスを管理するためには、既存のメカニズムをどのように修正し、適用または転用するのかを図示している。 FIG. 7 illustrates how existing mechanisms can be modified and applied or diverted to manage access to shared resources in accordance with the present invention.
図7に示すような並列環境において実行されるアプリケーションAPPからのアクセスを管理するために、例えば、Unix(登録商標)またはLinux(登録商標)系のシステムにおいて、ランチャ・ソフトウェアLCHを使用してこのアプリケーションの実行を開始する。開始に際して、アプリケーションAPPはプロセスの形をとる第1のタスクTAと共に作成され、このプロセスは実行「スレッド」ThrA1を備え、タスク・ディスクリプタTDAを形成するデータ・テーブルを用いている。 In order to manage access from an application APP executed in a parallel environment as shown in FIG. 7, for example, in a UNIX (registered trademark) or Linux (registered trademark) system, the launcher software LCH is used. Start running the application. At the start, the application APP is created with a first task TA which takes the form of a process, which uses a data table with an execution “thread” ThrA1 and forming a task descriptor TDA.
ランチャは、管理ビットMmAと称される通常は未使用のデータ・ビットの状態を1に修正することによって、このタスクTAが管理されるまたは「監視される」必要があるという情報をこのタスク・ディスクリプタTDAの中に保存21する。 The launcher informs this task TA that this task TA needs to be managed or “monitored” by modifying the state of the normally unused data bit, referred to as management bit MmA, to 1. Save 21 in the descriptor TDA.
作業メモリ内の異なる共有メモリ・ゾーンは、ここでは共有メモリ・ページShMPi、ShMPjおよびShMPkとするが、タスクTAの中でページ・メモリ構造PMStrAを形成するデータ・テーブルに載せられている。この構造PMStrAにおいて、共有ページはページ・テーブル・エントリのPTEiA1乃至PTEkA1の形で記載および更新され、そのそれぞれが、先に説明したように、仮想メモリ・マネージャVMMによって使用されるデータ・ビットPriA1乃至PrKA1を内蔵している。通常、このページ構造PMStrAはタスクTAと同時に作成され、共有メモリに何らかの変更があればそれに従い、これらの変更を確実にする様々なシステム・ルーチン、例えば「map」型式のルーチンによって、更新される(20)。 The different shared memory zones in the working memory are here shared memory pages ShMPi, ShMPj and ShMPk, but are listed in the data table forming the page memory structure PMStrA in task TA. In this structure PMStrA, the shared pages are described and updated in the form of page table entries PTEiA1 through PTEkA1, each of which, as explained above, is data bits PriA1 through PriA1 used by the virtual memory manager VMM. PrKA1 is incorporated. Typically, this page structure PMStrA is created at the same time as task TA and is updated according to any changes in shared memory, and by various system routines that ensure these changes, for example, "map" type routines (20)
管理されるアプリケーションAPPの実行中、「create」型式の命令CREによって、この第1のタスクTAから、または同様の方法で作成されたその他のタスクから、別のタスクが作成されてもよい。新規に作成された任意のタスクTBにも、スレッドThrB1およびタスク・ディスクリプタTDBが、ページ・メモリ構造PMStrBとともに備わっている。親タスクからの継承関係INHを通じて、新しいページ・メモリ構造PMStrBも、存在ビットPriB1乃至PrkB1を有する別々のページ・テーブル・エントリPTEiB1乃至PTEkB1を備え、これらは同様の方法で最新の状態に保たれている。 During the execution of the managed application APP, another task may be created from this first task TA or from other tasks created in a similar manner by an instruction CRE of the “create” type. Any newly created task TB also includes a thread ThrB1 and a task descriptor TDB together with a page memory structure PMStrB. Through the inheritance relationship INH from the parent task, the new page memory structure PMStrB also has separate page table entries PTEiB1 to PTEkB1 with presence bits PriB1 to PrkB1, which are kept up to date in a similar manner. Yes.
監視されているタスクTAからの新しいタスクTBの作成CREに当たり、新規のタスク・ディスクリプタTDBには管理ビットMmBも備わり、その値は親タスクの管理ビットMmAの値を継承INHしたものである。 In creating CRE of a new task TB from the monitored task TA, the new task descriptor TDB is also provided with a management bit MmB, and its value is an inherited INH value of the management bit MmA of the parent task.
管理されるアプリケーションAPPの実行の間に、当初は単一スレッドThrB1を有するプロセスの形で機能していたタスクTBの中に、他のスレッドが作成されてもよい。 During the execution of the managed application APP, other threads may be created in the task TB that originally functioned in the form of a process having a single thread ThrB1.
既存の監視されているタスクTBの中に、「clone」命令などのシステム・コールによって任意の新しいスレッドThrB2が作成される。通常、マルチスレッド・プロセスの形をとるタスクは、そのページ構造PMStrBの中に、テーブル・エントリPTEiB1乃至PTEkB1を1セットだけ備える。本発明によれば、「clone」システム・コールなど新しいスレッドを作成することのできる任意のシステム・ルーチンの機能は、例えば補足的な部分CSUPをその中に組み入れることなどによって変更される。この変更が目的としているのは、既存のタスクTBの中での新しいスレッドThrB2の作成の全てに、既存のセットであるテーブルPTEiB1乃至PTEkB1の読み取り(22)、および新しいセットのページ・テーブル・エントリPTEiB2乃至PTEkB2の作成(23)を含ませ、これらを同様に共有ページShMPi乃至ShMPkに対応させ、新しいスレッドThrB2に特化して機能させることである。この修正は、例えば、同一出願人による仏国特許第2820221号明細書に記載されているように、システム内の共有ライブラリのロードを通じて動的な干渉の技術を用いることによって、これらのルーチンCLONEをインストルメントすることなどにより行われてもよい。 In the existing monitored task TB, any new thread ThrB2 is created by a system call such as a “clone” instruction. A task that typically takes the form of a multi-threaded process comprises only one set of table entries PTEiB1 to PTEkB1 in its page structure PMStrB. In accordance with the present invention, the functionality of any system routine that can create a new thread, such as a “clone” system call, is altered, for example, by incorporating a supplementary partial CSUP therein. The purpose of this change is to create a new thread ThrB2 in the existing task TB, to read the existing set of tables PTEiB1 to PTEkB1 ( 22 ) , and to the new set of page table entries. The creation ( 23 ) of PTEiB2 to PTEkB2 is included, and these are similarly made to correspond to the shared pages ShMPi to ShMPk and function specifically for the new thread ThrB2. This modification makes these routines CLONE possible by using the technique of dynamic interference through the loading of a shared library in the system, for example as described in French patent 2820221 by the same applicant. It may be performed by instrumentation.
この作成においては、親テーブルPTEiB1乃至PTEkB1と同様の方法で、新しいテーブルPTEiB2乃至PTEkB2についても確実に最新の状態を維持する(24、25)ようになっている。これは、この更新を管理しているシステム・ルーチンMAPの中にテーブルを登録して更新するか、あるいは補足的な部分MSUPを組み入れることなどによってこれらのシステム・ルーチンMAPをインストルメントするかのいずれかによって維持される。 In this creation, the new tables PTEiB2 to PTEkB2 are reliably maintained in the latest state (24, 25) in the same manner as the parent tables PTEiB1 to PTEkB1. This can be done either by registering and updating the table in the system routine MAP that manages this update, or by instrumenting these system routines MAP, such as by incorporating a supplemental partial MSUP. Maintained by what.
図8は、一例として2つのプロセッサ、μProXおよびμProYにおいて並列に実行される2つの単一スレッド型タスクTAおよびTBを含むものに上記構造を適用したアクセス管理の機能を示す。なお、各タスク内に複製される各スレッドThrB2にもページ・テーブル・エントリPTEの構造を拡張して適用させることにより、スレッドが単一スレッド、マルチスレッドのいずれであっても、監視されているタスクに属する全てのスレッドからの各種アクセスを同様の方法で管理できるようになる。 FIG. 8 shows an access management function in which the above structure is applied to an example including two single thread tasks TA and TB executed in parallel in two processors, μProX and μProY. In addition, by expanding and applying the structure of the page table entry PTE to each thread ThrB2 replicated in each task, it is monitored whether the thread is a single thread or a multi-thread. Various accesses from all threads belonging to the task can be managed in the same way.
本明細書に記載された実施形態においては、本発明によるアクセス管理は、活動化期間を通して一貫性(または整合性)がシステム・ソフトウェアによって保証されている共有メモリ・ページ群への排他的アクセスを、該期間全体を通じて各タスクに、つまり、各スレッドThrB1またはThrB2にもプロセスTAまたはTBにも、保証するように構成されている。このような期間は、本明細書ではシステム・ソフトウェアのスケジューラSCHによって割り当ておよび管理が行われる活動化期間として記載されている。同様の趣旨で、別のタイプの一貫性ある期間が選択されてもよいことは明らかである。 In the embodiments described herein, access management according to the present invention provides exclusive access to shared memory pages that are consistent (or consistent) guaranteed by system software throughout the activation period. , It is configured to guarantee each task throughout the period, that is, each thread ThrB1 or ThrB2 or process TA or TB. Such a period is described herein as an activation period assigned and managed by the system software scheduler SCH. Obviously, another type of consistent period may be selected for similar purposes.
同様に、アクセスが管理または制御される共有リソースについて、本明細書では、特定のメモリ・ゾーンまたはメモリ・ページとして定義される共有メモリの形で記載している。他の種類のリソースでも、それに対応するシステム・ルーチンを同様にインストルメントすれば、同じコンセプトを適用することもできる。 Similarly, shared resources for which access is managed or controlled are described herein in the form of shared memory, which is defined as a particular memory zone or memory page. The same concept can be applied to other types of resources if the corresponding system routines are similarly instrumented.
本発明の実施においては、システム・ソフトウェアの一部のエレメントを変更し、それらが以下に記載するような機能をもつようにしてもよい。必要とされる変更の程度は、システム・ソフトウェアの種類またはバージョンに応じて確実に異なってくるだろう。Linux(登録商標)系システムの場合、これらの修正には、通常、先に記載したように「clone」および「map」型式のルーチンをインストルメントすること、ならびにスケジューラSCH、ページ・フォルト・ハンドラPFHおよびページ・ローダPLを形成しているエージェントにおいて変更およびコードの追加をすることが含まれる。本明細書に記載されたタイプのアクセス制御を形成するためにはシステムの機能性を変更するが、有利なことに、標準システムの機能性と比較して純然たる拡張として行うことができ、すなわち、機能性を除外することもなく、または少なくとも標準システム・バージョン用に開発されたアプリケーションの上位互換性を危うくすることもない。 In the practice of the present invention, some elements of the system software may be modified so that they have the functions described below. The degree of change required will certainly vary depending on the type or version of system software. Linux case (registered trademark) system, these modifications generally be instrumented to "clone" and "map" type routines as described previously, and the scheduler SCH, the page fault handler PFH And making changes and adding code at the agent forming the page loader PL. Changing the functionality of the system to form an access control of the type described herein can be advantageously done as a pure extension compared to the functionality of a standard system, i.e. Without excluding functionality or at least compromising upward compatibility of applications developed for standard system versions.
さらに、プロセッサにおける仮想メモリ管理を想定されているハードウェア・メカニズムを使用するとはいえ、上述のアクセス制御のために必ずしもこの仮想メモリを非活動化しなくてもよく、両立可能である。例えば、仮想ページShMPiが既に別のタスクTAによって使用されている場合に、このページの物理メモリRAMへのロードが、監視されているタスクTBによってこのページの存在ビットPriBへ反映されないように、ページ・ローダPLをインストルメントまたは変更してもよい。 Furthermore, although the hardware mechanism assumed for virtual memory management in the processor is used, it is not always necessary to deactivate this virtual memory for the above-mentioned access control, and both are compatible. For example, if the virtual page ShMPi is already in use by another task TA, the load on this page into the physical memory RAM is not reflected in the presence bit PriB of this page by the monitored task TB. -The loader PL may be instrumented or changed.
図8に示すように、活動化期間の1つであるSchAの開始に際して、タスクTAはスケジューラSCHによって時点SCHALにおいて解放される。スケジューラSCHは、このタスクを解放する前にタスクTAの管理ビットMmAを検査して(31)、アクセス制御を適用すべきかどうかを確定する。アクセス制御が必要な場合、スケジューラSCHは、次にこのアクセス制御に関わる全ての共有ページに対応するページ・テーブル・エントリPTEiA乃至PTEkAの全存在ビットPriA乃至PrkAを0に設定し(32)、それにより、このタスクTAを実行することのできる全プロセッサμProX用の割り込みメカニズムPFIntXにおいて、このタスクTAによるあらゆるアクセス要求が初期設定によってページ・エラーをもたらすようにする。 As shown in FIG. 8, at the start of SchA, which is one of the activation periods, task TA is released at time point SCHAL by scheduler SCH. Before releasing this task, the scheduler SCH checks the management bit MmA of the task TA (31) to determine whether access control should be applied. If access control is required, the scheduler SCH then sets all existing bits PriA to PrkA of page table entries PTEiA to PTEkA corresponding to all shared pages involved in this access control to 0 (32) , Thus, in the interrupt mechanism PFIntX for all processors μProX capable of executing this task TA, every access request by this task TA causes a page error by initialization.
プロセッサμProXにおけるこの活動化期間SchAの間に、命令InstrAが、共有メモリ・ページShMPiへのアクセスを要求する(33)。対応する存在ビットPriAが0になっているので、プロセッサμProXの割り込みメカニズムPFIntXはこのアクセス要求の実行を停止し、システム・ソフトウェアのページ・フォルト・ハンドラPFHをコールし、同時にそれに対して問題のページおよびタスクの識別表示を伝送する。 During this activation period SchA in the processor μProX, the instruction InstrA requests access to the shared memory page ShMPi (33) . Since the corresponding presence bit PriA is 0, the interrupt mechanism PFIntX of the processor μProX stops executing this access request and calls the system software page fault handler PFH at the same time as the problem page. And transmit task identification.
このエラーの処理に際し、ページ・フォルト・ハンドラPFHの補足的機能PFHSUPは、そのとき、システム・ソフトウェアの仮想メモリ・マネージャVMM内部にカーネル・メモリ構造KMStrエージェントを形成するデータ・テーブルにおいて、検査もしくは変更またはその両方をおこなう。 In handling this error, the supplemental function PFHSUP of the page fault handler PFH then checks or changes in the data table that forms the kernel memory structure KMStr agent within the virtual memory manager VMM of the system software. Or do both.
通常、このカーネル・メモリ構造KMStrは、メモリ・リソースの構造およびその展開を表しているデータを、全作業環境に関してまたは全作業メモリに関して一意の方法で保存する。本発明によれば、このカーネル・メモリ構造KMStrは、アクセス・ビットKSi、KSjおよびKSkと称する1セットのデータ・ビットをさらに備え、これは当該の共有ページShMPi乃至ShMPkのそれぞれに関して、現在このページへのアクセスがタスクに対して認められている(ビットは1)か、または認められていない(ビットは0)かという情報を提示する。 Typically, this kernel memory structure KMStr stores data representing the structure of memory resources and their expansion in a unique way for all working environments or for all working memories. In accordance with the present invention, this kernel memory structure KMStr further comprises a set of data bits, referred to as access bits KSi, KSj and KSK, which for this respective shared page ShMPi to ShMPk Provides information on whether access to the task is granted to the task (bit is 1) or not granted (bit is 0).
ページ・フォルト・ハンドラPFHがプロセッサμProXから伝送されたエラーを処理するとき、問題のページShMPiに対応するアクセス・ビットKSiを参照(34)する。もしこのアクセス・ビットが現在のアクセスを何も示していなかったら、このアクセス・ビットKSiを修正して(34)このページへのアクセスを許可したことを保存し、さらに、要求元タスクTAに対応する存在ビットPriAを修正し(35)(ビットは1に変更)、現在このタスクTAが問題のページShMPPiへの排他的なアクセス権を有しているという情報を保存する。 When the page fault handler PFH processes an error transmitted from the processor μProX, it references the access bit KSi corresponding to the page ShMPi in question ( 34 ) . If this access bit does not indicate any current access, modify this access bit KSi (34) to save that access to this page has been granted, and to respond to the requesting task TA The existence bit PriA is modified (35) (bit is changed to 1), and information that the task TA currently has exclusive access to the page ShMPPi in question is saved.
なお、カーネル・メモリ構造KMStrのアクセス・ビットKSiのこれらの検査および変更オペレーションは、アトミックな方法で実施されるオペレーション34となっており、すなわち、マルチプロセッサ環境下であっても、全面的に実施されるか、または全く実施されないかのどちらかとなる。 It should be noted that these check and change operations of the access bit KSi of the kernel memory structure KMStr are operations 34 performed in an atomic manner, that is, performed entirely even in a multiprocessor environment. Either done or not implemented at all.
ページ・フォルト・ハンドラPFHは、要求されたページShMPiに対する排他性を付与したらすぐに、このページの内容に実際にアクセスするよう命令InstrAの実行を再開する。 As soon as the page fault handler PFH grants exclusivity to the requested page ShMPi, it resumes execution of the instruction InstrA to actually access the contents of this page.
その後、別のプロセッサμProYによって並列に実行されている別の任意の監視されているタスクTBからの命令InstrBが、既に帰属されたこのページShMPiへのアクセスを要求した(37)場合、このプロセッサの割り込みメカニズムPFIntYも、要求元タスクTBのためにこのページの存在ビットPriBを参照することになる。タスクTBは監視されるタスクなので、参照されている存在ビットPriBは不在を表す位置(値は0)にある。そこで、割り込みメカニズムPFIntYは、要求命令InstrBを停止し、ページ・フォルト・ハンドラPFHへエラーを伝送する(38)だろう。 Then, if an instruction InstrB from another arbitrary monitored task TB being executed in parallel by another processor μProY requested access to this already- assigned page ShMPi (37) , The interrupt mechanism PFIntY will also refer to the presence bit PriB of this page for the requesting task TB. Since the task TB is a task to be monitored, the presence bit PriB referred to is at a position (value is 0) indicating absence. The interrupt mechanism PFIntY will then stop the request instruction InstrB and transmit an error to the page fault handler PFH (38) .
今度は、このページ・フォルト・ハンドラPFHは、このページのアクセス・ビットKSiが1であり、このページShMPi上では別のタスクに排他性が与えられていることを示しているのに気づく。したがって、ページ・フォルト・ハンドラPFHは、例えば活動化期間をシステム・ソフトウェアのコンテキスト変更マネージャにおいて終了させるなどによって、要求元タスクTB全体の停止を開始する(39)。したがって、このタスクTBは、次の活動化期間には、割り込みをかけられた正確なポイントまで実行を繰り返し、再度この同じページShMpiへのアクセスを試みることができるだろう。 This time, the page fault handler PFH notices that the access bit KSi of this page is 1, indicating that exclusivity is given to another task on this page ShMPi. Accordingly, the page fault handler PFH initiates a stop of the entire requesting task TB (39) , for example by terminating the activation period in the context change manager of the system software. Thus, this task TB will be able to repeat execution to the exact point where it was interrupted during the next activation period and try to access this same page ShMpi again.
要求元タスクが、マルチスレッド・プロセスに属するスレッドThrB2(図7)である場合、この単一のスレッドThrB2に特化した一連のページ・テーブル・エントリPTEiB2が存在しているため、既に排他的アクセスを割り当てられているページへのアクセスを要求したこのスレッドのみを停止し、排他性に抵触しないであろう別のスレッドThrB1については停止しないでおくことができる。 If the requesting task is a thread ThrB2 (FIG. 7) belonging to a multi-thread process, since there is a series of page table entries PTEiB2 specialized for this single thread ThrB2, exclusive access has already been performed. Only this thread that requested access to the page to which it is assigned can be stopped, and another thread ThrB1 that will not violate exclusivity can be stopped.
各タスクの活動化期間SchAの完了SCHASに際しては、スケジューラがこのタスクの実行を停止し、実行コンテキストをバックアップする。 At the completion SCHAS of the activation period SchA of each task, the scheduler stops the execution of this task and backs up the execution context.
この停止SCHASに際して、または既に割り当てられたページへの要求に対する停止(39)に際して、本発明は、さらに、このタスクが排他的アクセス権を受けている全ての共有メモリ・ページに関する解放段階も想定している。したがって、スケジューラSCHは、管理ビットMmAを通じて停止中のタスクTAが監視されていることを感知(301)したら、このタスクの全ページ・テーブル・エントリPTEiA乃至PTEkAに目を通し、個別の存在ビットPriA乃至PrkAの状態を参照することによって、どのページに対する排他的アクセス権を有しているのかを確定させる。次に、この情報に基づいて、カーネル・メモリ構造KMStrの中のアクセス・ビットKSiを0に再設定することで、これらのページShMPiを全て解放する。 Upon this deactivation SCHAS or deactivation ( 39 ) for a request for an already allocated page, the present invention further envisions a release phase for all shared memory pages for which this task has exclusive access. ing. Therefore, when the scheduler SCH senses ( 301 ) that the stopped task TA is being monitored through the management bit MmA, it looks through all the page table entries PTEiA to PTEkA of this task and uses the individual existence bits PriA. Through referring to the state of PrkA, it is determined which page has the exclusive access right. Next, all these pages ShMPi are released by resetting the access bit KSi in the kernel memory structure KMStr to 0 based on this information.
他の例示されていない変形例においては、例えば単一のタスク・ディスクリプタの中にいくつかの管理ビットを想定することなどにより、管理または監視のコンセプトをいくつかの種類の管理に分離させることも可能である。このため、特定のカテゴリのタスクに関して排他的アクセスの利益を享受できるようにタスクを監視することもできる。同様に、タスクは、特定のカテゴリのタスクについてのみ除外されるようにしてもよい。 In other non-illustrated variations, the management or monitoring concept can be separated into several types of management, for example by assuming several management bits in a single task descriptor. Is possible. For this reason, tasks can also be monitored so that the benefits of exclusive access can be enjoyed for tasks of a particular category. Similarly, tasks may be excluded only for specific categories of tasks.
このように、既に割り当てが行われているページへのアクセスを求める全てのタスクを停止することによって、ここで停止された他のタスクの実行の一貫性を阻害することなく、最初に要求を行ったタスクがこのページの排他性を獲得することができる。 In this way, by stopping all tasks that require access to pages that have already been allocated, the first request is made without disturbing the consistency of the execution of the other tasks stopped here. Task can acquire the exclusivity of this page.
2つのタスクに共有されている単一のメモリ・ゾーンについてのあらゆる変更が同時に実行されるのを回避することによって、このメモリ・ゾーンの内容の変更の際2つのタスク間に何らかの干渉が生じるのを回避する。つまり、このメモリ・ゾーンの所定の初期状態以降、すなわちそこにアクセスするタスクの各活動化期間の開始時以降のメモリ・ゾーンの内容の変化は、この活動化期間におけるこのタスクの動作のみに依存することになる。したがって、例えばスケジュールされた活動化期間などこのタスクによって実行されるある特定の命令のシーケンスが既知の初期状態から開始すれば、それにより決定論的でこのタスクに関して反復可能なシーケンスの実行が可能となる。 By avoiding any simultaneous changes to a single memory zone shared by two tasks, there will be some interference between the two tasks when changing the contents of this memory zone To avoid. In other words, changes in the contents of the memory zone after the predetermined initial state of this memory zone, that is, after the start of each activation period of the task accessing it, depend only on the operation of this task during this activation period. Will do. Thus, if a particular sequence of instructions executed by this task, such as a scheduled activation period, starts from a known initial state, this allows execution of a deterministic and repeatable sequence for this task Become.
特に、アクセスされるメモリ・ゾーンにおける排他性の割り当てを保存するのにアトミックなオペレーションを使用しているため、この方法によって、競争的にアクセスを求める複数のタスク間で共有されている単一リソースのデッドロックの危険を回避または低減することが可能になる。 In particular, it uses atomic operations to store the exclusivity assignments in the memory zone being accessed, so this method allows for a single resource that is shared among multiple tasks seeking access competitively. It becomes possible to avoid or reduce the risk of deadlock.
これらのアクセス制御技術(図7乃至図8)を上述の決定論的期間のロギング技術(図1から図5)、ならびに上記に引用した明細書に記載のチェックポインティング、ロギングおよび再生の技術を組み合わせることによって、本発明は、さらに、先に記載した様々な形式の機能管理を並列アーキテクチャ・システムにおいて実施することを提示している。 These access control techniques (FIGS. 7-8) are combined with the deterministic period logging techniques described above (FIGS. 1-5) and the checkpointing, logging and playback techniques described in the above cited specification. Thus, the present invention further presents the implementation of the various types of function management described above in a parallel architecture system.
故に、図9では、本発明によるマルチプロセッサ・システムMP1上におけるマルチタスク・アプリケーションのロギングAPPJ、および単一プロセッサ・システムUP2において必要に応じて行われる再生を図示している。 Therefore, FIG. 9 illustrates the logging APPJ of the multitasking application on the multiprocessor system MP1 according to the present invention and the replay that is performed as needed in the single processor system UP2.
ログされたアプリケーションAPPJに関し、ロギング・エージェントJSCHは、各プロセッサμProXまたはμProYのために、監視されている別々のタスクTA、TBおよびTCの一連の全ての活動化期間をログする。上述のように、ロギング・エージェントJSCHはそれらをそれぞれキューQJμProXおよびQJμProYとして別々に伝送する。なお、タスクが或るプロセッサで1回実行され、さらに別のプロセッサで1回実行された場合は、このタスクの活動化期間は2つのキューに現れることになる。 For the logged application APPJ, the logging agent JSCH logs a series of all activation periods of the separate tasks TA, TB and TC being monitored for each processor μProX or μProY. As described above, the logging agent JSCH transmits them separately as queues QJμProX and QJμProY, respectively. When a task is executed once by a certain processor and is executed once by another processor, the activation period of this task appears in two queues.
ログされたアプリケーションAPPJによってアクセスされる共有リソースShMPi乃至ShMPkについて、ロギング・エージェントJVMMは、各々のリソースに関してリソース上に割り当てられた一連の排他的アクセスを表すロギング・データを記録する。この排他的アクセスのロギング・データは、仮想メモリ・マネージャVMMにおいて、別々のタスクに割り当てる排他的アクセスとともにページ・フォルト・ハンドラPFHによって作成される。 For the shared resources ShMPi through ShMPk accessed by the logged application APPJ, the logging agent JVMM records logging data representing a series of exclusive accesses assigned on the resource for each resource. This exclusive access logging data is created by the page fault handler PFH in the virtual memory manager VMM with exclusive access assigned to different tasks.
このアクセス・ロギング・データの各記録は、具体的には次のものを含む。
−共有メモリ・ゾーンのアドレスなど当該共有リソースの一意の識別子。
−このアクセスを取得したタスクの識別子(PIDまたはTIP)。
−本明細書に記載のカウンティング技術などを通じて取得したこの排他的アクセスの継続期間。
−先に記載の署名のように、このカウンティングの不正確さを補償することのできる補足的なデータ。
−システム・リソースおよび様々な外部または入出力イベントの仮想化などに役立つ補足的なデータ。
Each record of this access logging data specifically includes:
-A unique identifier for the shared resource, such as the address of the shared memory zone.
The identifier (PID or TIP) of the task that obtained this access.
The duration of this exclusive access, such as obtained through the counting techniques described herein.
-Supplementary data that can compensate for this counting inaccuracies, such as the signature described above.
-Supplemental data useful for virtualizing system resources and various external or input / output events.
このロギング・データは、FIFO形式のロギング・キューQJShMPiへと伝送される。 This logging data is transmitted to the logging queue QJShMPi in the FIFO format.
実施形態によっては、これらのキューQJμProX、QJμProY、QJShMPiの内容を1つ以上のログ・ファイルに保存して、例えば後から使用することなどができる。 Depending on the embodiment, the contents of these queues QJμProX, QJμProY, QJShMPi can be saved in one or more log files and used later, for example.
これらのキューの中から、各種ロギング・データが、コンピュータ通信ネットワークなどの通信手段を用いて再生システムUP2へと伝送される。 From these queues, various types of logging data are transmitted to the reproduction system UP2 using communication means such as a computer communication network.
各ロギング・キューQJμProX、QJμProY、QJμMPiからのデータは、発行元の各キューに対応する再生キューQRμProX、QRμProY、QRShMPiによってそれぞれ受け取られる。 Data from each logging queue QJμProX, QJμProY, QJμMPi is respectively received by the reproduction queues QRμProX, QRμProY, QRShMPi corresponding to the respective queues of the issuers.
これらの再生キューの出力に際し、ログされた別個のプロセッサμProXおよびμProYのロギング・データはアクセス・ロギング・データにしたがって組み合わされ、それにより、ログされた活動化期間の総合的なシリアライゼーションおよび割り当てられた(連続的な)排他的アクセスが復元されるようになる。 At the output of these play queues, the logged data of the separate processors μProX and μProY logged are combined according to the access logging data, so that the total serialization and allocated of the logged activation period (Consecutive) exclusive access will be restored.
再生システムの内部では、この再生シリアライゼーションまたは再生スケジューリングの定義後に、再生プロセッサにおいて再生の実行が開始される。 Inside the playback system, playback is started in the playback processor after the playback serialization or playback scheduling is defined.
なお、再生シリアライゼーションのスケジューリングを中断させない方法でタスクがプロセッサに分配されている以上、再生におけるパフォーマンスは別だが、再生プロセッサの数は重要視しなくてもよい。 As long as tasks are distributed to processors in a manner that does not interrupt playback serialization scheduling, the performance of playback is different, but the number of playback processors need not be considered important.
なお、本明細書に記載された各種メカニズムでは、ソフトウェアの部分をハードウェアの部分から切り離したやり方で使用している。したがってハードウェアに対して十分な独立性が得られ、それにより特に実装の簡潔性および信頼性が高まり、さらに、プロセッサまたはコンピュータと想定される様々な計算エレメントの並列性をアーキテクチャが最良の状態で管理できるようになるため、優れた性能が保たれる。 The various mechanisms described in the present specification use the software part in a manner separated from the hardware part. Therefore, sufficient hardware independence is obtained, which increases the simplicity and reliability of implementation in particular, and in addition, the architecture provides the best parallelism of the various computational elements assumed to be a processor or a computer. Because it becomes possible to manage, excellent performance is maintained.
さらに、本発明はほとんどの場合純粋にソフトウェアによって実施されるものであるため、標準的なハードウェアをそれが備えているであろう全ての利点と一緒に使用することができる。 Furthermore, since the present invention is mostly implemented purely in software, standard hardware can be used with all the advantages that it would have.
本発明は、特に、単一の計算エレメントに関して共有された時間において機能するマルチタスク・アプリケーション用に開発された機能管理技術を、並列環境に拡張することを可能にしている。このように、本発明は、前述の並列環境をネットワークまたはクラスタと一体化させることができ、そこでは、この機能管理がミドルウェア・タイプのアプリケーションに実装され、それにより例えば「オンデマンド」のサービスを提供する分散型アプリケーションまたは可変展開型のアプリケーションを管理する。 The present invention makes it possible to extend, in parallel environments, function management techniques developed specifically for multitasking applications that function in a shared time for a single computational element. In this way, the present invention allows the aforementioned parallel environment to be integrated with a network or cluster, where this functional management is implemented in middleware type applications, thereby enabling, for example, “on-demand” services. Manage distributed or variable deployment applications that you provide.
当然ながら、本発明は、記載してきた例に制限されるものではなく、本発明の枠組みから離れることなく多数の修正を加えることが可能である。 Of course, the invention is not limited to the examples described, and numerous modifications can be made without departing from the framework of the invention.
Claims (6)
前記方法は、
第1の演算ユニット(μProX)における前記少なくとも2つのアプリケーション・タスクのうちのいずれか一つ又は複数のアプリケーション・タスクの第1の継続する活動化期間をロギングするステップと、
第2の演算ユニット(μProY)における前記少なくとも2つのアプリケーション・タスクのうちのいずれか一つ又は複数のアプリケーション・タスクの第2の継続する活動化期間をロギングするステップと、
前記少なくとも1つの共有リソースへのアクセス要求(InstrA)に応じて、前記少なくとも2つのアプリケーション・タスクのうちのアクセス元アプリケーション・タスクに対して前記少なくとも1つの共有リソースへの排他的アクセスの一連の帰属をロギングするステップと
を含み、
前記排他的アクセスの一連の帰属をロギングするステップが、
前記共有リソースの一意の識別子と、
アクセスを取得したアプリケーション・タスクに関連付けられた識別子と、
前記少なくとも1つの共有リソースへのアクセスを取得したアプリケーション・タスクによる排他的アクセスの継続期間と
を記録するステップと、
FIFOキューへ前記記録されたロギング・データを伝送するステップと
を含む、
前記方法。 A method for managing the functions of at least two application tasks (TA, TB), the method comprising: a plurality of applications capable of simultaneously executing a plurality of application tasks in at least two computing units (μProX, μProY); Implemented in system software for managing the execution of the at least two application tasks (TA, TB) by sequential activation in a computer system having a parallel structure with a computing means, the at least two application tasks (TA TB) has access to at least one shared resource (ShMPi),
The method
Logging a first continuous activation period of any one or more of the at least two application tasks in a first computing unit (μProX);
Logging a second continuous activation period of any one or more of the at least two application tasks in a second computing unit (μProY) ;
Wherein in response to at least one request to access a shared resource (InstrA), a series of assignment of exclusive access to the at least one shared resource to the access source application task of the at least two application tasks look including a step of logging,
Logging the series of exclusive access attributions;
A unique identifier of the shared resource;
An identifier associated with the application task that gained access;
Duration of exclusive access by an application task that has obtained access to the at least one shared resource;
A step of recording
Transmitting the recorded logging data to a FIFO queue;
including,
Said method.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0500723A FR2881241B1 (en) | 2005-01-24 | 2005-01-24 | METHOD FOR OPTIMIZING JOURNALIZATION AND MULTI-TASK APPLICATION REJECTION IN A MONO-PROCESSOR OR MULTI-PROCESSOR COMPUTER SYSTEM |
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 (en) | 2005-01-24 | 2013-03-15 | Method for optimizing logging and playback of multitasking applications in a single processor or multiprocessor computer system |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2008529114A JP2008529114A (en) | 2008-07-31 |
JP2008529114A5 true JP2008529114A5 (en) | 2012-03-08 |
JP5547373B2 JP5547373B2 (en) | 2014-07-09 |
Family
ID=34979840
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007551685A Expired - Fee Related JP5547373B2 (en) | 2005-01-24 | 2006-01-24 | Method for optimizing logging and playback of multitasking applications in a single processor or multiprocessor computer system |
JP2013053064A Expired - Fee Related JP5505914B2 (en) | 2005-01-24 | 2013-03-15 | Method for optimizing logging and playback of multitasking applications in a single processor or multiprocessor computer system |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013053064A Expired - Fee Related JP5505914B2 (en) | 2005-01-24 | 2013-03-15 | Method for optimizing logging and playback of multitasking applications in a single processor or multiprocessor computer system |
Country Status (8)
Country | Link |
---|---|
US (1) | US20080270770A1 (en) |
EP (1) | EP1842132B1 (en) |
JP (2) | JP5547373B2 (en) |
CN (1) | CN100530123C (en) |
AT (1) | ATE409326T1 (en) |
DE (1) | DE602006002874D1 (en) |
FR (1) | FR2881241B1 (en) |
WO (1) | WO2006077260A1 (en) |
Families Citing this family (14)
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 |
ES2335055T3 (en) | 2006-08-28 | 2010-03-18 | International Business Machines Corporation | METHOD TO IMPROVE THE TRANSFER OF EVENT RECORDS FOR THE REPLICA OF PROGRAMS IN EXECUTION. |
CN101446909B (en) | 2007-11-30 | 2011-12-28 | 国际商业机器公司 | Method and system for managing task events |
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 (en) * | 2010-02-18 | 2011-08-24 | 삼성전자주식회사 | Debugging apparatus for a shared library |
CN102325091B (en) * | 2011-10-17 | 2014-09-17 | 迈普通信技术股份有限公司 | Memory release method and routing system |
IN2014MU00661A (en) | 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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4847754A (en) * | 1985-10-15 | 1989-07-11 | International Business Machines Corporation | Extended atomic operations |
JPH02126340A (en) * | 1988-11-05 | 1990-05-15 | Fuji Xerox Co Ltd | Data processing system |
JP2807026B2 (en) * | 1990-02-17 | 1998-09-30 | 日本電信電話株式会社 | Execution reproduction method of parallel program |
JPH03241438A (en) * | 1990-02-20 | 1991-10-28 | Nec Corp | Program debug supporting device |
US5214780A (en) * | 1990-03-23 | 1993-05-25 | Sun Microsystems, Inc. | Synchronized journaling system |
JP2758311B2 (en) * | 1992-05-28 | 1998-05-28 | 富士通株式会社 | Log file control method in complex system |
JP3154942B2 (en) * | 1995-09-11 | 2001-04-09 | 株式会社東芝 | Distributed checkpoint generation method and computer system to which the method is applied |
JPH09190375A (en) * | 1996-01-09 | 1997-07-22 | Toshiba Corp | Shared memory management method |
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 (en) * | 1998-03-23 | 1999-10-08 | Nec Corp | Parallel processor system equipped with performance measuring circuit and method for measuring performance of program |
JP2001184235A (en) * | 1999-12-24 | 2001-07-06 | Hitachi Ltd | Device for obtaining and analyzing log information |
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 (en) * | 2002-03-20 | 2003-10-03 | Matsushita Electric Ind Co Ltd | Shared memory exclusive control device and shared memory exclusive control method |
WO2004025461A2 (en) * | 2002-09-12 | 2004-03-25 | International Business Machines Corporation | A data processing system adapted to integrating non-homogeneous processes |
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 |
EP1510933B1 (en) * | 2003-08-27 | 2007-08-01 | Sap Ag | Propagating of database modifications |
-
2005
- 2005-01-24 FR FR0500723A patent/FR2881241B1/en not_active Expired - Fee Related
- 2005-01-24 US US11/814,465 patent/US20080270770A1/en not_active Abandoned
-
2006
- 2006-01-24 EP EP06707818A patent/EP1842132B1/en active Active
- 2006-01-24 CN CNB2006800029855A patent/CN100530123C/en not_active Expired - Fee Related
- 2006-01-24 AT AT06707818T patent/ATE409326T1/en not_active IP Right Cessation
- 2006-01-24 DE DE602006002874T patent/DE602006002874D1/en active Active
- 2006-01-24 JP JP2007551685A patent/JP5547373B2/en not_active Expired - Fee Related
- 2006-01-24 WO PCT/EP2006/050404 patent/WO2006077260A1/en active IP Right Grant
-
2013
- 2013-03-15 JP JP2013053064A patent/JP5505914B2/en not_active Expired - Fee Related
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5547373B2 (en) | Method for optimizing logging and playback of multitasking applications in a single processor or multiprocessor computer system | |
JP2008529114A5 (en) | ||
US7774647B2 (en) | Method for counting instructions for logging and replay of a deterministic sequence of events | |
JP4866864B2 (en) | Method and program for managing access to shared resources in a multi-processor environment | |
US10474471B2 (en) | Methods and systems for performing a replay execution | |
US8370841B2 (en) | Optimizing deterministic event record and replay operations | |
Govil et al. | Cellular Disco: Resource management using virtual clusters on shared-memory multiprocessors | |
US8949671B2 (en) | Fault detection, diagnosis, and prevention for complex computing systems | |
US7770064B2 (en) | Recovery of application faults in a mirrored application environment | |
KR101063604B1 (en) | Method and system for managing memory access from multithreaded programs on a multiprocessor system | |
US8490181B2 (en) | Deterministic serialization of access to shared resource in a multi-processor system for code instructions accessing resources in a non-deterministic order | |
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 | |
JP2006202279A (en) | Monitoring for virtual machine | |
US8954969B2 (en) | File system object node management | |
US20090320036A1 (en) | File System Object Node Management | |
US8200918B2 (en) | Tracking ownership of memory in a data processing system through use of a memory monitor | |
CN103970608A (en) | Method And Virtualisation Control For Managing A Resource Of A Computer With At Least Two Virtual Machines | |
Liu et al. | CPS: A Cooperative Para-virtualized Scheduling Framework for Manycore Machines | |
Liao | TAI: threaded asynchronous I/O library for performance and portability | |
FR2881244A1 (en) | Application task management method for multi-processor computer system, involves logging succession of attributions of access termed exclusive to target resource, to accessing task in response to request for access to target resource | |
Anderson et al. | E cient Object Sharing in Quantum-Based Real-Time Systems |