CN103631648A - 一种任务处理方法及*** - Google Patents
一种任务处理方法及*** Download PDFInfo
- Publication number
- CN103631648A CN103631648A CN201210295952.1A CN201210295952A CN103631648A CN 103631648 A CN103631648 A CN 103631648A CN 201210295952 A CN201210295952 A CN 201210295952A CN 103631648 A CN103631648 A CN 103631648A
- Authority
- CN
- China
- Prior art keywords
- task
- address information
- memory address
- tasks carrying
- described task
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种任务处理方法及***,可以使用扩展指令获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息并根据这些地址信息对任务进行调度处理或内存优化处理。由于并行任务执行过程中的效率受限于这些地址信息,本发明通过对这些地址信息进行调度处理或内存优化处理,可以有效提高任务执行的效率,缩短任务执行的时间。
Description
技术领域
本发明涉及任务处理技术领域,特别是涉及一种任务处理方法及***。
背景技术
机群***是互相连接的多个独立计算机(又称为计算节点)的集合,这些计算机可以是单机或多处理器***,每个结点都有自己的存储器、I/O设备和操作***。机群***对用户和应用来说是一个单一的***,即呈现单一***映像,它可以提供低价高效的高性能环境和快速可靠的服务。
为使机群***呈现单一***映像,机群***中所有计算节点的存储空间在是全局编址的,通过相应的一致性模型和一致性协议来保证和维护各个节点地址空间的一致性。
可以采用分布式共享存储(DSM,Distributed Shared Memory)的方式共享内存,将各个计算节点的内存进行共享,以增大内存空间,但这也带来了以下问题:
由于一个任务执行中会用到多个数据,而这多个数据一般是按顺序放在内存地址中的,因此为了提高数据的读取速度,一般采用内存页面的方式来对数据进行读写,一个页中包含多个数据。机群***具有多个计算节点,因此可以并行执行多个任务。当第一任务和第二任务需要同时访问同一内存页面中不同的数据时,虽然第一任务和第二任务所访问的内存地址不同,但现有的任务处理方法也会让其中的一个任务无效,等待另一个任务执行完毕且根据执行结果将该内存页面中的数据更新后,再执行之前无效的任务,这无疑降低了任务的执行效率。
发明内容
为解决上述技术问题,本发明实施例提供一种任务处理方法及***,以实现提高任务执行效率的目的,技术方案如下:
第一方面,本发明实施例提供了一种任务处理方法,包括:
使用第一扩展指令创建任务并使用所述第一扩展指令获得所述任务执行所需的内存地址信息,其中,所述任务执行所需的内存地址信息包括:所述任务所需访问的堆地址信息、所述任务所需访问的栈地址信息和所述任务中待执行指令的地址信息;
根据所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
在第一方面的第一种可能的实现方式中,所述任务执行所需的内存地址信息还包括:
所述任务需同步的全局变量信息。
结合第一方面,或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,本发明实施例提供的一种任务处理方法还包括:
使用第二扩展指令结束所述任务并使用所述第二扩展指令获得所述任务的执行结束信息,其中,所述任务的执行结束信息包括:所述任务正常结束的信息和所述任务异常结束的信息;
根据所述第二扩展指令获得的所述任务的执行结束信息对所述任务占用的资源进行释放处理。
在第一方面的第三种可能的实现方式中,根据所述任务执行所需的内存地址信息对所述任务进行调度处理,包括:
对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
结合第一方面的第一种可能的实现方式,在第一方面的第四种可能的实现方式中,根据所述任务执行所需的内存地址信息对所述任务进行调度处理,包括:
等待所述需同步的全局变量信息的内容更新后,对所述任务需访问的堆地址信息创建快照并初始化任务执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
结合第一方面,或第一方面的第一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理,包括:
将所述任务执行所需的内存地址信息反馈给编译器,以使所述编译器重新为所述任务分配内存地址。
结合第一方面的第二种可能的实现方式,在第一方面的第六种可能的实现方式中,所述根据所述第二扩展指令获得的所述任务的执行结束信息对所述任务占用的资源进行释放处理,包括:
判断所述任务为正常结束还是异常结束,如果为正常结束,则提交所述任务更新后的全局变量信息,释放所述任务所占用资源,删除所述任务创建的快照;如果为异常结束,则释放所述任务所占用的资源,删除所述任务创建的快照。
结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,在所述任务为异常结束的情况下,释放所述任务所占用的资源,删除所述快照后,还包括:
重新执行所述根据所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理的步骤。
第二方面,本发明实施例提供了一种任务处理***,包括:第一获取模块和任务调度模块,
所述第一获取模块使用第一扩展指令创建任务并使用所述第一扩展指令获得所述任务执行所需的内存地址信息,发送至所述任务调度模块中,其中,所述任务执行所需的内存地址信息包括:所述任务所需访问的堆地址信息、所述任务所需访问的栈地址信息和所述任务中待执行指令的地址信息;
所述任务调度模块根据第一获取模块发送的所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
在第二方面的第一种可能的实现方式中,所述任务执行所需的内存地址信息还包括:
所述任务需同步的全局变量信息。
结合第二方面,或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,本发明实施例提供的一种任务处理***还包括:执行结束信息获取模块和任务结束处理模块,
所述执行结束信息获取模块使用第二扩展指令结束所述任务并使用所述第二扩展指令获得所述任务的执行结束信息并发送至所述任务结束处理模块中,其中,所述任务的执行结束信息包括:所述任务正常结束的信息和所述任务异常结束的信息;
所述任务结束处理模块根据执行结束信息获取模块发送的所述任务的执行结束信息对所述任务占用的资源进行释放处理。
在第二方面的第三种可能的实现方式中,所述任务调度模块包括:第一调度子模块,
所述第一调度子模块对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
结合第二方面的第一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述任务调度模块包括:第二调度子模块,
所述第二调度子模块等待所述需同步的全局变量信息的内容更新后,对所述任务需访问的堆地址信息创建快照并初始化任务执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
结合第二方面,或第二方面的第一种可能的实现方式,在第二方面的第五种可能的实现方式中,所述任务调度模块包括:地址信息发送子模块,
所述地址信息发送子模块将所述任务执行所需的内存地址信息反馈给编译器,以使所述编译器重新为所述任务分配内存地址。
结合第二方面的第二种可能的实现方式,在第二方面的第六种可能的实现方式中,所述任务结束处理模块,包括:结束判断子模块、异常结束处理子模块和正常结束处理子模块,
所述结束判断子模块结束所述任务并判断所述任务为正常结束还是异常结束,在所述任务异常结束时,触发所述异常结束处理子模块,在所述任务正常结束的情况下,触发所述正常结束处理子模块;
所述异常结束处理子模块,用于释放所述任务所占用的资源,删除所述任务创建的快照;
所述正常结束处理子模块,用于提交更新后的全局变量信息,释放所述任务所占用的资源,删除所述任务创建的快照。
结合第二方面的第六种可能的实现方式,在第二方面的第七种可能的实现方式中,本发明实施例提供的一种任务处理***还包括:重新执行模块,用于在所述异常结束处理子模块释放所述任务所占用的资源,删除所述快照后,重新触发所述任务调度模块。
通过应用以上技术方案,本发明实施例提供的一种任务处理方法及***,可以使用扩展指令获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息并根据这些地址信息对任务进行调度处理或内存优化处理。由于并行任务执行过程中的效率受限于这些地址信息,本发明通过对这些地址信息进行调度处理或内存优化处理,可以有效提高任务执行的效率,缩短任务执行的时间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种任务处理方法的流程示意图;
图2为本发明实施例提供的另一种任务处理方法的流程示意图;
图3为本发明实施例提供的应用程序的执行示意图;
图4为本发明实施例提供的另一种任务处理方法的流程示意图;
图5为本发明实施例提供的另一种任务处理方法的流程示意图;
图6为本发明实施例提供的另一种任务处理方法的流程示意图;
图7为本发明实施例提供的一种任务处理***的结构示意图;
图8为本发明实施例提供的另一种任务处理***的结构示意图;
图9为本发明实施例提供的另一种任务处理***的结构示意图;
图10为本发明实施例提供的另一种任务处理***的结构示意图;
图11为本发明实施例提供的另一种任务处理***的结构示意图;
图12为本发明实施例提供的另一种任务处理***的结构示意图;
图13为本发明实施例提供的另一种任务处理***的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
首先对可以实施本发明的一种构架进行说明,可以理解的是,该构架仅仅是可以实施本发明所提供方案的多个构架中的一种,本发明并不限定具体的实施构架。
本发明可以在机群***中实施,机群***是互相连接的多个独立计算机(又称为计算节点)的集合,这些计算机可以是单机或多处理器***,每个结点都有自己的存储器、I/O设备和操作***。机群***对用户和应用来说是一个单一的***,即呈现单一***映像,它可以提供低价高效的高性能环境和快速可靠的服务。为使机群***呈现单一***映像,机群***中所有计算节点的存储空间在逻辑上是全局编址的,通过相应的一致性模型和一致性协议来保证和维护各个节点地址空间的一致性。当然本发明还可以在其他架构中实施,如云***。
如图1所示,本发明实施例提供的一种任务处理方法,可以包括:
S100、使用第一扩展指令创建任务并使用该第一扩展指令获得所述任务执行所需的内存地址信息,其中,所述任务执行所需的内存地址信息包括:所述任务所需访问的堆地址信息、所述任务所需访问的栈地址信息和所述任务中待执行指令的地址信息;
其中,任务执行所需的内存地址信息还可以包括:所述任务需同步的全局变量信息。本领域技术人员可以理解的是,由于仅有部分任务携带有需同步的全局变量信息,因此第一扩展指令可以仅获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息。
在实际应用中,还可以使用第一扩展指令获得其他信息,如文件描述句柄信息,本发明在此不做限定。
可以理解的是,在创建任务时就使用扩展指令获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息可以简化流程,便于任务调度器基于这些信息进行合理的调度或使得编译器基于这些信息对任务重新分配内存地址。
其中,栈地址信息可以包括栈的起始位置和栈的大小。栈地址是各计算节点的私有地址,各计算节点对栈地址的数据修改操作对全局地址是不可见的。堆地址信息可以包括堆的起始位置和堆的大小,堆内存储的信息是全局共享的,对堆内存储数据的修改是对全局可见的。待执行指令的地址信息指明了新创建的任务需要执行的指令流的入口地址信息。需同步的全局变量信息包含了和其他任务进行同步的变量地址信息。
其中,堆地址信息可以为堆地址,栈地址信息可以为栈地址。
在实际应用中,第一扩展指令可以作为扩展的基本指令加入到基本指令集中。可以理解的是,指令集是计算机能够执行的指令的集合,它是计算机资源的良好的抽象。基本指令是在各种任务执行过程中所经常用到的一些指令,如mov、add、or等。如表1所示,为一种基本指令集:
表1 基本指令集表
其中,mov为数据传送类指令,add、sub、mul、div、and、or和xor为运算类指令,br为程序控制类指令。使用表1中列出的基本指令即可实现大多数的计算应用。为了支持机群环境中任务的并行调度和管理,本发明中引入了与任务相关的指令:第一扩展指令。在实际应用中,可以把第一扩展指
令也加入到基本指令集中。具体的,第一扩展指令可以如表2所示:
表2 第一扩展指令操作数表
当任务执行所需的内存地址信息也包括任务需同步的全局变量信息时,第一扩展指令可以如表3所示:
表3 第一扩展指令操作数表
其中,如表2及表3所示,根据参数m1(栈地址)可以获得栈地址信息,根据参数m2(堆地址)可以获得堆地址信息,根据参数m3(同步全局变量)可以获得任务需同步的全局变量信息,根据参数moffs*(第一条指令地址)可以获得任务中待执行指令的地址信息。可以理解的是,表2及表3中使用newr对第一扩展指令进行了命名,在本发明提供的其他实施例中,还可以使用其他名称对第一扩展指令进行命名。
S200、根据所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
可以理解的是,在获得以上信息以后,可以对任务进行调度处理或内存优化处理。具体的,可以根据以上信息选择处于空闲状态的计算节点执行该任务,可以选择距离该任务所需访问内存地址所对应的物理内存地址相近的计算节点执行该任务,也可以使得编译器根据以上信息对重新分配该任务所需访问的内存地址以对所需访问的内存地址进行优化。
举例来说:在机群***中,为了提高***运行效率,往往需要并行执行多个任务,将这多个任务分配给不同的计算节点。为了简化对机群***内存的管理,一般情况下使用“页”对机群***的虚拟内存进行划分,划分出多个虚拟内存页面,每个虚拟内存页面中都包含有多个连续的虚拟内存地址。可以理解的是,为了可以访问到所需访问的物理地址,还需要提供虚拟内存地址与物理地址之间的对应关系。由于不同任务执行过程中需要访问的虚拟内存地址不定,这也带来了并行任务执行过程中可能存在至少两个并行任务需要访问同一虚拟内存页面中不同的虚拟内存地址的情况。当出现这种情况时,传统的任务处理方法是仅执行其中的一个任务,而让其他任务等待,这种方法无疑降低了机群***的效率。而本发明可以在获得任务执行所需的内存地址信息后,可以根据所述任务执行所需的内存地址信息对任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
其中,任务调度处理的具体方式可以为:对并行任务所需访问的同一个虚拟内存页面进行快照处理。当仅有两个并行任务访问同一虚拟内存页面时,可以对该虚拟内存页面进行一次快照处理,将该虚拟内存页面复制到不同于该虚拟内存页面的其他空闲虚拟内存地址中。这样,这两个并行任务就可以分别访问原始的虚拟内存页面和快照获得的虚拟内存页面,不用再进行等待。
当然,还可以有其他的调度处理方式,如:重新整理任务的执行顺序,以使并行执行的多个任务执行时不再涉及相同的内存页面。举例来说,假设第一任务、第二任务首先并行执行,然后第三任务和第四任务并行执行,第一任务和第二任务都需要访问第一内存页面中的内存地址,第三任务和第四任务都需要访问第二内存页面中的内存地址。本发明可以控制第一任务和第三任务并行执行,第二任务和第四任务并行执行,这样在以上四个任务并行执行过程中就不会出现并行任务访问相同内存地址的情况。
另一种任务调度处理方式是,选择距离任务所需访问内存地址所对应的物理内存地址相近的计算节点执行该任务。可以理解的是,计算节点访问距离自己较近物理内存地址可以在更短的访问路径上完成数据访问,从而缩短读取时间,增加任务的执行速度。在处理多个任务时,如果多个任务所需访问的虚拟内存地址对应的物理内存地址都距离某计算节点较近,则可以选择该计算节点执行这多个任务,可以进一步加快任务的执行效率。
因此,根据所述任务执行所需的内存地址信息对所述任务进行调度处理,可以包括:对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
可以理解的是,对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文是任务被执行前的准备步骤。
其中,根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理,可以包括:将所述任务执行所需的内存地址信息反馈给编译器,以使所述编译器重新为所述任务分配内存地址。
例如,编译器为A任务分配了虚拟内存地址0001到0010,为B任务分配了虚拟地址0011到0020。假设一个虚拟内存页面中包括有1024个虚拟内存地址,那么从0000开始,到1023结束,为一个虚拟内存页面。从1024开始,到2047结束,为另一个虚拟内存页面。本发明在获得任务A和任务B执行所需的内存地址信息后,就可以得知这两个任务所需访问的虚拟内存地址位于同一个虚拟内存页面中。本发明还可以将以上信息反馈给编译器,使编译器重新为A任务和/或B任务分配内存地址。
分配的方法有多种,如,仅重新分配A任务所需访问的虚拟内存地址:为A任务分配了虚拟内存地址1025到1034。这样,A任务和B任务所需访问的内存地址就位于不同的虚拟内存页面中,A任务和B任务就可以同时执行,增加了任务执行的效率。再如,仅重新分配B任务所需访问的虚拟内存地址:为B任务分配了虚拟内存地址1035到1044。这样,A任务和B任务所需访问的内存地址就位于不同的虚拟内存页面中,A任务和B任务就可以同时执行。再如,分别对A任务所需访问的虚拟内存地址和B任务所需访问的虚拟内存地址进行重新分配:为A任务分配了虚拟内存地址0125到0134,为B任务分配了虚拟内存地址1035到1044。这样,A任务和B任务所需访问的内存地址就位于不同的虚拟内存页面中,A任务和B任务同样可以同时执行。
本发明实施例提供的一种任务处理方法,可以使用扩展指令获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息并根据这些地址信息对任务进行调度处理或内存优化处理。由于并行任务执行过程中的效率受限于这些地址信息,本发明通过对这些地址信息进行调度处理或内存优化处理,可以有效提高任务执行的效率,缩短任务执行的时间。
如图2所示,在本发明实施例提供的另一种任务处理方法中,步骤S200,可以包括:
S210、判断所述任务是否带有需同步的全局变量信息,如果是,执行步骤S230,如果否,则执行步骤S220;
可以理解的是,可以根据第一扩展指令获得的同步全局变量信息判断是否带有需同步的全局变量信息。具体的,当任务不带有需同步的全局变量信息时,第一扩展指令中任务需同步的全局变量信息所对应的参数可以为空。也即:可以根据需同步的全局变量信息所对应的参数返回值是否为空来判断该任务是否携带有需同步的全局变量信息。
S220、对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务;
可以理解的是,对所述任务所需访问的堆地址信息创建快照可以利用程序执行的局部性原理,任务对所需访问的堆地址内的信息进行复制,保存到本地内存,减少内存一致性维护的开销。由于任务执行上下文中的堆信息是全局共享的,因此任务通过修改堆信息就可以将任务执行的结果通知给***的其他任务以实现任务间的数据交互。因此,可以仅对堆地址信息创建快照,而对计算节点私有的栈地址信息则不创建快照。
其中,步骤S220可以选择处于空闲状态的计算节点执行该任务。本领域技术人员可以理解的是,如图3所示,任务在执行过程中,需要首先在编译器001上编译为虚拟指令代码,为其分配虚拟内存地址,然后在虚拟机或虚拟环境中经指令编译器002翻译为目标指令,任务调度单元003(也即任务调度器)将目标指令发送到相应的执行模块005中进行执行。其中,执行模块005可以与具体的硬件平台006相对应。
可以理解的是,将虚拟指令代码翻译为与特定硬件环境相关的目标指令可以保证应用程序和虚拟指令代码与平台无关,具有很好的适用性和可移植性。任务调度单元003可以选择空闲的执行模块005(计算节点)来执行目标指令。具体的,可以使用静态翻译或动态翻译的方式对虚拟指令代码进行翻译。
在实际应用中,任务调度单元003可以将指令翻译器002翻译得到的目标指令分发到多个处于空闲状态的执行单元005,这多个处于空闲状态的执行单元005分别执行目标指令中的一段代码(某子任务)。也即,经过第一扩展指令和任务调度单元的调度,多个处于空闲状态的计算节点可以分别执行目标指令中的一段代码以完成多个子任务并最终完成某一任务。本实施例中,指令的执行可以是串行的,默认情况下会执行到最后一条指令。因此,可以使用特定的机制界定代码段的结束,即标明任务的结束。在本发明中,可以使用第二扩展指令来指示任务的结束。
S230、等待所述需同步的全局变量信息的内容更新后,对所述任务需访问的堆地址信息创建快照并初始化任务执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
本领域技术人员可以理解的是,在任务执行所需的内存地址信息包括任务需同步的全局变量信息的情况下,需首先等待该需同步的全局变量信息内容更新后,再执行后续处理。
可以理解的是,在多个任务顺序执行的过程中,在后执行的任务可能需要前面所执行任务的执行结果。因此,当第一任务需要第二任务的执行结果时,可以等待第二任务的执行结果提交后(也即等待所需同步的全局变量信息内容更新后),再启动第一任务的执行。具体的,可以使用标志位控制任务的运行。
如图4所示,本发明实施例提供的另一种任务处理方法中,还可以包括:
S300、使用第二扩展指令结束所述任务并使用该第二扩展指令获得所述任务的执行结束信息,其中,所述任务的执行结束信息包括:所述任务正常结束的信息和所述任务异常结束的信息;
具体的,第二扩展指令可以如表4所示:
表4 第二扩展指令操作数表
如表4所示,第二扩展指令为exit,执行结束信息为opt。当然,第二扩展指令和执行结束信息还可以有其他命名,本发明在此不做限定。
可以理解的是,任务执行结束至少会有两种情况:异常结束和正常结束。在任务执行过程中,如果出现某些错误,任务执行就可能出现中断、报错等情况,从而导致任务异常结束。如果任务执行过程中没有出现问题,则任务会正常结束。
S400、根据所述第二扩展指令获得的所述任务的执行结束信息对所述任务所占用的资源进行释放处理。
可以理解的是,在使用第二扩展指令获得任务的执行结束信息后就可以确定任务是否为正常结束,如果正常结束则可以提交该任务更新后的全局变量信息,释放该任务所占用的计算节点、内存等资源并删除任务执行过程中所创建的快照。这样该任务所占用的计算节点、内存等资源就可以继续执行其他任务,同时,删除不再使用的快照可以释放保存该快照的本地内存。本领域技术人员可以理解的是,当任务正常结束后,提交该任务更新后的全局变量信息(也即该任务的执行结果),可以保证其他使用该任务执行结果的后续任务正常执行。
而当任务异常结束时,则说明该任务没有成功完成,在这种情况下,可能是由于执行该任务的计算节点造成的,当然也可能是其他原因。本发明在任务异常结束时,可以释放该任务所占用的资源并删除该任务执行过程中创建的快照,这样同样可以释放该任务所占用的资源,使这些资源可以继续执行其他任务。删除快照可以释放保存该快照的本地内存。在任务异常结束后,可以由应用程序判断是否需要重新创建任务来执行该任务,也可以由任务调度器来重新创建并执行该任务。
本发明提供的一种任务处理方法,还可以使用第二扩展指令结束任务并获得任务的执行结束信息,从而对任务进行结束处理。由于可以根据任务的执行结束信息有区别的对任务进行不同的结束处理,因此本发明可以优化任务的结束处理,使得任务的执行过程更加智能化。
如图5所示,在本发明实施例提供的另一种任务处理方法中,步骤S400可以包括:
S410、判断所述任务为正常结束还是异常结束,如果为正常结束,则执行步骤S420,如果为异常结束,则执行步骤S430;
具体的,可以根据第二扩展指令所获得的任务结束信息判断是正常结束还是异常结束。
S420、提交所述任务更新后的全局变量信息,释放所述任务所占用资源,删除所述任务创建的快照;
可以理解的是,在任务带有需同步的全局变量信息,而步骤S100中的第一扩展指令未获得任务需同步的全局变量信息时,执行步骤S420可以使得任务执行的结果得到提交,避免后续根据其执行结果进行执行的任务出现执行错误或无法执行。当然,当该任务不带有需同步的全局变量信息时,就可以不执行提交任务更新后的全局变量信息的步骤。此时,步骤S420可以为:释放所述任务所占用资源,删除所述任务创建的快照。
可以理解的是,在使用第二扩展指令获得任务的执行结束信息后就可以确定任务是否为正常结束,如果正常结束则可以释放该任务所占用的资源并删除任务执行过程中所创建的快照。这样该任务所占用的资源就可以继续执行其他任务,同时,删除不再使用的快照可以释放快照占用的内存空间。本领域技术人员可以理解的是,当任务正常结束后,提交该任务更新后的全局变量信息(也即该任务的执行结果),可以保证其他使用该任务执行结果的后续任务正常执行。
S430、释放所述任务所占用的资源,删除所述任务创建的快照。
而当任务异常结束时,则说明该任务没有成功完成,在这种情况下,可能是由于执行该任务的计算节点造成的,当然也可能是其他原因。本发明在任务异常结束时,可以释放该任务所占用的资源并删除该任务执行过程中创建的快照,这样同样可以释放该资源,使该资源可以继续执行其他任务。删除快照可以释放快照占用的内存空间。
如图6所示,在本发明实施例提供的另一种任务处理方法中,在所述任务为异常结束的情况下,执行步骤S430后,可以重新执行步骤S200。
可以理解的是,由于第一扩展指令获得的堆地址信息、栈地址信息和待执行指令的地址信息可以进行保存,因此当任务异常结束时,可以仅再次执行对该任务进行调度处理或内存优化处理的步骤,以使其能够被执行并正常结束。当然,在本发明的另一个实施例中,也可以在执行步骤S430后,重新执行图1所示的步骤S100和S200。
相应于上面的方法实施例,本发明还提供一种任务处理***。
如图7所示,本发明实施例提供的一种任务处理***,可以包括:第一获取模块100和任务调度模块200,
第一获取模块100使用第一扩展指令创建任务并使用该第一扩展指令获得所述任务执行所需的内存地址信息,发送至所述任务调度模块200中,其中,所述任务执行所需的内存地址信息可以包括:所述任务所需访问的堆地址信息、所述任务所需访问的栈地址信息和所述任务中待执行指令的地址信息;
其中,任务执行所需的内存地址信息还可以包括:所述任务需同步的全局变量信息。本领域技术人员可以理解的是,由于仅有部分任务携带有需同步的全局变量信息,因此第一获取模块100可以仅使用第一扩展指令获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息。
在实际应用中,还可以使用第一扩展指令获得其他信息,如文件描述句柄信息,本发明在此不做限定。
可以理解的是,在创建任务时就使用扩展指令获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息可以简化流程,便于任务调度模块200基于这些信息进行合理的调度或使得编译器基于这些信息对任务重新分配内存地址。
其中,栈地址信息可以包括栈的起始位置和栈的大小,栈地址是各计算节点的私有地址,各计算节点对栈地址的数据修改操作对全局地址是不可见的。堆地址信息可以包括堆的起始位置和堆的大小,堆内存储的信息是全局共享的,对堆内存储数据的修改是对全局可见的。待执行指令的地址信息指明了新创建的任务需要执行的指令流的入口地址信息;需同步的全局变量信息包含了和其他任务进行同步的变量地址信息。其中,堆地址信息可以为堆地址,栈地址信息可以为栈地址。
在实际应用中,第一扩展指令可以作为扩展的基本指令加入到基本指令集中。可以理解的是,指令集是计算机能够执行的指令的集合,它是计算机资源的良好的抽象。基本指令是在各种任务执行过程中所经常用到的一些指令,如mov、add、or等。如表1所示,为一种基本指令集。
其中,mov为数据传送类指令,add、sub、mul、div、and、or和xor为运算类指令,br为程序控制类指令。使用表1中列出的基本指令即可实现大多数的计算应用。为了支持机群环境中任务的并行调度和管理,本发明中引入了与任务相关的指令:第一扩展指令。在实际应用中,可以把第一扩展指令也加入到基本指令集中。具体的,第一扩展指令可以如表2所示。当任务执行所需的内存地址信息也包括任务需同步的全局变量信息时,第一扩展指令可以如表3所示。
其中,如表2及表3所示,根据参数m1(栈地址)可以获得栈地址信息,根据参数m2(堆地址)可以获得堆地址信息,根据参数m3(同步全局变量)可以获得任务需同步的全局变量信息,根据参数moffs*(第一条指令地址)可以获得任务中待执行指令的地址信息。可以理解的是,表2及表3中使用newr对第一扩展指令进行了命名,在本发明提供的其他实施例中,还可以使用其他名称对第一扩展指令进行命名。
任务调度模块200根据第一获取模块100发送的所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
可以理解的是,在获得以上信息以后,可以对任务进行调度处理或内存优化处理。具体的,可以根据以上信息选择处于空闲状态的计算节点执行该任务,可以选择距离该任务所需访问内存地址所对应的物理内存地址相近的计算节点执行该任务,也可以使得编译器根据以上信息对重新分配该任务所需访问的内存地址以对所需访问的内存地址进行优化。
举例来说:在机群***中,为了提高***运行效率,往往需要并行执行多个任务,将这多个任务分配给不同的计算节点。为了简化对机群***内存的管理,一般情况下使用“页”对机群***的虚拟内存进行划分,划分出多个虚拟内存页面,每个虚拟内存页面中都包含有多个连续的虚拟内存地址。可以理解的是,为了可以访问到所需访问的物理地址,还需要提供虚拟内存地址与物理地址之间的对应关系。由于不同任务执行过程中需要访问的虚拟内存地址不定,这也带来了并行任务执行过程中可能存在至少两个并行任务需要访问同一虚拟内存页面中不同的虚拟内存地址的情况。当出现这种情况时,传统的任务处理方法是仅执行其中的一个任务,而让其他任务等待,这种方法无疑降低了机群***的效率。而本发明可以在获得任务执行所需的内存地址信息后,可以根据所述任务执行所需的内存地址信息对任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
其中,任务调度处理的具体方式可以为:对并行任务所需访问的同一个虚拟内存页面进行快照处理。当仅有两个并行任务访问同一虚拟内存页面时,可以对该虚拟内存页面进行一次快照处理,将该虚拟内存页面复制到不同于该虚拟内存页面的其他空闲虚拟内存地址中。这样,这两个并行任务就可以分别访问原始的虚拟内存页面和快照获得的虚拟内存页面,不用再进行等待。
当然,还可以有其他的调度处理方式,如:重新整理任务的执行顺序,以使并行执行的多个任务执行时不再涉及相同的内存页面。举例来说,假设第一任务、第二任务首先并行执行,然后第三任务和第四任务并行执行,第一任务和第二任务都需要访问第一内存页面中的内存地址,第三任务和第四任务都需要访问第二内存页面中的内存地址。本发明可以控制第一任务和第三任务并行执行,第二任务和第四任务并行执行,这样在以上四个任务并行执行过程中就不会出现并行任务访问相同内存地址的情况。
另一种任务调度处理方式是,选择距离任务所需访问内存地址所对应的物理内存地址相近的计算节点执行该任务。可以理解的是,计算节点访问距离自己较近物理内存地址可以在更短的访问路径上完成数据访问,从而缩短读取时间,增加任务的执行速度。在处理多个任务时,如果多个任务所需访问的虚拟内存地址对应的物理内存地址都距离某计算节点较近,则可以选择该计算节点执行这多个任务,可以进一步加快任务的执行效率。
因此,如图8所示,在本发明实施例提供的另一种任务处理***中,任务调度模块200可以包括:第一调度子模块210,所述第一调度子模块210对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
可以理解的是,对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文是任务被执行前的准备。
其中,如图9所示,所述任务调度模块200可以包括:地址信息发送子模块230,
地址信息发送子模块230将所述任务执行所需的内存地址信息反馈给编译器,以使所述编译器重新为所述任务分配内存地址。
例如,编译器为A任务分配了虚拟内存地址0001到0010,为B任务分配了虚拟地址0011到0020。假设一个虚拟内存页面中包括有1024个虚拟内存地址,那么从0000开始,到1023结束,为一个虚拟内存页面。从1024开始,到2047结束,为另一个虚拟内存页面。本发明在获得任务A和任务B执行所需的内存地址信息后,就可以得知这两个任务所需访问的虚拟内存地址位于同一个虚拟内存页面中。本发明还可以将以上信息反馈给编译器,使编译器重新为A任务和/或B任务分配内存地址。
分配的方法有多种,如,仅重新分配A任务所需访问的虚拟内存地址:为A任务分配了虚拟内存地址1025到1034。这样,A任务和B任务所需访问的内存地址就位于不同的虚拟内存页面中,A任务和B任务就可以同时执行,增加了任务执行的效率。再如,仅重新分配B任务所需访问的虚拟内存地址:为B任务分配了虚拟内存地址1035到1044。这样,A任务和B任务所需访问的内存地址就位于不同的虚拟内存页面中,A任务和B任务就可以同时执行。再如,分别对A任务所需访问的虚拟内存地址和B任务所需访问的虚拟内存地址进行重新分配:为A任务分配了虚拟内存地址0125到0134,为B任务分配了虚拟内存地址1035到1044。这样,A任务和B任务所需访问的内存地址就位于不同的虚拟内存页面中,A任务和B任务同样可以同时执行。
本发明实施例提供的一种任务处理***,可以使用扩展指令获得任务所需访问的堆地址信息、任务所需访问的栈地址信息和任务中待执行指令的地址信息并根据这些地址信息对任务进行调度处理或内存优化处理。由于并行任务执行过程中的效率受限于这些地址信息,本发明通过对这些地址信息进行调度处理或内存优化处理,可以有效提高任务执行的效率,缩短任务执行的时间。
如图10所示,在本发明实施例提供的另一种任务处理***中,任务调度模块200可以包括:第二调度子模块220,
第二调度子模块220等待所述需同步的全局变量信息的内容更新后,对所述任务需访问的堆地址信息创建快照并初始化任务执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
本领域技术人员可以理解的是,在任务执行所需的内存地址信息包括任务需同步的全局变量信息的情况下,需首先等待该需同步的全局变量信息内容更新后,再执行后续处理。
可以理解的是,在多个任务顺序执行的过程中,在后执行的任务可能需要前面所执行任务的执行结果。因此,当第一任务需要第二任务的执行结果时,可以等待第二任务的执行结果提交后(也即等待所需同步的全局变量信息内容更新后),再启动第一任务的执行。具体的,可以使用标志位控制任务的运行。
可以理解的是,可以根据第一扩展指令获得的同步全局变量信息判断是否带有需同步的全局变量信息。具体的,当任务不带有需同步的全局变量信息时,第一扩展指令中任务需同步的全局变量信息所对应的参数可以为空。也即:可以根据需同步的全局变量信息所对应的参数返回值是否为空来判断该任务是否携带有需同步的全局变量信息。
可以理解的是,对所述任务所需访问的堆地址信息创建快照可以利用程序执行的局部性原理,任务对所需访问的堆地址内的信息进行复制,保存到到本地内存,减少内存一致性维护的开销。由于任务执行上下文中的堆信息是全局共享的,因此任务通过修改堆信息就可以将任务执行的结果通知给***的其他任务以实现任务间的数据交互。因此,可以仅对堆地址信息创建快照,而对计算节点私有的栈地址信息则不创建快照。
如图11所示,本发明实施例提供的另一种任务处理***中,还可以包括:执行结束信息获取模块300和任务结束处理模块400,
执行结束信息获取模块300,使用第二扩展指令结束所述任务并使用该第二扩展指令获得所述任务的执行结束信息并发送至所述任务结束处理模块400中,其中,所述任务的执行结束信息包括:所述任务正常结束的信息和所述任务异常结束的信息;
具体的,第二扩展指令可以如表4所示。如表4所示,第二扩展指令为exit,执行结束信息为opt。当然,第二扩展指令和执行结束信息还可以有其他命名,本发明在此不做限定。
可以理解的是,任务执行结束至少会有两种情况:异常结束和正常结束。在任务执行过程中,如果出现某些错误,任务执行就可能出现中断、报错等情况,从而导致任务异常结束。如果任务执行过程中没有出现问题,则任务会正常结束。
任务结束处理模块400根据执行结束信息获取模块300发送的所述任务的执行结束信息对所述任务占用的资源进行释放处理。
可以理解的是,在使用第二扩展指令获得任务的执行结束信息后就可以确定任务是否为正常结束,如果正常结束则可以提交该任务更新后的全局变量信息,释放该任务所占用的计算节点、内存等资源并删除任务执行过程中所创建的快照。这样该任务所占用的计算节点、内存等资源就可以继续执行其他任务,同时,删除不再使用的快照可以释放保存该快照的本地内存。本领域技术人员可以理解的是,当任务正常结束后,提交该任务更新后的全局变量信息(也即该任务的执行结果),可以保证其他使用该任务执行结果的后续任务正常执行。
而当任务异常结束时,则说明该任务没有成功完成,在这种情况下,可能是由于执行该任务的计算节点造成的,当然也可能是其他原因。本发明在任务异常结束时,可以释放该任务所占用的资源并删除该任务执行过程中创建的快照,这样同样可以释放该任务所占用的资源,使这些资源可以继续执行其他任务。
删除快照可以释放保存该快照的本地内存。在任务异常结束后,可以由应用程序判断是否需要重新创建任务来执行该任务,也可以由任务调度器来重新创建并执行该任务。
本发明提供的一种任务处理***,还可以使用第二扩展指令结束任务并获得任务的执行结束信息,从而对任务进行结束处理。由于可以根据任务的执行结束信息有区别的对任务进行不同的结束处理,因此本发明可以优化任务的结束处理,使得任务的执行过程更加智能化。
如图12所示,在本发明实施例提供的另一种任务处理***中,任务结束处理模块400,可以包括:结束判断子模块410、异常结束处理子模块430和正常结束处理子模块420,
结束判断子模块410,判断所述任务为正常结束还是异常结束,在所述任务异常结束时,触发所述异常结束处理子模块430,在所述任务正常结束的情况下,触发所述正常结束处理子模块420;
具体的,可以根据第二扩展指令所获得的任务结束信息判断是正常结束还是异常结束。
异常结束处理子模块430,用于释放所述任务所占用的资源,删除所述任务创建的快照;
可以理解的是,在使用第二扩展指令获得任务的执行结束信息后就可以确定任务是否为正常结束,如果正常结束则可以释放该任务所占用的资源并删除任务执行过程中所创建的快照。这样该任务所占用的资源就可以继续执行其他任务,同时,删除不再使用的快照可以释放快照占用的内存空间。本领域技术人员可以理解的是,当任务正常结束后,提交该任务更新后的全局变量信息(也即该任务的执行结果),可以保证其他使用该任务执行结果的后续任务正常执行。
正常结束处理子模块420,用于提交更新后的全局变量信息,释放所述任务所占用的资源,删除所述任务创建的快照。
而当任务异常结束时,则说明该任务没有成功完成,在这种情况下,可能是由于执行该任务的计算节点造成的,当然也可能是其他原因。本发明在任务异常结束时,可以释放该任务所占用的资源并删除该任务执行过程中创建的快照,这样同样可以释放该资源,使该资源可以继续执行其他任务。删除快照可以释放快照占用的内存空间。
如图13所示,在本发明实施例提供的另一种任务处理***中,还可以包括:重新执行模块500,用于在异常结束处理子模块430释放所述任务所占用的资源,删除所述快照后,重新触发任务调度模块200。
可以理解的是,由于第一扩展指令获得的堆地址信息、栈地址信息和待执行指令的地址信息可以进行保存,因此当任务异常结束时,可以仅重新触发任务调度模块200。当然,在本发明的另一个实施例中,也可以重新触发第一获取模块100和任务调度模块200。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的***实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本发明可用于众多通用或专用的计算***环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器***、基于微处理器的***、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何***或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (16)
1.一种任务处理方法,其特征在于,包括:
使用第一扩展指令创建任务并使用所述第一扩展指令获得所述任务执行所需的内存地址信息,其中,所述任务执行所需的内存地址信息包括:所述任务所需访问的堆地址信息、所述任务所需访问的栈地址信息和所述任务中待执行指令的地址信息;
根据所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
2.根据权利要求1所述的方法,其特征在于,所述任务执行所需的内存地址信息还包括:
所述任务需同步的全局变量信息。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
使用第二扩展指令结束所述任务并使用所述第二扩展指令获得所述任务的执行结束信息,其中,所述任务的执行结束信息包括:所述任务正常结束的信息和所述任务异常结束的信息;
根据所述第二扩展指令获得的所述任务的执行结束信息对所述任务占用的资源进行释放处理。
4.根据权利要求1所述的方法,其特征在于,根据所述任务执行所需的内存地址信息对所述任务进行调度处理,包括:
对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
5.根据权利要求2所述的方法,其特征在于,根据所述任务执行所需的内存地址信息对所述任务进行调度处理,包括:
等待所述需同步的全局变量信息的内容更新后,对所述任务需访问的堆地址信息创建快照并初始化任务执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
6.根据权利要求1或2所述的方法,其特征在于,所述根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理,包括:
将所述任务执行所需的内存地址信息反馈给编译器,以使所述编译器重新为所述任务分配内存地址。
7.根据权利要求3所述的方法,其特征在于,所述根据所述第二扩展指令获得的所述任务的执行结束信息对所述任务占用的资源进行释放处理,包括:
判断所述任务为正常结束还是异常结束,如果为正常结束,则提交所述任务更新后的全局变量信息,释放所述任务所占用资源,删除所述任务创建的快照;如果为异常结束,则释放所述任务所占用的资源,删除所述任务创建的快照。
8.根据权利要求7所述的方法,其特征在于,在所述任务为异常结束的情况下,释放所述任务所占用的资源,删除所述快照后,还包括:
重新执行所述根据所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理的步骤。
9.一种任务处理***,其特征在于,包括:第一获取模块和任务调度模块,
所述第一获取模块使用第一扩展指令创建任务并使用所述第一扩展指令获得所述任务执行所需的内存地址信息,发送至所述任务调度模块中,其中,所述任务执行所需的内存地址信息包括:所述任务所需访问的堆地址信息、所述任务所需访问的栈地址信息和所述任务中待执行指令的地址信息;
所述任务调度模块根据第一获取模块发送的所述任务执行所需的内存地址信息对所述任务进行调度处理和/或根据所述任务执行所需的内存地址信息对所述任务进行内存优化处理。
10.根据权利要求9所述的***,其特征在于,所述任务执行所需的内存地址信息还包括:
所述任务需同步的全局变量信息。
11.根据权利要求9或10所述的***,其特征在于,还包括:执行结束信息获取模块和任务结束处理模块,
所述执行结束信息获取模块使用第二扩展指令结束所述任务并使用所述第二扩展指令获得所述任务的执行结束信息并发送至所述任务结束处理模块中,其中,所述任务的执行结束信息包括:所述任务正常结束的信息和所述任务异常结束的信息;
所述任务结束处理模块根据执行结束信息获取模块发送的所述任务的执行结束信息对所述任务占用的资源进行释放处理。
12.根据权利要求9所述的***,其特征在于,所述任务调度模块包括:第一调度子模块,
所述第一调度子模块对所述任务所需访问的堆地址信息创建快照并初始化所述任务的执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
13.根据权利要求10所述的***,其特征在于,所述任务调度模块包括:第二调度子模块,
所述第二调度子模块等待所述需同步的全局变量信息的内容更新后,对所述任务需访问的堆地址信息创建快照并初始化任务执行上下文,根据所述任务执行所需的内存地址信息选择一计算节点执行所述任务。
14.根据权利要求9或10所述的***,其特征在于,所述任务调度模块包括:地址信息发送子模块,
所述地址信息发送子模块将所述任务执行所需的内存地址信息反馈给编译器,以使所述编译器重新为所述任务分配内存地址。
15.根据权利要求11所述的***,其特征在于,所述任务结束处理模块,包括:结束判断子模块、异常结束处理子模块和正常结束处理子模块,
所述结束判断子模块结束所述任务并判断所述任务为正常结束还是异常结束,在所述任务异常结束时,触发所述异常结束处理子模块,在所述任务正常结束的情况下,触发所述正常结束处理子模块;
所述异常结束处理子模块,用于释放所述任务所占用的资源,删除所述任务创建的快照;
所述正常结束处理子模块,用于提交更新后的全局变量信息,释放所述任务所占用的资源,删除所述任务创建的快照。
16.根据权利要求15所述的***,其特征在于,还包括:重新执行模块,用于在所述异常结束处理子模块释放所述任务所占用的资源,删除所述快照后,重新触发所述任务调度模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210295952.1A CN103631648B (zh) | 2012-08-20 | 2012-08-20 | 一种任务处理方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210295952.1A CN103631648B (zh) | 2012-08-20 | 2012-08-20 | 一种任务处理方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103631648A true CN103631648A (zh) | 2014-03-12 |
CN103631648B CN103631648B (zh) | 2017-02-22 |
Family
ID=50212740
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210295952.1A Active CN103631648B (zh) | 2012-08-20 | 2012-08-20 | 一种任务处理方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103631648B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360899A (zh) * | 2014-11-03 | 2015-02-18 | 上海斐讯数据通信技术有限公司 | 一种进程管理***及管理方法 |
CN109471671A (zh) * | 2017-09-06 | 2019-03-15 | 武汉斗鱼网络科技有限公司 | 一种程序冷启动方法和*** |
CN110764896A (zh) * | 2018-07-25 | 2020-02-07 | 北京京东金融科技控股有限公司 | 资源分配方法、***及计算机***和计算机可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1149736A (zh) * | 1995-06-05 | 1997-05-14 | 北京航空航天大学 | 一种分布式存储器共享管理方法 |
CN101853209B (zh) * | 2010-04-29 | 2011-08-10 | 中国人民解放军国防科学技术大学 | 无线传感器网络节点内存管理方法 |
CN102270181B (zh) * | 2010-06-01 | 2013-10-02 | 炬力集成电路设计有限公司 | 一种内存访问方法和装置 |
CN102629221B (zh) * | 2012-02-28 | 2014-11-19 | 华为技术有限公司 | 用于分布式共享存储的任务同步方法、装置及*** |
-
2012
- 2012-08-20 CN CN201210295952.1A patent/CN103631648B/zh active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104360899A (zh) * | 2014-11-03 | 2015-02-18 | 上海斐讯数据通信技术有限公司 | 一种进程管理***及管理方法 |
CN104360899B (zh) * | 2014-11-03 | 2019-06-07 | 上海斐讯数据通信技术有限公司 | 一种进程管理***及管理方法 |
CN109471671A (zh) * | 2017-09-06 | 2019-03-15 | 武汉斗鱼网络科技有限公司 | 一种程序冷启动方法和*** |
CN109471671B (zh) * | 2017-09-06 | 2023-03-24 | 武汉斗鱼网络科技有限公司 | 一种程序冷启动方法和*** |
CN110764896A (zh) * | 2018-07-25 | 2020-02-07 | 北京京东金融科技控股有限公司 | 资源分配方法、***及计算机***和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103631648B (zh) | 2017-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Huang et al. | Performance evaluation of adaptive MPI | |
Pena et al. | A complete and efficient CUDA-sharing solution for HPC clusters | |
Warneke et al. | Exploiting dynamic resource allocation for efficient parallel data processing in the cloud | |
CN1794177B (zh) | 用于为虚拟机揭示处理器拓扑结构的***和方法 | |
US7647590B2 (en) | Parallel computing system using coordinator and master nodes for load balancing and distributing work | |
US7406407B2 (en) | Virtual machine for operating N-core application on M-core processor | |
JP5934094B2 (ja) | データ並列スレッドを有する処理論理の複数のプロセッサにわたるマッピング | |
CN1831775B (zh) | 虚拟机环境中用于多级截取处理的***和方法 | |
CN101268445B (zh) | 用于向多核环境中的应用程序提供实时线程服务的方法、装置 | |
US20160378554A1 (en) | Parallel and Distributed Computing Using Multiple Virtual Machines | |
CN102906691A (zh) | 虚拟机迁移技术 | |
CN102193824A (zh) | 虚拟机均质化以实现跨异构型计算机的迁移 | |
CN104714846A (zh) | 资源处理方法、操作***及设备 | |
CN105830026A (zh) | 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法 | |
US9063918B2 (en) | Determining a virtual interrupt source number from a physical interrupt source number | |
CN100553214C (zh) | 移动虚拟环境*** | |
CN112463296B (zh) | 一种创建虚拟机的方法及装置 | |
US20060020701A1 (en) | Thread transfer between processors | |
KR20210105378A (ko) | 프로그래밍 플랫폼의 사용자 코드 작동 방법 및 플랫폼, 노드, 기기, 매체 | |
Sojoodi et al. | Ignite-GPU: a GPU-enabled in-memory computing architecture on clusters | |
CN103631648A (zh) | 一种任务处理方法及*** | |
Fukutomi et al. | GPUhd: Augmenting YARN with GPU resource management | |
CN105677481A (zh) | 一种数据处理方法、***及电子设备 | |
CN104714843B (zh) | 多内核操作***实例支持多处理器的方法及装置 | |
Peterson et al. | Automatic halo management for the Uintah GPU-heterogeneous asynchronous many-task runtime |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |