CN101103337A - 管理、录入或重放执行应用进程时的非确定性操作的方法 - Google Patents
管理、录入或重放执行应用进程时的非确定性操作的方法 Download PDFInfo
- Publication number
- CN101103337A CN101103337A CNA2006800021054A CN200680002105A CN101103337A CN 101103337 A CN101103337 A CN 101103337A CN A2006800021054 A CNA2006800021054 A CN A2006800021054A CN 200680002105 A CN200680002105 A CN 200680002105A CN 101103337 A CN101103337 A CN 101103337A
- Authority
- CN
- China
- Prior art keywords
- typing
- result
- data
- called
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
- Communication Control (AREA)
- Handling Of Continuous Sheets Of Paper (AREA)
- Heat Treatment Of Strip Materials And Filament Materials (AREA)
Abstract
本发明涉及一种特别地通过录入和重放来进行的用于软件操作的管理方法,该软件操作是在执行在计算机上执行的应用进程的过程中执行的。这一方法特别地适用于向受管理的进程发送结果数据的内部操作并且包括如下步骤:基于受管理的进程的状态或者应用(AOP,ASB)的状态来进行称为预测函数(FH)的确定性软件处理以提供用于所述操作的预测结果(RP);进行比较测试以确定预测结果(RP)的值是否对应于实际结果(DR,RRJ)的值;执行所述受管理的操作的补充管理阶段(CH,DH),这一补充管理视先前测试的结果而定。
Description
技术领域
本发明涉及一种特别地通过记录或者外部监视来进行的用于软件操作的管理方法,该软件操作是在执行在计算机上执行的应用进程的过程中进行的。这一管理特别地应用于以录入数据(loggingdata)的形式来记录操作或者根据与先前已录入的执行相对应的给定执行来重放操作。
该方法特别有利地适用于执行这一进程的内部事件的操作,该进程本身可以是多进程和/或多计算机软件应用的一部分。
本发明还涉及一种系统,该系统在它所执行的软件应用的运作管理中实施这样的方法。
本发明的领域是独立的或者在网络中的计算机或者是由一起工作的多个计算机形成的计算机“集群”的领域。这些集群用来执行向用户提供一个或者多个服务的软件应用。这样的应用可以是单进程或者多进程,并且在单个计算机上执行或者例如作为MPI(“消息传递接口”)型或者“共享式存储器”型的分布式应用而分布于多个计算机上。
特别地,本发明实现了例如通过称为中间应用的另一软件应用(例如“中间件”型的应用)在集群内进行对称为主应用或者主要应用的这种应用的运作管理。这一运作管理除可以包括其它操作之外还可以包括如下操作:在主要节点内或者与称为辅节点的其它节点相协作,对这一应用的全部或者一部分进行复制、重新分布、可靠化(reliabilization)或者跟踪或调试。
背景技术
在这一操作管理的背景下,通常有用的是录入主要应用或者它的进程之一的运作,即记录代表这一运作的数据,使得能够重构执行。随同主要应用执行一起,这一数据随后以录入数据的形式来生成并且被发送到一个或者多个辅节点以供存储和备份。
例如为了具体地跟踪和研究主要应用的运作,于是有可能在受控制和受监视的方式下在不久以后或者在很久以后研究或者重构这一运作。
另外作为例子,如果主要应用经历故障、特别是硬件故障,则有可能在辅节点上创建新的备用应用以便替换主要应用所提供的服务。然后可以在已知状态下、例如在先前记录的重启点状态下创建这一备用应用。根据主要应用的录入数据,于是有可能强制备用应用重构直到故障时刻为止主要应用的执行。在这一重构或者重放之后,备用应用在与直到最后事件为止的应用相同的状态下,其录入数据已经在主要节点外部被接收。如果已经录入和发送在故障之前的所有事件直到发生故障为止,则备用应用随后可以进行接管而对用户的服务几乎没有中断或者完全没有中断。
然而目前很多现有应用不具备这样的管理功能,并且修改它们以便向它们添加这些功能将过于复杂和昂贵。
包括在计算机或者主要节点的系统软件中实施这些功能的解决方案呈现出一些严重的缺陷,比如错误风险、在网络内的不稳定或者不兼容以及对于系统软件领域特殊技能的要求。
此外,本发明的发明人提出一种包括由如下中间应用接管这些管理功能的解决方案,该中间应用主要在用户存储器空间中执行并且在系统软件本身内仅需少量修改。
然而,在这类解决方案中,除其它方面之外,就主要应用本身的执行以及所用通信网络而言,录入数据的创建和处理以及它从主要节点传输到辅节点代表了繁重的计算量。在现有技术中,主应用于是经历这样的性能损失:通常不能在开发利用情形下令人满意地使用这一运作管理。
事实上,为了能够以连贯的方式或者甚至完整的方式来表现主要应用的执行,待记录和待传输的事件通常非常之多。另外,大多数这些事件对应于执行起来很快的操作,特别是在主要节点的硬件或者软件资源内部的事件,例如系统调用,该调用请求分配信号标志(semaphore)或者读取存储器中的数据项。
对照而言,对于这些事件中的各事件,录入数据的生成和存储以及传输是时间长得多的操作,特别是对于内部事件更是如此。
事实上,录入各事件就其本身而言是一种需要至少一个并且通常是多个软件操作的过程,各软件操作构成了至少与已录入事件本身相等的负荷和工作时间。根据内部事件的类型和实施方式,对于各事件,该录入使有所增加的负荷或者工作时间增加100至10,000倍。
另外,用于向计算机外部进行传输的硬件和软件协议具有相对于已录入事件的数目而言通常不良的性能,这也是对网络使用的干扰以及主应用的性能瓶颈。
存在某些解决方案,其允许特别是通过不录入非确定型事件来减少待录入的事件数目。
如果事件或者构成该事件的操作、特别是软件操作的执行结果仅取决于在它的初始时刻存在的初始状况,则它可以被限定为确定性的。更特别地,在如这里描述的管理单一操作或者执行或者运作的背景下,如果操作从发起它的进程的观点来看是确定性的,即如果它向这一进程发送的结果仅取决于这一进程的初始状态,则可以将该操作称之为确定性的。类似地,连续一串确定性操作可以将其自身构成为确定性序列。
在运行应用进程时,所执行的很多操作是确定性的,特别是在内部操作之中更是如此。例如,如果数学或者逻辑内部操作仅影响如下这些资源,则它们往往是确定性的,这些资源形成这一进程的初始状态的一部分并且该进程独自就可以修改这些资源。
反言之,向共享式资源应用的一些操作相比于这样的进程而言通常是非确定性的。例如,如下请求可能是非确定性的,该请求针对覆盖与其它进程共享的存储器区的“lock(锁定)”或者共享式信号标志的归属。事实上,其结果,即是否获得这一锁定或者这一归属可能取决于有时已经保留或者还没有保留这一资源的其它进程的状态或者动作。
然而,非确定性事件的重放以及特别是录入仍然构成性能损失,而减少该性能损失可能是有用的。特别地,在运行主应用的同时,录入操作代表了操作节点的工作量,并且可能是由于中间应用的动作而造成性能下降的起因。
发明内容
本发明的一个目的在于克服这些缺陷中的所有或者一些缺陷。
特别地,本发明的目的在于获得:
-减少因内部事件的录入或者处理而生成的工作量;
-减少待传输的录入数据的数量;
-减少非确定性事件的数目,在该非确定性事件中必须存储结果以便能够产生赋予同一结果的重放。
本发明提出一种用于管理非确定性软件操作的方法,该非确定性软件操作是在由至少一个计算机执行的称为受管理的进程的应用进程的单一操作内的程序指令所发起的,在该情况下所述操作的表现在于向所述受管理的进程发送称为实际结果的至少一个结果数据。
这一方法包括如下步骤:
-基于受管理的进程的状态或者如它在所述操作之前所属于的应用的状态来进行称为预测函数的确定性软件处理,以便提供很可能与实际结果相对应并且构成针对所述操作的预测结果的值;
-进行比较测试以确定预测结果的值是否对应于实际结果的值;
-针对所述受管理的操作执行补充管理阶段,这一补充管理视先前测试的结果而定。
本发明因此提出执行对非确定性操作的管理,该管理取决于这些操作是否顺应已知或者可计算的确定性预测,该预测能够被视为一类可再现顺应性网格。因此有可能在操作结果顺应这一网格的情况下减少管理工作量。
这一收益关于录入操作而言特别地敏感,这些操作必须不但被记录于主要节点中而且通常被发送到外界,并且在利用主要应用的过程中也是如此。
本发明由此产生一种待录入的操作或者事件的预测性或者试探性压缩形式,并且可以减少需要整体管理的这些操作或者事件的比例。事实上,如果操作如预测的那样表现,则它发送的结果实质上不再需要被录入,因为可以根据可以在适当的时候重新使用的已知方法在以后找到它的值。
本发明特别地提出管理在已录入进程的执行序列中包括的称为已录入操作的操作,该已录入进程在称为主要节点的计算机中被执行,这一管理以录入数据的形式来记录所述已录入操作,该录入数据实现辅节点所执行的重启进程以重放与已录入操作相对应的称为重放操作的操作,并且这一管理向重启进程发送与已录入操作的结果相对应的结果,
在实际结果与预期结果不对应即非预测操作的情况下,补充管理阶段于是包括存储录入数据,该录入数据包括结果数据,该结果数据代表了用于已录入操作的实际结果的值的结果数据。
因此有可能在非预测结果的情况下在这一录入数据的将来的使用过程中重构该序列的准确执行。
在序列的录入过程中,用以测试操作以确定它们的确定性性质或者非确定性性质的阶段代表了附加的负荷。然而,根据在这一序列内正确预测的某一比例的操作,不言而喻由于不录入所预测的结果而实现的节省可能变得显著地大于由于这一测试而带来的超负荷。
在相反情况下,即就其而言实际结果对应于预期结果的预测操作,本发明实现了避免将来自预测操作的结果的数据存储和/或发送到外界,而这种发送会造成工作量增加。
可选地,有可能提供对录入数据的存储,该录入数据例如以排序号的形式包括用于已录入操作的标识数据。这一标识数据可以保持对这一操作的执行的跟踪以便能够在这一录入数据的将来使用中包括这一操作。
由于预测函数是确定性和已知的,所以可以根据操作的初始状况在重放过程中确定地重新计算结果。如果在重放过程中的结果没有不符合该同一预测,则这一预测的结果可以用来对操作的结果进行“强制”,使得重启进程实际上收到与在录入过程中相同的结果。
根据本发明,可以录入确定性操作而无需存储或者发送操作的结果,这在主要节点的工作量方面是一种节省。
更特别地,该方法可以记录已录入进程操作的称为已录入序列的序列,所述序列包括发送与预测结果不对应的实际结果的称为非预测操作的至少一个操作。这一记录于是包括存储至少一个日志文件,该日志文件使重启进程能够重放与已录入序列操作相对应的操作的称为重放序列的序列。在这一背景下,所述日志文件包括如下数据,该数据代表所述非预测操作的称为已录入结果的实际结果、并且在与所述非预测操作相对应的重放操作完成时可以用来使重启进程包括与所述录入结果相对应的结果。
根据一个实施例,在已录入进程序列的录入过程中,通过递增与至少一个预测和非确定性的操作相对应的标识数据来录入这一预测操作而不在日志(JSem1)内存储如下录入数据,该录入数据代表所述预测和非确定性的已录入操作(EVInD)的实际结果(DR)。
可选地,可以在对非预测操作所进行的补充管理阶段过程中重置递增序列。
用于录入至少一个非预测操作的、在日志中存储的录入数据由此可以包括:
-一方面包括标识数据,该标识数据代表与所述非预测操作相对应的排序数据的值;以及
-另一方面包括结果数据,该结果数据代表所述已录入操作所发送的实际结果。
有利的是,本发明特别地提出在日志中记录至少一个已录入序列,对于构成所述序列内至少一个类型的非确定性内部事件的各已录入操作,这一记录包括如下步骤的迭代重复:
-基于进程或者它的应用在所述操作之前的状态来进行确定性软件处理以提供很可能与实际结果相对应并且构成针对所述操作的预测结果的值;
-进行比较测试以确定预测结果的值是否对应于实际结果的值;
-在非预测结果的情况下,在日志中存储如下录入数据,该录入数据一方面以关联方式包括与在进行中的操作相对应的排序数据的值而在另一方面包括结果数据,该结果数据代表由在进行中的操作向已录入进程发送的实际结果的值。
有利地,只有非预测结果才引起对结果的存储。
根据一种变型,排序数据可以仅在具有预测结果的操作的情况下才被递增而在具有非预测结果的操作过程中被重置。
与录入相并行或者相独立,根据本发明的方法实现了对如下操作的称为重放序列的序列的管理,这些操作形成称为辅节点的计算机中执行的重启进程的一部分。
通过使用与录入的预测函数相同或者相对应的重放预测函数,本发明由此产生无数据丢失的预测性或者试探性压缩/解压缩形式,该形式可以在重放过程中提供与在录入过程中相同的结果以及减少待存储和发送的录入数据的数量。由此可以使用录入数据来以重启进程所重放的操作形式执行对已录入操作的重放。
这一重启进程可以例如从它的一个或者多个可执行文件来自行起动、然后执行。在这一重放的执行过程中,由此每当重放操作的特性要求这样做时重放操作就向它们自己提供结果。
根据本发明的管理由此可以使用录入数据以便在非确定性重放操作的各情况下使重启进程将与在录入过程中返回的结果相对应的称为强制结果的结果纳入考虑之中。
根据本发明,对于在录入时间处的至少一个非预测非确定性操作,补充管理阶段由此包括:
-在录入数据中读取称为已录入结果数据的结果数据,该结果数据代表了与正在重放的操作相对应的在操作的录入过程中返回的结果;
-截获重放操作的结果并且将强制结果而不是源自于重放操作的结果转发到重启进程。
因此,每当重启进程在它的可执行文件内执行如下指令、该指令执行在录入过程中的非预测操作时,补充管理阶段然随后实现对结果的检查或者强制以便使它顺应于录入数据并且由此产生与已录入进程的执行相顺应的重启进程的执行。
另一方面,当在录入过程中已经正确地预测操作的结果时,即使该操作为非确定性的并且它的实际结果不确定,录入数据仍然可以不含结果数据。
对于已经在录入过程中预测过的至少一个非确定性操作,补充管理阶段因此可以包括如下步骤:
-进行与用于录入所述操作的预测函数相对应的称为重放预测函数的确定性软件处理,并且提供针对重放操作的预测结果;
-截获重放操作的结果并且将预测结果作为强制结果而不是源自于重放操作的结果转发到重启进程。
因此有可能即使没有存储在录入过程中已经获得的实际结果也仍可找到该实际结果、并且有可能检查重放结果是否顺应实际结果或者如果不顺应则对该重放结果进行强制。
此外,对于就其而言录入数据不包括已录入结果的各操作,补充管理阶段包括递增代表所述重放操作的排序值。
因此,该递增实现了监视重启进程的进度而不干预它的运行,只要对于维持顺应的运行既没有用也没有必要。因此,“如果没有必要就不会干预”这一事实对于进程或者对于管理重放的应用或者对于执行它们的计算机而言是一种工作节省。
特别地,在序列包括预测操作和非预测操作的情况下,有可能实现如下重放,该重放与已录入进程的执行相对应或甚至与它完全相同,并使用数量减少并且其存储需要较低工作量的录入数据。
根据本发明的方法可以特别地被实施用来管理在受管理的序列内产生至少一个类型的事件的所有操作。
由此有可能执行如下录入或者重放,该录入或者重放代表了进程相对于某些特定项如另一进程、用户或者特定资源而言的所有执行。
另外,这一方法可以用来管理所有如下操作,这些操作被标识为本质上为非确定性或者发送被标识为本质上为非确定性的结果。
在各种版本中,这一试探性优化方法可以用不同方式与其它优化方法相组合。
例如,在只有确定性操作才不被录入的解决方案内,由此有可能通过仅录入其余操作的一部分、即仅录入非确定性和非预测的操作来甚至更多地优化工作量。
更特别地,根据本发明的方法管理所有如下操作,这些操作在受管理的序列内产生在受管理的进程或者它的应用或者执行它们的计算机内部的非确定性事件。
与对外部事件的管理相配合,本发明因此可以管理进程的整个执行,特别地以便在开发利用过程中实现录入、同时限制受管理的应用的任何减缓。
这样的管理如录入或者重放有利地应用于至少一个如下操作,该操作由从可执行文件执行的指令来发起并且包括对在所述可执行文件外部的称为原例程的例程的调用。
根据该方法的一个实施例,为了实现灵活的并且仅略带侵入式的实施方式,所述指令的执行随后产生对称为修改例程的例程而不是所述原例程的调用,这一修改例程产生或者发起对该方法的实施。
修改的例程可以特别地包括至少一个如下指令,该指令在系统软件内被执行并且对至少一个录入或重放软件代理进行调用、保证该方法的实施并且在受管理的进程或者目标进程的计算机用户存储器空间中被执行。
由此有可能例如以如下方式基本上在用户空间内产生对这一管理的实施,该方法是为了最小化在系统软件中的干预并且限制错误风险以及在网络内的不同计算机之间的异质性风险。
具体而言,修改例程包括测试指令,该测试指令检验已调用该测试指令的指令是否是在录入或者重放的背景下执行的,这一测试由此分别影响对录入类型的或者重放类型的管理代理的调用。
因此可以通过相同代理以提高的灵活性,例如对于录入或者重放都通过单个中间应用和/或单个内核模块,来产生根据不同的使用而进行的对管理的实施。
预测函数可以使用不同类型的软件处理,特别是以进程、它的应用或者它们独自就可以修改的资源的状态为基础的软件处理。
因此,在一个特定实施例中,根据本发明的方法使用至少一个如下预测函数,该预测函数包括视先前在受管理的进程的执行过程中发生过的至少一个类型的一个或者多个外部事件的特征而定的确定性软件处理。
根据一个特定特征,根据本发明的方法通过使用第一预测函数来录入至少一个第一操作而通过使用第二预测函数来录入第二操作。
通过使用数个不同预测函数,于是有可能使录入方法适应于环境以便通过针对各操作的重放而使用与用于录入对应操作的预测函数相同的预测函数来优化效率。
根据一个变型,该方法使用通过在多个给定函数内的确定性选择或者组合、特别是根据受管理的操作的类型(例如根据它的性质或者根据所涉及到的资源)而选择的预测函数。在重放过程中,由此可以与在录入过程中做出的选择相同或者相对应地再现对预测函数的这一选择。
根据另一变型,对所用预测函数的选择取决于在录入进程的执行过程中测量或者计算的变量的变化,例如在录入过程中预测函数成功率的变化可以确定这一函数或者它的一些参数的变化。
根据本发明,日志文件于是可以包括如下数据,该数据代表对预测函数的至少一个选择或者对影响这种选择的参数的选择。
在录入过程中存储这一变化的特征和/或时刻于是将实现在重放过程中同一执行点产生同一变化。
与仿真或者重放函数的改进相联系,本发明的另一目的在于改进对应用或者这些进程中至少一个进程的运作管理。
根据本发明的方法由此产生对称为已录入进程的至少一个应用进程的运作管理,并且包括如下步骤:
-录入在所述已录入进程从称为重启点的给定点开始一直到称为中断点的点之间的执行过程中发生的至少一个给定类型的所有事件,并且存储源自于所述录入的日志;
-从在与已录入进程的重启点状态相对应的状态下的重启进程开始,重放来自所述重启进程的所述日志中的所述事件,由此使重启进程达到与已录入进程在中断点处的状态相对应的状态。
特别地,可以捕获并且以重启点数据的形式存储已录入进程在重启点处的状态,该重启点数据用来将重启进程恢复到重启点在向该重启进程应用重放步骤之前的状态。
根据本发明的方法可以特别地用来产生对包括外部事件以及内部事件的一连串事件的重放。本发明由此提出通过将这些外部事件各自注入或者仿真到重启进程中来进行外部事件的重放。在执行重放时跟随各外部事件的内部事件由此响应于紧接在它们之前的外部事件的发生和/或处理而由重启进程主动地来执行。重启进程由此实现响应于外部重放代理所发起的外部事件的发生来重放至少一个已录入的内部事件序列。
利用运作管理函数,本发明的一个目的还在于改进应用运作的至少一部分或者来自这一应用的至少一个进程的调试工具或者分析工具或者再现工具。
运作管理因此可以进行例如与称为“被跟踪的应用”的应用的调试相联系的对这一应用的执行的监视。这一监视随后应用于被跟踪的应用的至少一个进程并且包括如下步骤:
-从被跟踪的应用的给定状态起,录入多个连续和相邻的已录入序列,这些序列构成执行被跟踪的应用时的被研究序列;
-产生受控制的一连串重放步骤,由此产生对一连串已录入序列的受控制的执行,因此根据受控制的节奏来产生对被研究序列的重放。
在运作管理函数内,本发明的一个目的还在于改进用于使应用或者这些进程中至少一个进程的工作可靠化的工具。
可以从应用向它的客户端所提供的服务的观点来看、特别地通过维护该应用的操作的已改进的连续性来获得这样的可靠化。在发生故障时,这一连续性可能是整体上的,即客户端不必重启最少操作以获得同一服务。这样的连续性还可以是部分的,即通过尽可能地减少客户端为了获得同一服务或者这一服务的一部分而将必须重复或者额外实现的操作的数目和/或复杂度。
在这一目的内,本发明提出实施如下运作管理,该运作管理用以使在称为集群的通信多计算机架构的称为操作节点的至少一个主要节点中执行的称为可靠化应用的第一应用的运作可靠化。
这一可靠化包括在称为备用节点的第二集群节点内将称为备用应用的第二应用恢复到与可靠化应用在重启点处的状态相对应的状态。
视实施例而定或者视情形而定,可以在没有任何故障时并且作为预防措施来完成恢复,或者可以在检测到故障之后根据先前存储的数据来执行恢复。
这一可靠化还包括如下步骤:
-录入可靠化应用从重启点起的执行,并且在操作节点外部在至少一个日志文件中存储已录入事件;
-检测在操作节点内的故障;
-使用所述日志文件在备用应用中重放自重启点起在可靠化应用中录入的事件,由此将备用应用恢复到与可靠化应用在最后的已录入事件之后的状态相对应的状态。
本发明还提出如下系统,该系统包括实施这样的管理方法的计算机或者在一起工作并且包括至少一个这样的计算机的计算机网络。
更特别地,本发明提出这样一种使用如下中间件型应用的网络,该中间件型应用实施根据本发明的方法以管理在所述网络内执行的至少一个应用的运作。
本发明特别地适用于如下“中间件”型环境,该“中间件”型环境例如产生分布于一个或者多个网络中的网络和/或应用管理系统。
附图说明
根据绝非限制性的对方法实施例的具体描述以及附图,本发明的其它特征和优点将变得明显,在附图中:
-图1是图示了实施本发明的中间应用的功能架构的符号图;
-图2是概括了用于在操作节点上录入事件的组织的符号图;
-图3是图示了从操作节点录入外部事件并且在辅节点上对其进行备份的操作的符号图;
-图4是图示了从操作节点录入内部事件并且在辅节点上对其进行备份的操作的符号图;
-图4a和图4b图示了对来自内部事件序列的录入数据的聚集式传输的一种机制的两个操作版本;
-图5是图示了在辅节点上在更新重启应用的同时对已录入外部事件的重放运作的符号图;
-图6是图示了在辅节点上在更新重启应用的同时对内部事件的重放运作的符号图;
-图7是在对系统例程的调用过程中使用插入技术将补充指令插入到所述例程的执行中的符号图;
-图8是图示了用于两个并发进程的内部事件重放的进度的时间图,其中利用在系统例程中添加补充指令来获得与在录入过程中相同的进度;
-图8a和图8b图示了为了仅处理非确定性事件而录入和重放内部事件的操作;
-图8c和图8d是分别图示了通过试探性压缩和解压缩对内部录入的优化的示图;
-图9和图10是图示了如下例子的符号图,该例子在操作节点上的数个并发进程中在两个外部事件之间的内部事件的不同调度过程中通过试探性压缩来优化非确定性内部事件的录入;
-图11是图示了在“Unix”型的系统中“读”例程的读取操作的非确定性的符号图;
-图12是图示了通过动态语义改变而变得具有确定性的该同一例程的一个行为的符号图;
-图13和图14是图示了在“Unix”型的系统中“选择”例程和“轮循”例程从操作系统的两个竞争信道而进行的在应用中的数据接收操作的非确定性的符号图;
-图15是图示了通过动态语义改变而变得具有确定性的该同一例程的一个行为的符号图;
-图16是图示了语义变化所用交互的示图。
具体实施方式
图1图示了实施本发明的中间应用的功能架构。
在集群内,AOP主应用如事务应用特别是通过不同形式的数据输入和输出向用户或者客户端提供某一数目的服务。在该集群内,这一应用可以是单任务或者多任务(多进程或者多线程)并且使用某一数目的资源。特别地,这些资源可以是例如形式为工作存储器空间、共享式存储器或者数据文件的数据,或者可以是例如形式为信号标志或者互斥体(mutex)的状态指示符。
在一个或者多个计算机上执行主应用,这些计算机形成称为操作节点OP或者主要节点的节点。在一个或者多个集群节点中的一个或者多个部分中执行称为中间应用INT的运作管理应用。
根据实施例,这一中间应用可以处理在集群内运作的主应用的不同方面。这样的中间应用INT可以特别地与“中间件”型的中间集群管理软件相并行地工作、与这样的中间件相集成或者本身是中间件形式。
通过这里描述的功能,中间应用INT可以特别地用来产生对集群内主应用的全部或者一部分的复制。对主应用的复制可以提供可称为重放应用的另一应用。
特别是与这样的复制相联系的这里描述的功能还允许实施针对主应用的可靠性特征,或者跟踪或研究这一应用以实施“调试”、调节或者开发任务。针对可靠性实施的用途将例如包括作为备份或者替换应用的重启应用。在跟踪或者调试中的用途将例如包括如下文描述的根据已录入事件的减缓或者受控节奏的事件的录入JOP和/或重放RSB。
因此,应用于可靠性特征的实施例在这里仅作为非限制性例子来描述。
在有规律的或者基于事件的、运行将变得可靠的AOP主应用时的不同点(称为重启点或者“检查点”)处,中间应用INT创建或者更新在称为辅节点或者“备用”SB节点的节点上执行的至少一个重启应用ASB。
这一重启应用例如通过一种捕获和恢复应用的复制方法(称为重启方法)来创建或者更新。所述复制方法包括主应用状态的捕获操作CAP、接着是这一状态(即它的进程的状态和它所使用的全部或者部分资源的状态)的恢复操作RES。
在这样的捕获操作CAP过程中,以形成检查点状态EPR的数据的形式来备份AOP主应用的状态。
主应用的一些资源、特别是代表了存储装置如硬盘上的大量数据的数据文件可以立刻被更新成在数个不同存储介质上的数个副本,这些副本构成了在镜像盘或者共享盘上的重启数据文件。在这一情况下,形成检查点状态的数据可以包括构成对这些重启数据文件的引用的信息。
当检查点设置或者复制是基于直接地或者通过引用重放数据文件而包括全部执行环境和主应用资源的捕获状态时,所述检查点或者所述复制可以称为整体性的。
根据检查点状态EPR的数据,中间应用INT可以通过创建或者更新重启应用ASB来实施恢复RES。可以有规律地或者在发起事件时(例如在管理员或者在用于管理集群工作量的机制的请求下)实施所述恢复。这一恢复还可以在借助检测而检测到的操作节点的故障之后来实施,重启应用随后能够用作永久或者非永久备份应用。
如有必要,则中间应用组织将主应用的所有或者部分服务切换到一个或者多个重启应用。为了对于客户端而言透明地进行这一切换, 中间应用可以使用如下插入方法,该方法通过“元进程(metaprocess)”来管理虚拟网络地址并且实施将客户端的连接从主应用迁移到这些重启应用。中间应用还可以使用如下插入方法,该方法通过“元进程”来管理虚拟进程标识(虚拟PID),从而允许与这些重启或者克隆进程的原进程的通信相同地恢复用于这些重启或者克隆进程的通信。
这些技术例如可以是在专利FR 2843210中描述的那些技术。
除了任何故障之外还可以实施在部分或者全部切换之后的恢复以便例如分散主应用的工作量或者允许维护操作节点或者网络的某些单元。
为了使这一故障和/或者切换从客户端的观点来看尽可能地透明,中间应用记录影响主应用数个检查点的所有或者部分事件,并且以一个或者数个“日志”的形式来备份它们。
在从检查点状态完成恢复时,重启应用处于在建立所述检查点时的主应用的状态下。从这一状态开始,中间应用使用自所述检查点起备份过的日志来使重启应用重新执行或者重放自这一检查点起在主应用中已经发生的事件。实施这一重新执行或者重放,使得重启应用达到主应用在最后备份的事件之后这一状态,例如达到紧接在故障之前的状态。
中间应用还可以针对重启应用例如在这些资源自已恢复的检查点起已经有变化时来实施这些资源的虚拟化,以便允许该重启应用运行它的重新执行而不干扰这些资源的实际状态,只要它尚未返回到与所述实际状态相对应的状态。
在将要在操作节点上录入并且将要在辅节点上重放的事件之中,在称为外部事件的事件与称为内部事件的事件之间有区别。
在主应用发生时,外部事件被定义为在所讨论的应用外部。因此,外部事件被定义为在应用中通过从这一应用之外而来(即特别是从它所不控制的硬件或者软件单元而来)的动作或者信息来发起的那些事件。这些外部事件可以采取数据或者信号输入的形式,例如硬件接口输入如键盘或者鼠标,或者经由网络到达并且从外界(比如在客户端-服务器应用的情况下是客户端)而来的数据。最常见地,不能从该应用的环境来推断或者重新创建这些外部事件。这些外部事件由主应用加以录入并且可以由重启应用加以重放。
如果所讨论的应用(有时称为目标应用)并入有在除主要节点以外的节点上执行的单元,则在所述应用中但是在主要节点外部的事件也可以作为外部事件来处理。
内部事件被定义为在主应用内部或者在执行它的节点内部,例如形式为由这一应用的进程所接收并且从也作为该应用的一部分的另一进程而来的数据或者信号输入。这些内部事件可以直接地或者通过软件机制或者在该应用外部但是作为执行它的节点的一部分的代理来接收,例如通过配对应用(partner application)或者操作系统的一部分(比如来自Unix型系统的“进程间通信”(IPC)代理)来接收。这些内部事件可以包括“消息传递事件”或者“套接字”型的接口,该“消息传递事件”例如来自“管道”、“信号队列”或者“消息队列”。这些内部事件还可以包括“共享式存储器存取”事件,例如信号标志或者“互斥体”。
在应用正在运行的同时,内部事件例如相比于外部事件而言特别地多。另外,尤其当录入操作包括网络传输或者在永久介质如硬盘上存储时,特别是与用于录入操作的时间相比,内部事件对应于快速执行或者低延时的操作。例如,录入操作可以代表内部事件持续时间的10至10,000倍的持续时间。
如图2中所示,自检查点起已经发生的事件的录入JOP以与针对外部和内部事件不同的方式来实施并且被分别地备份。
通过网络连接到集群的操作节点OP包括支持系统空间的硬件空间,该系统空间本身支持称为“用户空间”的空间。可以通过参照OSI模型的一个或者多个低层来定义的硬件空间特别地包括用于执行进程、实际存储器和处理器以及通信的硬件设备,比如网卡。通常,很多外部事件以经由网络而传递的通信的形式经由硬件空间来中转。
可以参照OSI模型的一个或者多个中间层来定义的系统空间特别地包括操作系统。这一系统空间包括各种软件机制和代理,这些软件机制和代理管理例如形式为Unix系统中的套接字的从应用经由硬件空间与外界的通信或者管理例如形式为Unix系统中的“管道”或者IPC的在数个应用进程之间的通信。
可以参照OSI模型的一个或者多个最高层来定义的用户空间包括作为由节点执行的如主应用和中间应用之类的各种应用的一部分的进程。在这一用户空间中执行作为如主应用之类的一个或者多个应用的一部分的数个进程P1、P2和Pn。这些进程通过来自系统空间的一个或者多个“套接字”与外部交换信息以及通过来自系统空间的一个或者多个“管道”在它们自己之间交换信息。这些进程中的一些进程还同时以受状态资源(未示出)管理的方式来访问“共享式存储器”资源SHM。
当设置检查点时,中间应用可以起动一个或者多个新日志或者在正在运行的记录中记录“检查点标记”。
应当注意,术语“用户”(特别是在“用户空间”或者内部事件日志(“用户日志”)(稍后描述)的情况下)在这里取“系统空间用户”的意思。这意味着即使用户空间不可直接地为个人或者与使用节点的应用通信并且于是将被定义为“客户端”的计算机所访问,这一用户空间也可为这些应用以及它的操作系统所访问。
在称为“内核日志”(参见图2)的由一个或者多个文件KL组成的日志中备份外部事件。为了实施这一备份,在OSI国际分类的低级层处在代表这些事件的数据到达节点之后读取它。优选地,在被解复用之前并且在被“协议栈”处理之前,在系统空间中、例如在内核中读取这些事件。由于直接地从系统空间内部进行这一录入,所以有可能避免由于对缓冲器的写入以及不必要的上下文改变所造成的性能损失。
图3更特别地图示了特别是当外部事件采取TCP-IP协议消息的形式时录入外部事件的操作。主应用在操作节点OP上被执行并且包括至少一个进程P1。中间应用首先包括“IplogOP”模块,该模块包括在操作节点OP上执行的控制进程CtlOP,其次包括“IPlogSB”模块,该模块包括在辅节点SB上执行的控制进程CtlSB。在这些节点OP和SB中的各节点上,控制进程配置和管理在所讨论的节点的系统空间中执行的软件机制或者代理“disp”(DISPP,DISPS)的操作。
在Unix型系统的情况下,所述“disp”代理特别地包括加载到系统空间中的内核模块。这一内核模块在系统被引导时或者甚至在起动待管理或者待变得可靠的应用之前被动态地加载到内核中。从功能结构的观点来看,例如参照OSI层,在IP层之下、特别是在IP层与视硬件空间而定的“网络设备”层之间插入这一模块。
在根据需要进行发送或者接收的操作下,这一“disp”代理可以在消息文件QOP和QSB中截获和存储从网络接收并且发往TCP层的消息。
在步骤1中,来自客户端、发往进程P1的消息由在操作节点OP的系统空间中的“disp”代理接收,该代理在消息队列QOP中保持它。
在步骤2中,代表接收消息的录入消息由“DISPP”代理从主要节点发送到辅节点SB,其中DISPS代理在接收消息队列QSB中接收它。
操作节点OP可以特别地通过使用与用来与客户端通信的网络设备不同的网络设备、通过分立局域网(LAN)与一个或者多个辅节点SB通信。
这些辅节点中的数个节点还能够根据RFC 1112标准预订“多播”型的地址以便与操作节点OP通信。例如按照RFC 1112的定义(“HostExtensions for IP Multicasting”)(针对IP多播的主扩展),将多播地址用作范围在224.0.0.0与239.255.255.255之间的IP地址,由此允许操作节点仅发送一次同时发往多个辅节点的消息而不会因向网络中的所有地址发送的传输而使网络超负荷。
优选地,从节点OP发送到另一节点SB的录入消息应当以它们的原有形式包含在物理层级接收的所有一个或者多个分组。也就是说,它包含发往主应用的所有数据以及网络数据如以太网、IP和TCP报头。
在步骤3中,辅节点SB将确认消息发送到操作节点OP。
在步骤4中,在操作节点OP上并且一旦已经接收到对应的确认,就从消息队列QOP获取消息并且将该消息发送到TCP层。
在并行步骤4’中,辅节点SB在日志如内核外部事件日志KL中记录消息并且从接收消息队列QSB中取出它。
在步骤5中,在操作节点OP中,主应用的P1进程读取“套接字”单元中的消息,然后对它进行处理以便进行它的操作。
由于主应用在辅节点SB的确认之后才考虑进入消息,所以本发明保证了未录入的消息不能被应用所处理。例如,因此这样的未读消息可以通过TCO协议的重新传输功能来获取。
如果要在内核日志中设置检查点标记,则在辅节点中的控制进程CtlSB就在那里记录代表所述检查点标记的数据。
内部事件的内容直接地取决于局部环境,即在节点内取决于先前外部事件的内容以及取决于在处理器内调度的问题或者管理在节点内并行工作的多个处理器或者计算机的问题。事实上,在多数情况下,只有这些事件的次序才影响应用的后续行为。
中间应用INT被约束为录入这些内部事件的次序而不记下各内部事件的细节或者参数。这一选择由此允许减少将要为这些内部事件的录入JOP而存储的数据量并且由此最小化因这一录入而在操作节点和主应用中引起的性能损失。
在称为“用户日志”的由一个或者多个文件组成的日志(见图2)中备份内部事件。
如图4中所示,主要节点OP和辅节点SB经由硬件和/或软件高速互连(HSI)来通信。所述HSI系统允许在主要节点的OP录入进程PlogOP与辅节点的SB录入进程PlogSB之间的数据传送,而这直接地通过旁路这两个节点的所有或者部分操作系统来实现。可以通过使用现有网络接口控制器如网卡及其控制软件、遵循已知的手段来实施这样的HSI系统。还可以通过与在集群内部的网络的其余部分相并行或者相组合地使用高性能网络设备来实施这样的HSI系统。
由中间应用的录入进程PlogOP在操作节点的OP用户空间中详查和读取内部事件。这一进程随后经由高速连接系统HSI向辅节点的录入进程PlogSB发送代表这些内部事件和/或它们的发生次序的数据。然后在形成“用户日志”的一个或者多个文件中备份这一数据。
如果将要在“用户日志”中设置检查点标记,则辅节点的控制进程PlogSB就在那里记录代表这一检查点标记的数据。
优选地,录入进程PlogOP在内部事件“返回”时、即当它的结果已经产生但是尚未发送到请求它的执行的主应用进程时读取它们。
例如通过截获输入/输出系统调用(例如对“管道的”访问)以及对用以锁定共享式存储器段SHM的操作的响应来完成这一读取。
可以通过在由系统提供并且由应用调用的所有或者部分例程的内容中插入记录指令(“记录探针”)来实施这一截获。如稍后具体说明的,通过使用运用“元进程”的动态插入技术,以附加指令的形式来添加这些记录探针,在如图7中所示原例程代码的结尾处形成结尾部分(epilogue)。
内部事件日志“用户日志”由此包括各自代表内部事件的一连串记录。这些记录可以在单个文件中被录入,并且于是将包括所讨论的资源和/或进程的标识。它们还可以记录于数个文件中,例如针对每个资源或者每个进程或者这二者的每个组合记录一个文件。
对于与给定资源相对应的文件,这些记录中的每一个特别地包括如下字段:
-所讨论的事件在各资源所特有的序列中的序号,该序号随着各新事件或者在所述资源上的操作而递增;
-时间戳信息,例如代表自关于这一资源的最后事件起的逝去时间;
-事件类型,例如针对输入/输出资源(“I/O”)的“读”或者“写”或者针对信号标志的“锁定”或者“解锁”;
-结果,即在输入/输出操作的情况下为一个值或者在“锁定”的情况下为获得独占性访问的一个进程的标识。
这一结果将特别地用来例如在辅节点中所恢复的重启或者备用应用对日志中的事件的重放过程中实施资源虚拟化。所存储的结果随后将构成将被强制作为在重放过程中进行的I/O操作请求之结果的值或者构成在获得“锁定”的任务的情况下的进程的虚拟标识(虚拟ID)。
为了限制由于从操作节点发送录入数据到一个或者多个辅节点而造成的性能损失,聚集对代表数个内部事件的数据的发送是有用的。
为此,中间应用可以使用例如由操作节点OP的称为主要录入进程的录入进程PlogOP实施的数个不同方法的组合。
应当理解,应用的内部变化对外界而言(例如对它的客户端而言)是不重要的,只要这一操作没有发送任何信息到外界。如果日志不包括自已录入主应用所发送的最后的外部消息起已经发生的内部事件,则从检查点和所述日志恢复的重启应用将不会造成它为外界提供的服务的任何中断。
根据第一方式,这一主要录入进程PlogOP如内部录入数据出现的那样但是在异步模式下并且根据传输可用性来发送它而不阻断主应用运作,只要主应用运作不发送外部消息。在主应用接下来发送外部消息时,检测装置向主要录入进程警告这一点,该主要录入进程随后阻断或者挂起这一外部消息的发送并且可能阻断或者挂起主应用的一个或者多个进程的执行。然后维持这一阻断直至所有内部录入数据都已经通过这一异步传输来发送或者直至它已经收到针对所述数据的回执。
根据第二方式,主要录入进程PlogOP在缓冲器或者“高速缓存”中存储代表数个连续内部事件的内部录入数据而不立即将这些数据发送到辅节点的录入进程PlogSB。它仅在这些数据的数目达到设定阈值时或者当应用必须发送称为外部消息的消息到外界(例如发往客户端或者外部进程的数据或者信号)时才发送它们。在主应用接下来发送外部消息的过程中,检测装置向主要录入进程警告这一点,该主要录入进程随后阻断或者挂起这一外部消息的发送并且可能阻断或者挂起主应用的一个或者多个进程的执行。然后维持这一阻断直至主要录入进程已经向辅节点发送高速缓存中的其余录入数据或者直至它已经收到针对这一数据的回执。
在这两种方式下,已经发送外部消息这一事实构成了发出事件,该事件构成了可以称为阻断的一类事件,即该事件类型要求在这一事件的执行之前关闭先前事件的录入。根据实施例,最常见地,除了外部发出事件之外,也可以将其它类型的事件类型选择为阻断。
图4a图示了在主要节点OP外部的传输之前通过聚集用于多个内部事件EVI的录入数据DJ来进行的对事件日志的操作。
在步骤1中,录入进程PlogOP在已录入进程P1的运行过程中检测事件EVI的发生。
在步骤2中,录入进程PlogOP检查所检测的事件EVI是否为必须视为阻断的类型。
在步骤3中,如果事件EVI不是阻断类型,则这一事件的录入产生录入数据项DJ。
在步骤4中,这一录入数据项DJ在等待下一事件的检测之前以构成缓冲器日志JS1Local的有序结构而存储于主要节点OP中。
在阶段5中,如果检测的事件EVI是阻断类型,则录入进程PlogOP实施如下阶段,该阶段关闭先前在缓冲器日志JS1Local中录入的内部事件的运行序列。
这一阶段5包括步骤6,其中挂起已录入进程P1的执行,从而使关闭阶段5令人满意的执行未决。
这一阶段5还包括步骤7,其中主要节点的录入进程PlogOP将缓冲器日志JS1Local的内容发送到辅节点的录入进程PlogSB,该录入进程PlogSB将它存储于与检测的事件EVI有关的日志JSem1中,接着是先前的数据。主要录入进程PlogOP随后继续直接录入所检测的事件EVI,如果这一事件也是内部事件则重启缓冲器序列。
在图4b中所示的变型中,内部事件的缓冲可以通过可能不同于阻断型事件的多种类型的事件来发起。这于是涉及到发起类型的事件。单一类型的事件可以选择为仅阻断类型或者仅发起类型或者兼而有之。
在这一变型中,在检测事件的步骤1之后是步骤b1。在这一步骤b1中,如果检测的事件EVI是被视为发起的类型,则主要录入进程PlogOP检查用于在缓冲器存储器中录入的当前序列SEQC是否在进行中,而如果不是这种情况则发起一个序列SEQC。
在后续步骤b2中,它测试用于在缓冲器存储器中录入的这样的当前序列SEQC对于检测的事件EVI而言是否在进行中。
在步骤b3中,如果没有当前缓冲器序列SEQC对于这一EVI事件而言是活动的,则它的结果作为录入数据项DJ来录入。
在步骤b4中,于在前录入数据项之后,所述录入数据项DJ被发送到辅录入进程PlogSB,该录入进程将它存储在那些在与检测的EVI事件有关的日志文件JSem1中在前的内容之后。主要录入进程PlogOP随后等待新事件的检测。
根据步骤b2,如果当前序列对于检测的事件EVI而言是活动的,则这一事件的录入如图4a中所示那样继续。
当中间应用想要将所有或者一些服务从主应用切换到重启应用时,它通过在脱离检查点状态的辅节点中重启这一重启应用来开始,随后实施自这一在后检验点起录入的事件的重放。
特别地,对于由事件驱动(即因发起事件(外部)而驱动)的主应用,例如事务应用,以对于外部事件和内部事件来说不同的方式来实施恢复重放。
这样的运作对于应用而言意味着它包括至少一个进程,该进程可以保持等待接收外部事件并且在此时通过实施包括内部事件的操作来进行反应。
重放由此包括向应用主动提供已录入的外部事件,以及进行响应于在重放过程中由重启应用自身创建的内部事件而提供已录入答复的被动响应。
图5图示了在构成外部文件或者“内核日志”的一个或者多个文件KL中录入的TCP消息型外部事件的重放RSB的操作。
所述内核日志KL由重放进程PRE使用,该重放进程属于中间应用并且在辅节点SB的用户空间中被执行,以便将先前已录入的TCP消息重新注入到重启应用的进程PB1中。
为了实施这一重新注入,中间应用INT包括或者使用例如以软件机制或者代理“ipfilter”的形式插入于TCP消息接收层中的软件机制或者代理,该软件机制或者代理包括在IP层与TCP层之间的功能内核模块。辅节点还包括用于BL网络的本地环路功能,其中对该功能的访问通过接口来“映射”到系统中,以便可由用户空间进程访问。与在操作系统如Unix中由软件实施的虚拟环回接口相对照,这一环路BL可以特别地包括在硬件空间内的物理设备,这允许它在IP层的底部重新注入数据。
在步骤1中,重放进程PRE读取在“内核日志”KL的文件中录入的消息。
在步骤2中,重放进程PRE将这一消息注入到网络本地环路BL中。
在步骤3中,这一消息由IP层接收,该IP层经由“ipfilter”代理的媒介作用将它发送到TCP层以供处理。
在步骤4中,如果TCP层向网络发送回执,则网络将被“ipfilter”代理过滤或者阻断。
在步骤5中,在已经发送消息到TCP层之后,在已经收到它的回执(如果有的话)之后,“ipfilter”代理向重放进程PRE发送如下信号:该消息确实已经被TCP层接收或者处理。
在步骤6中,重启应用进程PB1从TCP层接收消息,并且实施对该消息中包含的一个或者多个分组的异步读取。
在整个重放过程中,“ipfilter”代理将重启应用与网络相隔离,同时防止所有外部消息一直到达TCP层并且同时防止重启应用所发送的所有消息到达IP层,这些对于这一应用而言是透明地进行的。
在重放应用内,为了实施在两个重放的外部事件之间发生的内部事件的重放,中间应用允许重启应用自行运行,同时为它虚拟化有关资源,由此实施被动重放。重放进程PRI随后检测关于给定资源而言构成内部事件的各操作,由此强制所述资源采取已经被录入的行为,由此向重放应用发送在这一录入过程中为所述事件而存储的结果。
图6至图8图示了在如下情况下内部事件的重放RSB例子,其中该例子包括来自重启应用的两个进程PB1和PB2的操作,该操作请求信号标志SEM1以便获得对共享式资源如共享式存储器区的相互独占性访问。
在辅节点SB上的恢复过程中,这两个进程PB1、PB2基于构成用户日志的文件来实施重放。在它们的重放过程中,重启应用的执行使这些进程中的各进程进行对与在内部事件日志-“用户日志”中包含的日志文件JSEM1相对应的单个信号标志SEM1的调用。
通过使用借助“元进程”的动态插入技术在由系统所提供并且由应用所调用的所有或者部分例程的内容中添加附加指令来实施这些访问操作的检测以及呈现它们的响应。这样的技术例如可以是在专利FR 2843809中描述的技术。特别地,可以在实施来自原例程的功能的代码之前聚集这些指令,并且这些指令由此形成前序程序(prologue),或者在这一代码之后聚集这些指令,并且这些指令形成收尾程序(epilogue)。
图7由此图示了在例程R内插入前序程序和收尾程序,由此给出修改的例程RM。在这一例子中,应当注意,同一修改的例程RM可以用来实施主应用的录入以及还用来实施重启应用的重放。
在应用的可执行文件的执行过程中,进程P执行一行调用例程R(例如来自“POSIX.4”标准的例程“sem-wait”)的代码,该代码请求对给定信号标志的定位以便获得对共享式存储器中给定区域的相互独占性访问。在多线程应用的情况下,这可以包括实现相似作用的指令,即来自“POSIX线程”标准的“pthread_mutex_lock”。
在系统被引导时或者在应用的可执行文件之前加载到系统中的插入代理META截获对系统的原例程R的调用并且将它转发到修改的例程RM。这一修改的例程包括在实施前序程序的指令之后并且在实施收尾程序的指令之前的实施或者调用原例程R-“sem_wait”-的指令。
这些补充指令可以特别地包括来自如下类型的算法:
对于前序程序:
if(replay)check(Jsem1)
对于收尾程序:
if(replay)end_check(Jsem1)
else record(result,Jsem1)
指令“if(replay)”测试如下条件,该条件表明应用是否在实施重放的过程中。
在相反情况(“else”)下,这意味着应用正在正常地被执行并且因此必须视为主应用。收尾程序随后执行函数-“record(result,Jsem1)”-该函数是如先前提到的记录探针并且参与内部事件的录入,同时在日志“Jsem1”中存储结果“result”。
当“sem_wait”例程在使用“Jsem1”日志的重放过程中被重启应用调用时,在实施系统的原“sem_wait”例程之前执行前序程序。
图8代表了时间流程图,该流程图图示了这一修改的例程RM的如下操作,该操作用以实施根据在内部事件日志“用户日志”中包含的JSEM1日志来重放两个进程PB1、PB2。根据所讨论的信号标志SEM特有的递增序列#OP来对在JSEM1日志中录入的各事件进行编号。与这些编号#op中的各编号相关联,JSEM1日志包含在录入过程中已经调用与所述JSEM1相对应的信号标志的进程的标识(PID)。
由于并行执行两个进程PB1和PB2,没有必要以在信号标志的日志JSEM1中存储的次序来进行它们使用“sem_wait”功能对SEM1信号标志的相应调用。
当标识符为“id2”的进程PB2在重放过程中调用SEM1信号标志时,前序程序随后在步骤21中以所述同一进程PB2的名义来执行指令“check(Jsem1)”。这一函数-“check(Jsem1)”-在JSEM1日志中读取与序号OPSEM1的当前值相对应的行,也就是行“#1:id1”。
这一“检查”函数将PIDlog所读取的值或者“id1”与发出调用的PB2进程的标识符或者“id2”进行比较。如果它注意到这些值不同,则这一“检查”函数例如通过在连续循环中重新执行该同一比较步骤2 1来挂起发出调用的PB2进程的执行。
随后,当标识符为“id1”的进程PB1也在重放过程中调用SEM1信号标志时,前序程序也在步骤11中执行“check(Jsem1)”指令,但是这次是以新的PB1调用进程的名义。如果它注意到所述PB1调用进程确实就是其标识符“id1”在日志中被存储于与在活动序列中的当前编号(即值“#1”)相对应的行处的那一进程,则“检查”函数授权继续PB1调用进程的执行。
在步骤12中,修改的例程RM随后实施原例程R即“sem_wait”指令的功能,该原例程随后向它分配SEM1信号标志并且返回PB1调用进程的值“id1”。
在步骤13中,收尾程序随后以PB1调用进程的名义执行“end_check(Jsem1)”指令。所述“end_check”函数随后关闭PB1进程的“sem_wait”调用并且解除对已经处于保持中的PB2进程的执行的阻断。这一操作可以特别地包括递增这一SEM1信号标志的序号OPSEM1,使它移到下一个值“#2”。
在这一情况下,当再次在步骤22中执行PB2进程所调用的“check”函数时,它读取JSEM1日志的下一行“#2:id2”并且让它的PB2调用进程继续它对修改的例程RM的执行。
在步骤23中,修改的例程RM随后实施原例程R或者“sem_wait”指令的函数,该原例程或者指令随后向它分配SEM1信号标志并且返回PB2调用进程的值“id2”。
在步骤24中,收尾程序随后以PB2调用进程的名义执行“end_check(Jsem1)”指令,再次递增SEM1信号标志序列并且使它可用以继续重放。
无论各种重放的进程请求分配SEM1信号标志的次序如何,不言而喻它们只能以在它的JSEM1日志中存储的准确次序并且因此以与在生成这一日志的主应用的运行过程中相同的次序来获得。
由于这些附加指令由在主应用外部的META代理来添加并且添加到操作系统而不对操作系统进行任何改变,所以不言而喻这些录入和重放操作对于主应用而言被透明地和非侵入式地实施而不改变系统的预先存在的单元。
给定大量内部事件,有用的是对录入和/或重放它们的功能进行优化,特别是用以避免会大大减少从前述特征获得的益处的任何性能下降。
在发生于两个外部事件之间的多种类型的内部事件之中,多数内部事件可以分类为确定性的,即仅并入有如下操作,这些操作的结果完全取决于应用在这些操作之前的状态。
另一方面,特别是在多任务操作或者分布于数个节点上的那些操作的过程中,一些内部事件是非确定性类型的,因为它们包括如下操作,这些操作可能提供视应用或者主节点外部的因素而定的结果。
通过仅录入或者重放非确定性类型的内部事件,因此有可能限制操作节点的超负荷,并且由此限制由于将中间应用用于使主应用变得可靠或者管理主应用而引起的性能下降。
如图8a和8b中所示,可以特别是通过针对其中行为不是确定性的内部事件来仅录入结果并且仅在重放时预设置结果来加速录入和重放。
对于所有事件并且特别是内部事件(EVI),如前所述的META插入机制(图7)调用实施了所规定的操作的修改例程RM而不是原例程R。这一修改的例程RM包括如下功能,即能够根据这一事件EVI的发生发起或者通知录入进程PlogOP或者重放进程PRI,并且如有必要则等待它同意继续处理这一事件或者将它移交给已经调用了它的P1或者PB1进程。
无论这涉及到录入还是重放,管理这一事件EVI于是都包括对这一事件的发生的反应步骤,接着是附加的管理步骤GC(图8a、8b),该管理步骤的内容取决于这一内部事件的确定性或者非确定性的性质。
图8a图示了录入内部事件的操作。在通过已录入(图1的JOP)的运行来执行P1进程的同时,执行指令会实施应用于共享式资源如SEM1信号标志的内部事件EVI。
在步骤1中,与待录入的事件EVI相对应的修改例程RM通知或者发起录入进程PlogOP,该进程由此检测这一事件EVI的发生。
在步骤2中,与事件EVI相对应的修改例程RM对SEM1信号标志实施在原例程R中规定的操作并且接收或者计算发往已录入进程P1的结果数据DR。
在步骤3中,录入进程PlogOP递增与检测的事件EVI在P1录入序列中的位置相对应的例如向SEM1信号标志分配的序号SQ。
在步骤4中,所述进程PlogOP进行用以确定检测的内部事件EVI是否为确定性的测试。这一测试可以例如应用于在修改的例程RM的调用过程中从它接收的参数或者应用于与这一调用一起发送的结果数据DR或者应用于先前存储于主要OP节点中的指令或者事件标识。
在步骤5中,如果检测的事件EVI是非确定性的,则PlogOP进程将结果数据DR发送到辅节点的PlogSB录入进程。这存储了与事件EVI相对应的结果数据DR和序号SQ,使得它们关联在与信号标志SEM1相对应的日志文件JSem1中先前已录入事件的结果之后。根据录入条件,在JSem1日志中存储的数据还可以由PlogOP录入进程直接地存储于主要节点中的永久介质上的日志文件中。
在完成用于已录入进程P1的内部事件序列时,JSem1日志包含与用于涉及到序号的事件的序号相关联的由SEM1信号标志向所述P1进程发送的所有结果数据的有序集。
图8b图示了在存储于JSem1日志中并且与SEM1信号标志相对应的事件的由重放进程PRI(见图6)控制的被动重放阶段RSB(图1)过程中在重启进程PB1中用于这一内部事件EVI的重放操作。在PB1进程正在运行的同时并且在来自JSem1日志的事件的重放过程中,执行指令会实施应用于SEM1信号标志的非确定性类型的内部事件EVI。
在步骤1中,与待录入的事件EVI相对应的修改例程RM通知或者发起重放进程PRI,该进程由此检测和识别这一事件的发生。
在步骤2中,与事件EVI相对应的修改例程RM对SEM1信号标志实施在原例程R中规定的操作并且接收或者计算与实际重放结果相对应的结果数据。修改的例程RM随后挂起重启进程PB1的执行并且等待来自重放进程PRI的信号以将这一结果RRJ发送到重启进程PB1。
在步骤3中,重放进程PRI在JSem1日志中读取用于重放的下一未用值RLi以及与它相关联的序号SQi。
在步骤4中,该进程用于与检测的事件EVI在PB1重放序列PB1中的位置相对应的例如向SEM1信号标志分配的递增序号SQ。
在步骤5中,重放进程PRI对当前序号SQ和日志中的读取序号SQi进行测试以确定正在进行的重放事件EVI是否对应于已录入事件。
在预设置步骤7中,如果这些事件相对应,则重放进程PRI将日志中的读取结果RLi发送到修改的例程RM,该例程存储它而不是来自原操作R的结果PRJ。修改的例程RM随后将这一结果RLi返回给重启进程PB1并且让它继续它的执行。
可选地,在预设置步骤7之前是步骤6,其中重放进程PRI从修改的例程RM接收实际重放结果RRJ,并且将它与在录入过程中同一事件的结果相对应的读取结果RLi进行比较。如果所述两个结果RRJ和Rli相对应,则进程直接释放修改的例程,该例程将它的结果返回给重启进程PB1并且让它继续它的执行。
因此不言而喻,可以如实和准确地记录和重放非确定性事件,从而为重启进程PB1确保将与目标进程P1在录入过程中的运行相一致的重放运行。
由于仅录入或者重放某些事件,并且由于用以实施本发明的补充内部操作比用于录入的存储或者传输快得多,所以减少了因中间应用INT的操作而造成的开销。
可选地,当设想原例程R仅记录确定性的事件时,与它相对应的修改例程RM可以不提供对录入或者重放进程的任何调用。类似地,当设想原例程R仅实施非确定性事件时,它的修改例程RM可以包括对录入或者重放进程的系统调用。在录入过程中,因此可以通过收到的呼叫的类型或者甚至通过收到呼叫这一事实来隐式地产生用以测试确定性的性质的步骤4(图8a)。
在给定的内部事件类型可以根据应用的类型或者它的执行状况而为确定性的或者不为确定性的情况下,修改的例程RM还可以在它的前序程序中和/或它的收尾程序中包括评价这一类型的应用或者这些执行状况的指令。
序号SQ的使用还可以是可选的。在这一情况下,录入进程PlogOP(图8a)被约束为记下当事件EVI是非确定性类型时的结果数据量。对于这一部分,重放进程PRI(图8b)被约束为读取下一录入结果RLi,并且认为这是针对被检测为非确定性的下一事件EVI而要强制的结果。
另外,试探性或者预测性的优化方法允许不系统地录入所有内部非确定性事件。可以独自地或者与其它优化方法相结合地实施这一方法。
由于就录入和重放操作而言的成本,特别是关于节点内部操作的成本,如果实施某一数目的附加内部操作允许减少录入操作的数目,则实施这些附加内部操作可能确实是有用的。
这一试探性的优化技术包括通过中间应用来实施试探性压缩,该试探性压缩通过预测结果并且应用于在主应用的操作过程中检测的所有或者部分内部事件来进行操作。
在操作节点中的录入过程中,这一试探性压缩可以例如通过内部录入进程PlogOP来实施。
图8c图示了利用这一试探性压缩CH来录入非确定性事件的功能。
在通过JOP已录入运行来执行P1进程时,执行指令会实施应用于共享式资源如SEM1信号标志的非确定性类型的内部事件EVInD。
在步骤1中,与待录入的事件EVInD相对应的修改例程RMnD通知或者发起录入进程PlogOP,该进程由此检测所述事件EVInD的发生。
在步骤2中,与事件EVInD相对应的修改例程RMnD对SEM1信号标志实施在原例程RnD中设想的操作并且接收或者计算发往录入进程P1的结果数据DR。
在步骤3中,进程PlogOP递增与检测事件EVInD相联系的SEM1资源所对应的录入序号SQ。
有利地,所述序号SQ存储于主要节点OP中的工作存储器中。因此,与发送结果数据到辅节点相比或者与将它存储在永久介质上的日志文件中相比,它的管理表现出很低的开销。
与SEM1信号标志和它的日志JSEM1相关联的序号SQ的这一递增由此在避免结果数据DR的系统存储将表现出的开销同时允许记录对预测函数FH所正确预测的非确定性事件EVInD的传递。
在步骤4中,进程PlogOP实施软件操作FH,该操作包括形式为预测结果RP的对这一内部事件EVInD的结果的预测。优选地,这一预测是由以已录入进程P1或者主应用在这一事件EVInD之前的状态为基础的一个或者多个确定性函数组成的确定性软件进程。
在步骤5中,进程PlogOP将预测结果RP与从检测的事件EVInD的运行RnD输出的实际结果DR进行比较。
在步骤6中,如果这两个结果DR和RP不同,则PlogOP进程将实际结果DR和序号SQ的对应值转发到辅节点进程PlogSB,该辅节点进程通过将它们关联为在与所讨论的资源SEM1相对应的日志文件Jsem1中的下一行来记下它们。
在这一步骤过程中,有可能设想重新发起用于录入所讨论的SEM1资源的序号SQ。在这一情况下,序号SQ代表了自已经录入其结果的最后事件起正确预测的事件数目。
在完成用于已录入进程P1的内部事件序列时,JSem1日志包含SEM1信号标志向所述P1进程发送的并且尚未通过预测函数FH来正确预测的所有结果数据的有序集。
在已经通过使用这样的试探性优化来实施内部事件的录入情况下,中间应用随后当在辅节点中重放时实施试探性解压缩。这一试探性解压缩使用与用于压缩的预测相同的预测并且应用于与在通过试探性压缩进行录入的过程中相同的事件。
图8d因此图示了基于应用于SEM1信号标志的日志JSem1在由内部重放进程PRI(参见图6)控制的重启进程PB1的被动重放中利用这一试探性解压缩DH针对非确定性事件的重放操作。
在来自JSem1日志的事件的重放过程中,执行指令会实施应用于SEM1信号标志的非确定性类型的内部事件EVInD。
在步骤1中,与待重放的事件EVInD相对应的修改例程EMnD通知或者发起重放进程PRI,该进程由此检测和识别这一事件EVInD的发生。
在步骤2中,与事件EVInD相对应的修改例程RMnD对SEM1信号标志实施在原例程RnD中设想的操作并且接收或者计算与实际重放结果RRJ相对应的结果数据。修改的例程RMnD随后挂起重放进程PB1的执行。它随后等待来自重放进程PRI的信号以将所述结果RRJ转发到重启进程P1并且让它继续它的执行。
在步骤3中,进程PRI读取和递增与信号标志SEM1相对应的序号SQ的值。
在步骤4中,内部重放进程PRI将这一序号SQ与未从与这同一资源SEM1相对应的日志文件Jsem1中存储的那些序号中重放的下一序号SQi进行比较。
在步骤5中,如果这些序号SQ和SQi对应,则内部重放进程PRI在这一日志中读取针对这一序号SQi的存储结果RLi,并且存储它作为将要由检测的事件EVInD返回的强制结果RF。内部重放进程PRI随后存储已经重放在日志JSem1中的行SQi所代表的事件这一事实,并且激活这同一日志的下一行SQj以便处理所检测的下一事件。
在这一步骤过程中,有可能设想重新对用于重放所讨论的SEM1资源的序号SQ进行初始化。
在步骤6中,如果这些序号SQ和SQi不对应,则内部重放进程PRI实施软件操作FH,该操作包括形式为预测结果RPJ的与在这一内部事件的录入过程中产生的结果预测相同的结果预测。内部重放进程PRI随后存储这一预测的结果RPJ作为将要由检测的事件EVInD返回的强制结果RF。
在步骤8中,内部重放进程PRI将强制结果RF转发给修改的例程RMnD,该例程将它施加于重启进程PB1而不是内部事件EVInD所返回的实际重放结果RRJ。修改的例程随后让重启进程PB1继续它的执行。
可选地,在这一预设置之前可以是测试步骤7,该步骤用以将这两个结果RRJ和RF进行比较并且如果这些结果对应则避免在重启进程PB1中起作用。
应当注意,在这一预测优化方法中使用的排序数据SQ的标识可以由不同于先前所述变量(图8a和图8b)的变量组成或者与这些参数相联合地加以组织和处理。
因此不言而喻,即使没有录入所有确定性事件的结果,仍然可以如实和准确地记录和重放这些事件。在这一方式下,因此有可能在确保运行与目标进程P1在录入过程中的运行相一致的重启进程PB1d的重放运行的同时优化这些录入和重放操作。
假设在录入操作与节点内部的简单计算操作之间有速度差异,即使所用预测函数没有很高的成功率,但是这一试探性优化技术仍然可以是有用的。如果这一差异很大,则即使小于50%的预测成功率仍然可以允许有用的优化。
这一试探性优化技术还可以使用数个不同的预测函数;提供这些函数是为了用于录入并且随后重放单个事件或者多组内部事件。可以根据应用的状态或者它的环境(例如从知识数据库或者规则开始)来进行对待使用的预测函数的选择。这一变化随后可以存储于中间应用所存储的录入数据中。还可以通过在录入过程中评价这一试探性优化技术的成功率并且通过基于这一成功率的值或者基于它的变化来发起所述函数的改变从而自动自适应地使用该技术。
在这一试探性优化技术中使用的预测函数的一个例子包括基于来自不同客户端的内部事件的次序来预测内部事件的发生次序。
图9和图10图示了参与三个进程ProcA、ProcB、ProcC的外部事件和内部事件的发生,这些进程具有分别标定为“a”、“b”和“c ”的标识符,例如执行分别由三个不同客户端起动的三个任务Ta、Tb、Tc。这些不同任务各自例如包括第一外部事件Ea1、Eb1、Ec1和第二外部事件Ea2、Eb2、Ec2。在这些第一与第二外部事件之间,这些任务各包括发起两个内部非确定性事件。在图9和图10中,用于任务Ta的连续内部事件记作Ia1和Ia2,用于任务Tb的连续内部事件记作Ib1和Ib2,而用于任务Tc的连续内部事件记作Ic1和Ic2。这些内部事件Ia至Ic2可以彼此不同或者甚至涉及到单个确定资源,例如对单个共享式存储器区集合的锁定分配。
在近似并发的任务过程中并且特别是当它们具有相似或者共同的部分和/或具有相似的执行时间时,预测函数包括预测中间内部事件Ia1、Ib1、Ic1的发生次序将与在它们之前的外部事件的发生次序相同。
在主应用正在运行的同时,第一外部事件Ea1、Eb1、Ec1在操作节点OP上的发生次序由中间应用例如记录在内部录入进程PlogOP中。例如,外部事件的这一次序包括与这些外部事件相关联的进程的一连串标识符,或者值序列“a b c”。
在每次检测到关于这一资源的新内部事件时,预测函数做出对这一内部事件的结果的预测,即对将要获得对这一资源的锁定的进程(即刚请求过该资源的进程)的身份的预测。然后将通过将已经获得这一资源的锁定的最后进程的身份与外部事件的这一次序进行比较来计算这一预测结果。
由此,预测函数将得到预测集Pe1至Pe6,各预测以虚线示出而其结果在它的右手端处示出。
图9图示了在这些内部事件遵循外部事件的次序的情况下针对内部事件的每次发生而做出的预测的值。根据外部事件“a b c”的次序以及根据发生过的最后内部事件,预测函数将做出如下预测,该预测形成仅在这六种情况下才显现的值序列“a b c a b c”。在试探性优化的背景下,内部录入进程PlogOP将因此不要求转发针对这些内部事件的录入数据,因为它们已经被预测函数正确地预见。
图10图示了在这些内部事件没有严格地遵循外部事件的次序的情况下针对内部事件的每次发生而做出的预测值,其中用于标识“b”的进程PrB的任务Tb比其它两个任务被更快地执行。根据外部事件“a b c”的次序以及根据发生过的最后内部事件,预测函数将做出如下预测,该预测形成值序列“a b c c a b”。看起来两个预测Pe3和Pe6将显现为错误,这将造成内部录入进程PlogOP在两种场合转发录入数据。这一录入数据因此将包括在完成已经显现为不正确的第三预测Pe3时在传输L1中的值“c”、然后是在完成也已经显现为不正确的第六预测P6时在传输L2中的值“c”。
尽管有这些不正确的预测Pe3和Pe6,但是不言而喻这一试探性优化已经允许内部录入进程PlogOP影响仅两个传输L1和L2而不是在没有该优化时可能已经发生的六个传输。在六个传输之中节省了四个传输表现了基本上比在需要用来实施这一优化技术的内部计算和操作中更大的工作时间,并且因此可以提供特别是操作节点中性能的显著增加。
另外,对于其中操作系统的标准实施会产生非确定性行为的一些内部事件,有可能使用一种借助语义改变的优化技术。这一技术包括修改这些事件在节点中的实施,以便赋予它们以将是确定性的行为。中间应用与在操作节点和一个或者多个辅节点中相同地进行这一修改,这使得三个改变的内部事件的结果可预测。对实施的这一修改将通过一种插入技术来动态地进行,该插入技术通过“元进程”以如下修改的例程RM来取代原事件实施例程R,其中该例程RM针对这一事件来实施修改的行为。用来实施这一修改的技术与用于在前序程序和收尾程序中添加记录探针的上述技术(参见图7)相似,但是可以包括修改用于所修改的例程的中心部分的代码。这一实施修改对于主应用而言是透明地产生的并且没有更改操作系统的预先存在的单元。通过永久地或者至少在确定和存储的执行间隔中在主应用中使用这些修改的例程之一,由此有可能录入主应用的进展而无需存储所述改变的事件的结果。在与用于执行重放应用的间隔相同间隔中使用相同的修改例程由此允许维持主应用的可再现性,同时提高录入和重放的性能。
例如通过进行如下规划来设计这一修改的行为以便符合与原行为相同的规范并且完全与它相兼容:从原例程可能已经发送多个不同结果的给定情形起,修改的例程仅提供可能已经被原例程提供过并且因此为主应用和操作系统所设想到的结果。
这一借助语义变化的优化技术实现了减少非确定性内部事件的数目,其中这些事件的结果必须被录入在操作节点中以能够在重启应用的恢复过程进行重放。
在图16中通过图形图示了不同方的操作和交互的例子。
例如在系统软件中的处理代理AT进行如下操作,该操作将把结果DR转发到进程如已录入进程P1。对于很多操作或者事件、特别是内部事件,所述操作由操作进程TO来实施,该操作进程TO就其性质而言与资源集RDet相比是确定性的(称为决定性的)。
在可由进程P1访问的资源中,一些资源根据对这一进程P1的状态的了解而可以称为可再现资源RRepr。所述可再现资源特别地包括其状态唯一地视它而定的资源。
在处理代理AT的操作中,处理TO操作可以包括关于进程PI的可再现资源RRepr而言是确定性的处理部分TD,例如因为它仅使用来自所述可再现资源的DER数据。
在操作进程TO包括使用了来自在进程P1的可再现资源RRepr中没有包含的SEM1资源的个人数据的另一处理部分的情况下,这一TnD部分的结果并且由此所有TO处理的结果关于调用它的进程P1而言通常不是确定性的。
在这样的情形下,这一语义变化技术可以包括使用管理代理AG来修改处理代理的行为或者它所使用或者产生的数据,以便从这一修改所获得的操作相比于可再现资源RRepr而言是确定性的。
这一管理代理可以使用运作修改处理TMF来修改TO操作进程的内部操作。
它还可以使用从决定性的但是关于进程P1而言不是可再现的(RRepr)资源RDet中输出的输入数据DE来补偿对于所述同一进程P1而言能够构成非确定性源的结果DR的变化。可以通过TC1将输入数据DE修改成经补偿的输入数据DEC或者通过TC2将结果数据DR修改成经补偿的结果数据DRC来进行这样的补偿。
这一管理代理AG还可以根据一个或者多个语义变化参数PCS来选择或者调节它所进行过的修改TMF、TC1、TC2以便优化全局处理AT和AG的效率。为了在录入JOP与重放RSB之间保持可再现,仅按照来自可再现资源RRepr的数据来确定这一语义变化参数PCS的变化或者在录入过程中将它的变化存储于日志UL、KL中并且在重放RSB过程中以同一方式来读取和应用这些变化就足够了。
这一行为变化可以特别地涉及影响对竞争给定资源的数个进程的管理的方面。
图11和图12图示了一个例子,该例子使用这一借助语义变化的优化技术来使如下操作具有确定性,该操作用以通过在Unix型环境中使用“读”例程来读取接收的信息。
在它的标准实施中,由应用发起的“读”例程使用缓冲器存储器B的区域来读取在输入信道ICH中的消息并且将这些消息转发到所述应用。以连续数据的形式在系统中接收消息,随着这些消息的到达并在它们到达时,这些消息被存储于形成输入信道的存储器区域中。根据“读”操作的配置,“读”操作可以使用不同大小的缓冲器,但是这一缓冲器就它的整体而言用于在输入信道中的每次读取。
在这一例子中,应用针对大小为“50”的缓冲器使用一连串“读”操作以接收通过输入信道ICH连续地到达该存储器的三个消息M1、M2、M3。这三个消息代表了分别等于“20”、“30”和“50”的数据量。然而,一方面数据到达输入信道的速度以及另一方面读取操作的速度可能以在录入或者重放阶段不能预测的方式相对于彼此而变化。
图11由此代表了用于使用原“读”例程来读取同样三个消息的两种不同的可能方案。
在第一方案SCA中,仅当来自大小为“20”的第一消息M1的数据已经到达时才进行第一次读取RA1。缓冲器B未被完全地填充,并且该操作返回与内容“M1”和数据大小“20”相对应的结果。然后在第二消息M2独自到达之后进行第二次读取RA2,该读取返回与内容“M2”和数据大小“30”相对应的结果。然后在第三消息M3到达之后进行第三次读取RA3,该读取返回与“内容M3”和数据大小“50”相对应的结果。例如,对于应用所接收的数据的大小,该第一方案A由此返回等于“20、30和50”的三个结果的集合。
在第二方案SCB中,当同样的第一和第二消息M1、M2已经到达时进行第一次读取RB1,该读取返回与内容“M1、M2”和数据大小“50”相对应的结果。然后在第三消息M3到达之后进行第二次读取RB2,该读取返回与内容“M3”和数据大小“50”相对应的结果。对于应用所接收的数据的大小,该第一方案SCA由此返回等于“50、50”的两个结果的集合,这是就读取相同消息而言。
这两个方案因此返回不同结果:对于一个方案是“20、30、50”而对于另一方案是“50、50”。就此而言,实施“读”操作的标准系统例程从用于录入主应用以及用于重放重启应用的应用的观点来看实施了非确定性事件。
针对与图11中相同的情形,图12代表了将通过使用修改的“读M”例程而不是原“读”例程来获得的单个方案ScU。
在这一例子中,修改的例程识别所接收的各消息的实际长度并且在输入信道ICH中仅读取与单个消息相对应的数据,即使缓冲器B未被填充并且在输入信道ICH中仍有数据要读取也是如此。在录入主应用的情况下,修改的例程使用与消息M1、M2、M3的接收相对应的外部事件录入机制(例如IPlogOP模块)来识别这些消息的实际长度。在正在恢复重启应用的同时的重放情况下,修改的例程使用与消息M1、M2、M3的接收相对应的外部事件重放机制(例如IPlogSB模块)来识别这些消息的实际长度。
这两个不同的到达方案SCA、SCB由此在发生就应用所接收的数据的大小而言等于“20、30,50”的三个结果的单个集合时针对读取操作给出单一行为。
类似地,对于缓冲器B的其它大小,可能有产生不同结果集的原“读”例程。
由此,针对缓冲器大小“20”可以获得如下结果,例如“20、20、20、20、20”或者“20、20、10、20、20、10”。
针对缓冲器大小“100”可以获得如下结果,例如“20、30、50”或者“50、50”或者“20、80”或者“100”。
另一方面,对于各缓冲器大小,由此修改的“读M”例程可以仅给出单个结果集。
由此,对于缓冲器大小“20”,获得的结果集将是“20、20、10、20、20、10”。
对于缓冲器大小“100”,获得的结果集将是“20、30、50”。
由此修改的“读M”例程因此针对与这样的读操作相对应的内部事件实施了确定性行为。
图13至15图示了使用这一借助语义变化的优化技术的另一例子,该例子用来使如下应用进程所发起的复用读操作具有确定性,该应用进程实施排队循环并且能够从具体地与多个文件描述符相关联的多个输入/输出(I/O)信道接收数据。这一例子基于在Unix型的环境中对“所选”例程的使用,但是还可以应用于对“轮循”例程的使用。
在这一例子中,由节点操作系统OS接收发往两个不同信道ICH1、ICH2的内容分别等于“a”、“b”和“c”的三个消息M1、M2、M3。
这一例子可以特别地应用于由第一信道ICH1以“流”的形式接收数据以及由第二信道ICH2以TCP型的消息或者分组的形式接收数据。在操作系统OS中,随后接收其后跟随有“流”分组的两个TCP分组作为内容分别等于“a”、“b”和“c”的三个连续消息M1、M2、M3。
当操作系统OS收到这些消息时,操作系统OS根据它的工作量来在与它们的类型相对应的信道ICH1、ICH2中处理和分发这一数据。在应用的执行过程中的给定瞬间,应用调用“选择”例程以针对它可以用来接收消息的不同信道来发起读操作。
在“选择”例程的标准实施中,“选择”例程读取第一信道ICH1中的排队数据,接着是第二信道ICH2中的排队数据,并且立即以它读取它们的次序将这一数据转发到应用。
现在,一方面数据到达操作系统OS的速度、操作系统处理它的速度以及因此它到达输入信道的速度、而另一方面应用执行一连串读操作的速度可能以在录入或者重放阶段不能预测的方式相对于彼此而变化。
在图13中所示的第一方案SCA中,应用在第一实例IA处通过“选择”例程来发起复用读取,因为三个消息已经到达两个输入信道ICH1、ICH2。当“选择”例程读取数据时,它因此首先读取第一信道ICH1中包含的第三消息,接着是第二信道ICH2中的前两个消息M1、M2。“选择”例程随后以读取的次序来转发这一数据,并且读操作由此产生包括数据集“c、a、b”的结果。
在图14中所示的第二方案SCB中,应用在第一实例IB处通过“选择”例程来发起复用读取,因为只有前两个消息已经到达第二输入信道ICH2。当“选择”例程读取数据时,它因此仅读取第二信道ICH2中的前两个消息M1、M2并且以读取的次序或者以集合“a b”的次序将这一数据转发到应用。在下一次读取过程中,在第三消息M3已经到达第一信道ICH1之后,“选择”例程读取这一第三消息并且将它转发到应用。在所述第二方案B中,原“选择”例程的读操作因此产生包括数据集“a b c”的结果。
这两个不同方案SCA、SCB因此返回不同结果:对于一个方案是“c a b”而对于另一方案是“a b c”。就此而言,实施“选择”操作的标准系统例程从用于录入主应用以及用于对重放应用进行重放的应用的观点来看实施了非确定性事件。
对于与图13和图14中相同的情形,图15代表了将通过使用修改的“选择M”例程而不是原“选择”例程来获得的单个结果。
在这一例子中,修改的例程识别消息到达操作系统OS的次序并且以消息到达的次序来读取它们。另外,为了减少模糊性的风险,修改的例程每次仅发送单个文件描述符。修改的例程可以例如通过检查输入信道ICH1、ICH2中的消息内容或者根据录入或者重放数据来获得与消息到达的次序有关的信息。
这两个不同的到达方案SCA、SCB由此在包括等于“a b c”的三个结果的单个集合情况下针对复用读取操作给出单一行为。
通过这样修改对在标准环境下不是确定性的内部事件的行为进行实施的某些例程的操作方法以使它们具有确定性,不言而喻减少了非确定性事件的数目。当在主应用中的录入过程中和在重启应用中的重放过程中同样地应用这一修改时,减少了为了能够在重放完成时获得如下重启应用而必须录入的事件的数目,该重启应用处于与主应用的状态相对应的状态下或者与所述主应用具有令人满意的操作连续性。
因此不言而喻,这一借助语义变化的优化技术可以提高录入操作和重放操作的性能并且由此提高中间应用的性能。
事实上,根据应用这一语义变化技术的例程以及根据对它们所进行的修改的性质,这相比于所述例程的原行为而言可能仅产生很少的性能降低。然而,假设录入操作速度缓慢,则在待录入的操作的数目方面产生的节省可以允许在中间应用的框架内显著提高主应用的整体性能。
在这一说明书中,可以看到中间应用的机制主要由在操作节点或者辅节点的用户空间中执行的进程或者模块来实施。特别地,这意味着如下外部或者内部的录入或者重放进程,在这里在中间应用INT(图1)中通过标记“Plog”(图2)、“IPlogOP”和“IPlogSB”(图3)、“PlogOP”和“PlogSB”(图4)、“PRE”(图5)和“PRI”(图6)、“META”(图7)来标识这些进程。
对照而言,在系统空间中执行的机制首先包括从应用模块来管理的插入模块或者用于添加或者修改函数的那些模块。这特别地意味着在这里通过标记“DISP”(图3)和“ip过滤器”(图5)来标识的模块。还可以根据需要加载或者从应用模块卸载这些内核模块中的某些模块。
中间应用的执行和“寿命”发生在用户空间中这一事实实现了限制与不同节点的操作系统的交互。这一特征特别地提供了在部署和管理上的灵活性、针对操作系统及其可选异质性的某些独立性,限制了类型或者版本不兼容性的风险,并且可以在部署所述中间应用时限制未涉及到的节点在系统空间中的干预或者将这些干预仅限于较低程度。这一针对操作系统的独立性还可以通过避免在系统空间的预先存在的单元中进行过多深入干预以及通过保持相对于这些操作系统的规范和变化而言以及相对于管理它们的组织的策略而言的某些商业和技术独立性来限制开发时间和成本。
可以用不同方式和根据不同组合来实施如上所述的中间应用以便为集群的用户或者管理者提供对其它应用的支持或者管理服务。可以特别地以“中间件”型网络软件产品的形式来获得这样的服务,从而允许在集群中管理、优化或者在可靠性上改进原版本(“既有版本”)的一个或者多个应用,同时提供适应于集群的性质的灵活性或者附加安全性或者故障容限这些功能。
对这样的中间应用的使用可以更特别地采取由这些应用提供给其客户端的安全服务的形式。各应用因此将能够被视为主应用并且根据需要针对它的客户端以重启应用的形式来加以恢复以取代主应用。
由在给定节点的全部或者一部分上执行的应用所提供的服务还可以通过完全地释放它们的原节点来动态地根据需要转移到一个或者多个其它节点。因此,将有可能实施在这一节点上想要的所有硬件或者软件干预,无论这些干预是维护、试验、升级还是更换。
这样的中间应用可以特别地用来实施“中间件”型的环境,特别地,根据它的能力、可用性或者它在网络中的地理情况(例如它相对于它的客户端或者所用数据而言的远程性),该环境包括用于在不同节点之间分布工作量(负荷平衡)的功能、用以优化对不同硬件的使用的功能。
不言而喻,本发明不限于已经描述的例子,并且可以对本发明做出各种修改而不脱离本发明的框架。
Claims (22)
1.一种用于管理非确定性软件操作(EVINd)的方法,所述非确定性软件操作(EVINd)是在执行由至少一个计算机(OP,SB)执行的称为受管理的进程(P1,PB1)的应用进程时由程序指令发起的,所述操作的表现在于向所述受管理的进程发送称为实际结果(DR,RRJ)的至少一个结果数据,
这一方法包括如下步骤:
-基于所述受管理的进程的状态或者如它在所述操作(EVInd)之前所属于的应用(AOP,ASB)的状态来进行称为预测函数(FH)的确定性软件处理,以便提供很可能与所述实际结果相对应并且构成针对所述操作的预测结果(RP)的值;
-进行比较测试以确定所述预测结果(RP)的值是否对应于所述实际结果(DR,RRJ)的值;
-针对所述受管理的操作执行补充管理阶段(CH,DH),这一补充管理视先前测试的结果而定。
2.根据权利要求1所述的方法,其特征在于它管理称为已录入操作(EVInd;图8c)的操作,该操作形成称为主要节点(OP)的计算机中执行的已录入进程(P1)的执行的一部分,这一管理以录入数据的形式来记录所述已录入操作,该录入数据实现辅节点所执行的重启进程以重放与所述已录入操作相对应的称为重放操作的操作,并且这一管理向所述重启进程发送与所述已录入操作的结果相对应的结果,
在实际结果(DR)与所述预测结果(RP)不对应的情况下,所述补充管理阶段(CH)还包括存储录入数据,该录入数据包括结果数据,该结果数据代表了所述已录入操作(EVInD)的所述实际结果(DR)的值,所述操作于是称为非预测操作。
3.根据权利要求1或2所述的方法,其特征在于它管理称为已录入操作(EVInd;图8c)的操作,该操作形成称为主要节点(OP)的计算机中执行的已录入进程(P1)的执行的一部分,这一管理以录入数据的形式来记录所述已录入操作,该录入数据实现辅节点所执行的重启进程以重放与所述已录入操作相对应的称为重放操作的操作,并且这一管理向所述重启进程发送与所述已录入操作的结果相对应的结果,
所述补充管理阶段(CH)还包括计算用于所述已录入操作(EVInD)的标识数据(SQ)。
4.根据权利要求2或3所述的方法,其特征在于它记录所述已录入进程(P1)所执行的操作的称为已录入序列的序列(JOP),所述序列包括发送与所述预测结果(RP)不对应的实际结果(DR)的称为非预测操作的至少一个操作(EVID),这一记录包括存储至少一个日志文件(JSem1),该日志文件使所述重启进程能够重放与所述已录入序列的所述操作相对应的操作的称为重放序列的序列,
所述日志文件包括如下数据,该数据代表所述非预测操作的称为已录入结果(DR)的所述实际结果、并且可用于在与所述非预测操作相对应的重放操作完成时使所述重启进程将与所述已录入结果相对应的结果纳入考虑之中。
5.根据权利要求2至4中任一项所述的方法,其特征在于在已录入进程序列的录入过程中,录入至少一个预测和非确定性的操作而不在所述日志(JSem1)内存储如下录入数据,该录入数据代表所述预测和非确定性的已录入操作(EVInD)的所述实际结果(DR)。
6.根据权利要求5所述的方法,其特征在于对于至少一个非预测操作(EVInD)的录入,在所述日志(JSem1)中存储的所述录入数据包括:
-一个方面包括标识数据,该标识数据代表与所述非预测操作相对应的排序数据(SQ)的值;
-另一方面包括结果数据(DR),该结果数据代表所述已录入操作所发送的所述实际结果。
7.根据权利要求3至6中任一项所述的方法,其特征在于它在日志(JSem1)中记录(JOP)至少一个已录入序列,对于构成所述序列内至少一个类型的非确定性内部事件(EVInd)的各已录入操作,这一记录包括如下步骤的迭代重复:
-基于所述进程(P1)或者它的应用(AOP)在所述操作之前的状态来进行(4)确定性软件处理(FH)以提供很可能与所述实际结果相对应并且构成针对所述操作的预测结果(RP)的值;
-进行比较测试(5)以确定所述预测结果(RP)的值是否对应于所述实际结果(DR)的值;
-在非预测结果的情况下,在所述日志(JSem1)中存储(6)如下录入数据,该录入数据一方面以关联方式包括与在进行中的所述操作相对应的所述排序数据(SQ)的值而另一方面包括结果数据(DR),该结果数据代表由在进行中的所述操作(EVInD)向所述已录入进程发送的所述实际结果的值。
8.根据权利要求1所述的方法,其特征在于它管理如下操作的称为重放序列的序列,所述操作形成在称为辅节点(SB)的计算机中执行的重启进程(PB1)的执行的一部分,这一管理使用所述录入数据(JSem1;图8d)以便在非确定性重放操作的各情况下使所述重启进程将与在录入(JOP)过程中返回的所述结果相对应的称为强制结果(RF)的结果纳入考虑之中,
对于在所述录入的过程中的至少一个非预测非确定性操作(EVInD),所述补充管理阶段(DH)包括:
-在所述录入数据中读取(5)称为已录入结果数据(RLi)的结果数据,该结果数据代表了与正在重放的所述操作(EVInD)相对应的在所述操作的录入过程中返回的所述结果;
-截获所述重放操作的结果(RRJ)并且将所述强制结果(RLi)而不是源自于所述重放操作的结果(RRJ)转发(8)到所述重启进程(PB1)。
9.根据权利要求1至8中任一项所述的方法,其特征在于它管理如下操作的称为重放序列的序列,所述操作形成称为辅节点的计算机中执行的重启进程(PB1)的执行的一部分,这一管理使用所述录入数据(JSem1)以便在非确定性重放操作的各情况下使所述重启进程将与在录入过程中返回的所述结果相对应的称为强制结果(RF)的结果纳入考虑之中,
对于在录入过程中预测过的至少一个非确定性操作,所述补充管理阶段(DH)包括:
-进行(6)与用于录入所述操作的所述预测函数相对应的称为重放预测函数(FH)的确定性软件处理,并且提供针对所述重放操作的预测结果(RP);
-截获所述重放操作的结果(RRJ)并且将所述预测结果(RP)而不是源自于所述重放操作的结果(RRJ)转发(8)到所述重启进程。
10.根据权利要求1、8或9所述的方法,其特征在于它管理如下操作的称为重放序列的序列,所述操作形成称为辅节点的计算机中执行的重启进程(PB1)的执行的一部分,这一管理使用所述录入数据(JSem1)以便在非确定性重放操作的各情况下使所述重启进程将与在录入过程中返回的所述结果相对应的称为强制结果(RF)的结果纳入考虑之中,
至少对于就其而言所述录入数据不包括已录入结果的各操作(EVInD),所述补充管理阶段(DH)包括递增(3)代表所述重放操作的排序值(SQ)。
11.根据权利要求4至10中任一项所述的方法,其特征在于它管理所有如下操作,这些操作被标识为本质上为非确定性或者发送被标识为本质上为非确定性的结果。
12.根据权利要求4至11中任一项所述的方法,其特征在于它管理所有如下操作,这些操作在所述受管理的序列内产生在所述受管理的进程(P1,PB1)或者它的应用(AOP,ASB)或者执行它们的所述计算机(OP,SB)内部的非确定性事件。
13.根据权利要求1至12中任一项所述的方法,其特征在于它管理至少一个如下操作(EVInD),该操作由从可执行文件(EXE;图7)执行的指令来发起并且包括对在所述可执行文件外部的称为原例程(R,RnD)的例程的调用,所述指令的执行对称为修改例程(RM,RMnD)的例程而不是所述原例程进行调用,这一修改例程产生或者发起所述方法的实施。
14.根据权利要求13所述的方法,其特征在于所述修改例程(RMnD)包括至少一个如下指令,该指令在所述系统软件(OPS,SBS)内执行并且对至少一个管理软件代理(PlogOP,PRI)进行调用、管理所述方法的实施并且在用于所述受管理的进程的所述计算机的用户存储器空间(OPU,SBU)中被执行。
15.根据权利要求13或14所述的方法,其特征在于所述修改例程(RMnD)包括测试指令,该测试指令检验已调用该测试指令的指令是否是在录入或者重放的背景下执行的,这一测试由此分别影响对所述录入类型的(PlogOP)或者所述重放类型(PRI)的管理代理的调用。
16.根据权利要求12至15中任一项所述的方法,其特征在于它使用至少一个如下预测函数(FH),该预测函数包括视先前在所述受管理的进程(P1,PB1)的执行过程中发生过的至少一个类型的一个或者多个外部事件的特征而定的确定性软件进程。
17.根据权利要求4至16中任一项所述的方法,其特征在于它通过使用第一预测函数来录入至少一个第一操作而通过使用第二预测函数来录入第二操作。
18.根据权利要求17所述的方法,其特征在于它使用通过在多个给定函数内进行确定性选择或者组合而选择的预测函数(FH)。
19.根据权利要求17或18所述的方法,其特征在于对所用预测函数(FH)的选择取决于在所述已录入进程(P1)的执行过程中测量或者计算的变量的变化。
20.根据权利要求18或19所述的方法,其特征在于所述日志文件(UL,KL,JSem1)包括如下数据,该数据代表了对预测函数(FH)的至少一个选择或者对影响这种选择的参数的选择。
21.根据权利要求2至20中任一项所述的方法,其特征在于它实施对称为已录入进程(P1)的至少一个应用进程的运作管理,并且包括如下步骤:
-录入(JOP)在所述已录入进程从称为重启点的给定点开始一直到称为中断点的点之间的执行过程中发生的至少一个给定类型的所有事件,并且存储源自于所述录入的日志(UL,KL,JSem1);
-从在与所述已录入进程的重启点状态相对应的状态下的重启进程(PB1)开始,重放(RSB)来自所述重启进程的所述日志中的所述事件,由此使所述重启进程达到与所述已录入进程在所述中断点处的状态相对应的状态。
22.根据权利要求21所述的方法,其特征在于捕获(CAP)并且存储所述已录入进程(P1)在所述重启点处的状态作为重启点数据(EPR),该重启点数据用来将所述重启进程(PB1)恢复(RES)到所述重启点在向所述重启进程应用所述重放步骤(RSB)之前的状态。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0500610A FR2881246B1 (fr) | 2005-01-21 | 2005-01-21 | Procede perdictif de gestion, de journalisation ou de rejeu d'operations non deterministes au sein du deroulement d'un processus applicatif |
FR0500610 | 2005-01-21 | ||
PCT/EP2006/050339 WO2006077247A1 (en) | 2005-01-21 | 2006-01-20 | Predictive method for managing, logging or replaying non-deterministic operations within the execution of an application process |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101103337A true CN101103337A (zh) | 2008-01-09 |
CN101103337B CN101103337B (zh) | 2011-11-23 |
Family
ID=34976322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800021054A Expired - Fee Related CN101103337B (zh) | 2005-01-21 | 2006-01-20 | 管理、录入或重放执行应用进程时的非确定性操作的方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US8132190B2 (zh) |
EP (1) | EP1839152B1 (zh) |
JP (1) | JP5258019B2 (zh) |
CN (1) | CN101103337B (zh) |
AT (1) | ATE409908T1 (zh) |
DE (1) | DE602006002957D1 (zh) |
FR (1) | FR2881246B1 (zh) |
WO (1) | WO2006077247A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461521A (zh) * | 2014-11-26 | 2015-03-25 | 北京航空航天大学 | 一种应用程序重放方法及系统 |
CN109964207A (zh) * | 2016-11-11 | 2019-07-02 | 微软技术许可有限责任公司 | 用于时间行程调试和分析的基于高速缓存的跟踪 |
US11907091B2 (en) | 2018-02-16 | 2024-02-20 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches |
US11915028B2 (en) | 2017-04-01 | 2024-02-27 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
US11994974B2 (en) | 2016-10-20 | 2024-05-28 | Microsoft Technology Licensing, Llc | Recording a trace of code execution using reference bits in a processor cache |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2882448B1 (fr) * | 2005-01-21 | 2007-05-04 | Meiosys Soc Par Actions Simpli | Procede de gestion, de journalisation ou de rejeu du deroulement d'un processus applicatif |
US20070174695A1 (en) * | 2006-01-18 | 2007-07-26 | Srinidhi Varadarajan | Log-based rollback-recovery |
US8752065B2 (en) * | 2007-05-31 | 2014-06-10 | Red Hat, Inc. | Rules engine for a persistent message store |
US7788542B2 (en) * | 2007-05-31 | 2010-08-31 | Red Hat, Inc. | Debugging in a distributed system |
US7937497B2 (en) * | 2007-05-31 | 2011-05-03 | Red Hat, Inc. | Apparatus for selectively copying at least portions of messages in a distributed computing system |
US9928071B1 (en) * | 2008-05-02 | 2018-03-27 | Azul Systems, Inc. | Enhanced managed runtime environments that support deterministic record and replay |
JP2010072854A (ja) * | 2008-09-17 | 2010-04-02 | Canon Inc | 情報処理装置の支援装置、支援方法、およびコンピュータプログラム |
US8499297B2 (en) * | 2008-10-28 | 2013-07-30 | Vmware, Inc. | Low overhead fault tolerance through hybrid checkpointing and replay |
US8135912B2 (en) | 2009-05-18 | 2012-03-13 | Hola Networks, Ltd. | System and method of increasing cache size |
US8560604B2 (en) | 2009-10-08 | 2013-10-15 | Hola Networks Ltd. | System and method for providing faster and more efficient data communication |
US8250405B2 (en) * | 2010-05-27 | 2012-08-21 | International Business Machines Corporation | Accelerating recovery in MPI environments |
CN102377586B (zh) * | 2010-08-16 | 2014-12-10 | 研祥智能科技股份有限公司 | 一种网络旁路装置及其处理网络旁路的方法 |
US20120131559A1 (en) * | 2010-11-22 | 2012-05-24 | Microsoft Corporation | Automatic Program Partition For Targeted Replay |
US9740562B2 (en) * | 2010-12-20 | 2017-08-22 | Microsoft Technology Licensing, Llc | Method for checkpointing and restoring program state |
GB2492320B (en) * | 2011-06-21 | 2020-03-25 | Metaswitch Networks Ltd | Process recovery method and system |
US9923787B2 (en) * | 2012-04-27 | 2018-03-20 | International Business Machines Corporation | Network configuration predictive analytics engine |
US9317297B2 (en) | 2012-09-27 | 2016-04-19 | Intel Corporation | Replay execution of instructions in thread chunks in the chunk order recorded during previous execution |
US9129058B2 (en) | 2013-02-19 | 2015-09-08 | Microsoft Technology Licensing, Llc | Application monitoring through continuous record and replay |
US9241044B2 (en) | 2013-08-28 | 2016-01-19 | Hola Networks, Ltd. | System and method for improving internet communication by using intermediate nodes |
US9098359B2 (en) * | 2013-10-10 | 2015-08-04 | Microsoft Technology Licensing, Llc | Durable execution of long running applications |
WO2015061022A1 (en) * | 2013-10-22 | 2015-04-30 | Purde Research Foundation | Debugging non-deterministic embedded systems |
US9135559B1 (en) | 2015-03-20 | 2015-09-15 | TappingStone Inc. | Methods and systems for predictive engine evaluation, tuning, and replay of engine performance |
US10713594B2 (en) | 2015-03-20 | 2020-07-14 | Salesforce.Com, Inc. | Systems, methods, and apparatuses for implementing machine learning model training and deployment with a rollback mechanism |
US9886363B2 (en) * | 2015-03-27 | 2018-02-06 | International Business Machines Corporation | Identification of storage performance shortfalls |
EP3121724A1 (en) * | 2015-07-24 | 2017-01-25 | Thomson Licensing | Method for monitoring a software program and corresponding electronic device, communication system, computer readable program product and computer readable storage medium |
US9858151B1 (en) | 2016-10-03 | 2018-01-02 | International Business Machines Corporation | Replaying processing of a restarted application |
JP6988178B2 (ja) * | 2017-06-14 | 2022-01-05 | 富士通株式会社 | 情報処理装置、ログ管理プログラム及びログ管理方法 |
US11190374B2 (en) | 2017-08-28 | 2021-11-30 | Bright Data Ltd. | System and method for improving content fetching by selecting tunnel devices |
EP3767495B1 (en) | 2017-08-28 | 2023-04-19 | Bright Data Ltd. | Method for improving content fetching by selecting tunnel devices |
EP4053717A3 (en) | 2019-02-25 | 2022-10-26 | Bright Data Ltd. | System and method for url fetching retry mechanism |
EP4027618A1 (en) | 2019-04-02 | 2022-07-13 | Bright Data Ltd. | Managing a non-direct url fetching service |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5363503A (en) * | 1992-01-22 | 1994-11-08 | Unisys Corporation | Fault tolerant computer system with provision for handling external events |
US5802272A (en) * | 1994-12-19 | 1998-09-01 | Digital Equipment Corporation | Method and apparatus for tracing unpredictable execution flows in a trace buffer of a high-speed computer system |
JPH0950365A (ja) * | 1995-08-10 | 1997-02-18 | Oki Electric Ind Co Ltd | 命令履歴の符号化装置 |
GB9601584D0 (en) * | 1996-01-26 | 1996-03-27 | Hewlett Packard Co | Fault-tolerant processing method |
US5978912A (en) * | 1997-03-20 | 1999-11-02 | Phoenix Technologies Limited | Network enhanced BIOS enabling remote management of a computer without a functioning operating system |
US6182086B1 (en) * | 1998-03-02 | 2001-01-30 | Microsoft Corporation | Client-server computer system with application recovery of server applications and client applications |
US6732307B1 (en) * | 1999-10-01 | 2004-05-04 | Hitachi, Ltd. | Apparatus and method for storing trace information |
WO2002099675A1 (en) * | 2001-06-04 | 2002-12-12 | Sentiat Technologies, Inc. | Method and computer system for isolating and interrelating components of an application |
JP3852703B2 (ja) * | 2001-08-29 | 2006-12-06 | アナログ・デバイシズ・インコーポレーテッド | 無線システムにおけるタイミングおよび事象処理の方法および装置 |
US6944788B2 (en) * | 2002-03-12 | 2005-09-13 | Sun Microsystems, Inc. | System and method for enabling failover for an application server cluster |
US6986076B1 (en) * | 2002-05-28 | 2006-01-10 | Unisys Corporation | Proactive method for ensuring availability in a clustered system |
JP4125169B2 (ja) * | 2003-04-02 | 2008-07-30 | キヤノン株式会社 | ログ取得方法 |
US7415597B2 (en) * | 2004-09-08 | 2008-08-19 | Advanced Micro Devices, Inc. | Processor with dependence mechanism to predict whether a load is dependent on older store |
-
2005
- 2005-01-21 FR FR0500610A patent/FR2881246B1/fr not_active Expired - Fee Related
-
2006
- 2006-01-20 EP EP06704584A patent/EP1839152B1/en active Active
- 2006-01-20 AT AT06704584T patent/ATE409908T1/de not_active IP Right Cessation
- 2006-01-20 DE DE602006002957T patent/DE602006002957D1/de active Active
- 2006-01-20 CN CN2006800021054A patent/CN101103337B/zh not_active Expired - Fee Related
- 2006-01-20 WO PCT/EP2006/050339 patent/WO2006077247A1/en active IP Right Grant
- 2006-01-20 JP JP2007551677A patent/JP5258019B2/ja not_active Expired - Fee Related
- 2006-01-20 US US11/813,960 patent/US8132190B2/en not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461521A (zh) * | 2014-11-26 | 2015-03-25 | 北京航空航天大学 | 一种应用程序重放方法及系统 |
CN104461521B (zh) * | 2014-11-26 | 2018-11-13 | 北京航空航天大学 | 一种应用程序重放方法及系统 |
US11994974B2 (en) | 2016-10-20 | 2024-05-28 | Microsoft Technology Licensing, Llc | Recording a trace of code execution using reference bits in a processor cache |
CN109964207A (zh) * | 2016-11-11 | 2019-07-02 | 微软技术许可有限责任公司 | 用于时间行程调试和分析的基于高速缓存的跟踪 |
US11915028B2 (en) | 2017-04-01 | 2024-02-27 | Microsoft Technology Licensing, Llc | Virtual machine execution tracing |
US11907091B2 (en) | 2018-02-16 | 2024-02-20 | Microsoft Technology Licensing, Llc | Trace recording by logging influxes to an upper-layer shared cache, plus cache coherence protocol transitions among lower-layer caches |
Also Published As
Publication number | Publication date |
---|---|
JP2008529112A (ja) | 2008-07-31 |
US20080086730A1 (en) | 2008-04-10 |
DE602006002957D1 (de) | 2008-11-13 |
CN101103337B (zh) | 2011-11-23 |
FR2881246B1 (fr) | 2007-03-23 |
US8132190B2 (en) | 2012-03-06 |
FR2881246A1 (fr) | 2006-07-28 |
EP1839152B1 (en) | 2008-10-01 |
EP1839152A1 (en) | 2007-10-03 |
ATE409908T1 (de) | 2008-10-15 |
JP5258019B2 (ja) | 2013-08-07 |
WO2006077247A1 (en) | 2006-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101103337B (zh) | 管理、录入或重放执行应用进程时的非确定性操作的方法 | |
US8904361B2 (en) | Non-intrusive method for logging of internal events within an application process, and system implementing this method | |
US7613597B2 (en) | Non-intrusive method for simulation or replay of external events related to an application process, and a system implementing said method | |
CN101107598B (zh) | 用于执行计算机上的应用过程的方法和系统 | |
US8539434B2 (en) | Method for the management, logging or replay of the execution of an application process | |
US7568131B2 (en) | Non-intrusive method for logging external events related to an application process, and a system implementing said method | |
US6574749B1 (en) | Reliable distributed shared memory | |
JP5373770B2 (ja) | 分散型、耐障害性、および高可用性を達成するための決定性コンピューティング・システム、方法、およびプログラム・ストレージ・デバイス(分散型、耐障害性、および高可用性のコンピューティング・システム) | |
US7840940B2 (en) | Semantic management method for logging or replaying non-deterministic operations within the execution of an application process | |
US7536587B2 (en) | Method for the acceleration of the transmission of logging data in a multi-computer environment and system using this method | |
CN101107596A (zh) | 在单处理器或多处理器计算机系统中优化多任务应用的存入和重放的方法 | |
Bronevetsky et al. | C 3: A system for automating application-level checkpointing of MPI programs | |
Spector et al. | Camelot: A distributed transaction facility for Mach and the Internet-an interim report | |
JP2021149550A (ja) | ストレージシステムおよびストレージシステムの分析方法 | |
US7533296B2 (en) | Method for optimizing the transmission of logging data in a multi-computer environment and a system implementing this method | |
Naik | Demystifying properties of distributed systems | |
Wang et al. | Fast log replication in highly available data store | |
Chockler et al. | Aquarius: A data-centric approach to corba fault-tolerance | |
Hume et al. | Ningaui: A Linux Cluster for Business. | |
Argile | Distributed processing in decision support systems | |
Diaconescu | Automatic performance optimisation of component-based enterprise systems via redundancy | |
Ayman et al. | Framework for Multi-Task Scheduling in Distributed Systems using Mobil Agent | |
Gilani | MACRM: A Multi-agent Cluster Resource Management system | |
Stankovic et al. | OVERVIEW OF THE CARAT PROJECT | |
Beck et al. | Event Filter Summary Document |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20111123 Termination date: 20190120 |