集群系统中进程相互协作的方法

文档序号:9506051阅读:481来源:国知局
集群系统中进程相互协作的方法
【技术领域】
[0001]本发明涉及基于Linux的集群系统技术,特别是一种集群系统中进程相互协作的方法。
【背景技术】
[0002]目前有很多基于Linux的集群系统,Openmosix便是其一。Openmosix选用单一系统映像模式,支持所有UNIX的接口、机制,具有以下特点:透明性,易用性,动态负载平衡,分布式控制,高度的可伸缩性,抢占式进程迀移,能实现最大的全面的性能,并且支持DFSA(Direct File System Access)。
[0003]Openmosix集群系统的核心功能是集群内的进程迀移,Openmosix以打补丁的方式修改Linux内核,实现了该功能。进程迀移系统有两个部分,一是信息收集算法和资源共享算法,二是进程迀移机制。集群可以依据系统内的负载情况,将进程从负载较高的节点自动迀移到负载较轻的节点上,从而实现系统内负载的动态平衡。
[0004]不仅可以由集群自主迀移进程,也可以由集群的管理者手动迀移。手动迀移一个进程时,需要往进程控制块的mosix域whereto字段填写地址,如果不知道目的地址,可随便填写一个地址,则当进程被调度时,集群系统就将根据负载均衡机制迀移该进程到合适的节点。
[0005]目前的集群存在一个问题,S卩服务器进程不知道其生成的子服务器进程何时能完成,只能被动的等待子服务器进程完成之后,将结果传递给自己,然后将结果返回给本次请求的客户端。

【发明内容】

[0006]本发明的目的在于提供一种集群系统中进程相互协作的方法,通过设置集群中子进程的运行时间,使宿主节点进程知道子进程将在何时完成,并限制子进程在一定的时间内完成。
[0007]实现本发明目的的技术解决方案为:一种集群系统中进程相互协作的方法,包括如下步骤:
[0008]步骤1、集群中服务器进程接收到客户端的请求,生成两个相同的子进程,分别作为主子进程和副子进程,根据负载均衡原理将主子进程迀移到集群中去,副子进程保留在服务器节点不被迀移;
[0009]步骤2、设置定时器,为主子进程设置运行时间;
[0010]步骤3、若在设定时间内,主子进程未完成,则向服务器节点的副子进程发送未完成的信号,并结束主子进程的运行,执行步骤4,否则将结果返回给客户端;
[0011]步骤4、副子进程接收到信号,复制生成一个子进程作为新的主子进程,新的主子进程被迀移至集群中,重复步骤2?步骤4,直至主子进程在设定时间内完成任务。
[0012]本发明与现有技术相比,其显著优点为:本发明通过设置集群中子进程的运行时间,使服务器节点进程知道子进程将在何时完成,并限制子进程在一定的时间内完成。
【附图说明】
[0013]图1为本发明的集群系统中进程相互协作的方法流程图。
[0014]图2为本发明实施例中集群系统示意图。
[0015]图3为本发明实施例中设置主子进程定时器示意图。
【具体实施方式】
[0016]下面结合附图及具体实施例对本发明作进一步详细说明。
[0017]结合图1,一种集群系统中进程相互协作的方法,包括如下步骤:
[0018]步骤1、当集群中服务器进程接收到客户端的请求之后,生成两个相同的子进程,分别为主子进程和副子进程,集群根据负载均衡原理将主子进程迀移到集群中去,副子进程保留在服务器节点不被迀移;服务器进程生成两个相同子进程的具体过程为:
[0019]进程控制块增加一个mosix域,命名为mosix.1d, id的取值设置为0或1 ;当服务器进程接收到客户端的请求之后,将会调用两次fork (),生成两个子进程,这两个子进程功能一样,其中一个进程的mosix.1d为0,表示该子进程为主子进程,另一进程的mosix.1d为1,表示该子进程为副子进程;
[0020]步骤2、设置定时器,为主子进程设置运行时间,具体为:
[0021]在主子进程中,通过settimerO系统调用,设置一个定时器,当定时时间到达时,内核会给主子进程发送一个SIGALRM,主子进程中绑定的signal ()函数接收SIGALRM,并做出相应的处理;所述的signal ()函数在服务器生成子进程时绑定在主子进程中,用于接收操作系统内核发送的信号,同时向副子进程发送未完成信号;
[0022]步骤3、若在设定时间内,主子进程未完成,则向服务器节点的副子进程发送未完成的信号,并结束主子进程的运行,执行步骤4 ;否则将结果返回给客户端;
[0023]步骤4、副子进程接收到信号,复制生成一个子进程作为新的主子进程,新的主子进程被迀移到集群中去,重复步骤2-步骤4,直至主子进程在设定时间内完成任务;上述新生成的主子进程不会被迀移到上一个主子进程被迀移到的节点。
[0024]下面结合具体实施例对本发明做进一步说明。
[0025]实施例
[0026]如图2所示,在一个简化的集群系统中,节点1作为服务器,接收并处理外界的计算请求,并生成子进程去完成任务,根据负载均衡原理,子进程会被迀移到集群中负载较轻的节点。
[0027]修改进程控制块(task_struct)增加一个mosix域,命名为mosix.1d,id的取值设置为0或1 ;当服务器进程接收到客户端的请求之后,将会调用两次创建进程函数fork (),生成两个子进程,这两个子进程功能一样,其中一个进程的mosix.1d为0,表示该子进程为主子进程,另一进程的mosix.1d为1,表示该子进程为副子进程,并且其mosix.whereto域为0 ;新生成的副子进程不会被迀移,并且不参与进程调度,其进程状态处于可中断等待状态。
[0028]根据集群内负载均衡原理,如果需要迀移新生成的子服务进程,则将主子服务进程迀移到其他的节点,副子进程不参与该迀移。
[0029]动态负载平衡机制会每隔一段时间收集集群中各个节点的负载信息,包括该节点上处理器的数量,处理器速度,处理器使用率,以及内存使用率等;根据这些信息,在主子进程中,通过设置定时器函数settimerO,设置一个计时器,当定时时间到达时,内核会给主子进程发送一个SIGALRM,如图3所示;主子进程中绑定的signal ()函数接收SIGALRM,并做出相应的处理。
[0030]若设定时间截止时主子进程还未完成计算,则子进程出现超时,出现超时后,signal ()函数向宿主节点发送未完成的标志信号,停止自身运行,等待父进程回收。
[0031]修改集群系统内的系统调用表,增加一个系统调用,参数包括信号signal,主子进程的pid,以及主子进程所在的节点位置,map_id;该新增系统调用的功能,就是向服务器节点的副子进程发送请求,告诉副子进程,在规定的时间内主子进程未完成,已丢弃。
[0032]服务器节点的副子进程处于可中断等待状态,当其信号处理函数sig_usr ()接收到主子进程的请求后,副子进程状态变为就绪态,参与服务器节点上的进程调度;所述的信号处理函数sig_usr()为服务器生成副子进程时绑定的函数,用于接收主子进程发送的未完成信号;
[0033]服务器节点上的副子进程在得到调度后,将生成一个新的进程,该进程为新主子进程,并将新的主子进程的mosix.1d域设置为0,whereto域设为1,让集群系统将新的主子进程前往其他节点。副子进程完成这些操作后,进入等待信号量的可中断等待状态,并且始终不会被迀移。
[0034]本发明通过设置集群中子进程的运行时间,使服务器节点进程知道子进程将在何时完成,并限制子进程在一定的时间内完成。
【主权项】
1.一种集群系统中进程相互协作的方法,其特征在于,包括如下步骤: 步骤1、集群中服务器进程接收到客户端的请求,生成两个相同的子进程,分别作为主子进程和副子进程,根据负载均衡原理将主子进程迀移到集群中去,副子进程保留在服务器节点不被迀移; 步骤2、设置定时器,为主子进程设置运行时间; 步骤3、若在设定时间内,主子进程未完成,则向服务器节点的副子进程发送未完成的信号,并结束主子进程的运行,执行步骤4,否则将结果返回给客户端; 步骤4、副子进程接收到信号,复制生成一个子进程作为新的主子进程,新的主子进程被迀移至集群中,重复步骤2?步骤4,直至主子进程在设定时间内完成任务。2.根据权利要求1所述的集群系统中进程相互协作的方法,其特征在于,步骤1中对于同一个外界请求,服务器进程生成两个相同的子进程,分别作为主子进程和副子进程,具体为: 进程控制块增加一个mosix域,命名为mosix.1d,id的取值设置为0或1 ;当服务器进程接收到客户端的请求之后,将会调用两次fork (),生成两个子进程,这两个子进程功能一样,其中一个进程的mosix.1d为0,表示该子进程为主子进程,另一进程的mosix.1d为1,表示该子进程为副子进程。3.根据权利要求1所述的集群系统中进程相互协作的方法,其特征在于,步骤2中设置定时器,为主子进程设置运行时间,具体为: 在主子进程中,通过settimerO系统调用,设置一个定时器,当定时时间到达时,内核会给主子进程发送一个SIGALRM,主子进程中绑定的signal ()函数接收SIGALRM,并做出相应的处理;所述的signal ()函数在服务器生成子进程时绑定在主子进程中,用于接收操作系统内核发送的信号,同时向副子进程发送未完成信号。4.根据权利要求1所述的集群系统中进程相互协作的方法,其特征在于,新生成的主子进程不会被迀移到上一个主子进程被迀移到的节点。
【专利摘要】本发明公开了一种集群系统中进程相互协作的方法,该方法首先生成两个相同的子进程分别作为主子进程和副子进程,主子进程迁移到集群中去,副子进程保留在服务器节点,然后为主子进程设置运行时间,若在设定的时间内主子进程未完成,则向副子进程发送未完成信号,并且丢弃该主子进程,副子进程复制生成新的子进程作为主子进程迁移至集群中。本发明通过设置集群中子进程的运行时间,使服务器节点进程知道子进程将在何时完成,并限制子进程在一定的时间内完成。
【IPC分类】G06F9/48, G06F9/50
【公开号】CN105260241
【申请号】CN201510698797
【发明人】任良成, 陈清华
【申请人】南京理工大学
【公开日】2016年1月20日
【申请日】2015年10月23日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1