[发明专利]基于任务窃取算法的任务窃取方法及系统有效
申请号: | 201910954294.4 | 申请日: | 2019-10-09 |
公开(公告)号: | CN110908794B | 公开(公告)日: | 2023-04-28 |
发明(设计)人: | 陈榕;龚振晗;陈海波;臧斌宇 | 申请(专利权)人: | 上海交通大学 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 上海汉声知识产权代理有限公司 31236 | 代理人: | 胡晶 |
地址: | 200240 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 任务 窃取 算法 方法 系统 | ||
1.一种基于任务窃取算法的任务窃取方法,其特征在于,包括:
步骤1:将高并发的请求处理系统中的各个线程按编号从小到大排列形成队列,并且队列首尾相连形成一个环;
步骤2:当系统超过一半的线程都处于过载状态时,让一个正常状态的线程分担多个过载线程的负载压力,针对当前正常状态的线程,判断下一个线程的状态;若处于过载状态,执行步骤3,若处于正常状态,则执行步骤A;
步骤3:根据步骤2判断的线程状态,当处于过载状态时,从过载线程的任务列队中窃取计算任务;
步骤4:在本地执行步骤3窃取的计算任务,然后执行步骤2,继续查看过载线程的下一个线程的状态;
步骤A:判断本地队列是否存在排队等待的计算任务,若列队非空,则执行步骤B;若列队为空,则完成了一次Ring Stealing过程;所述RingStealing过程指基于任务窃取算法的任务窃取方法过程;
步骤B:执行当前线程列队中的计算任务。
2.根据权利要求1所述的一种基于任务窃取算法的任务窃取方法,其特征在于,所述步骤2中过载状态包括:
若线程处理当前计算任务的时间大于等于时间阈值,则认为线程目前被复杂计算任务堵塞,处于过载状态;
若线程处理当前计算任务的时间小于时间阈值,则认为线程处于正常状态。
3.根据权利要求1所述的一种基于任务窃取算法的任务窃取方法,其特征在于,所述步骤3包括通过Stealing线程从过载线程的队列首部窃取计算任务;
所述步骤4包括:通过Stealing线程在本地执行窃取的计算任务。
4.根据权利要求1所述的一种基于任务窃取算法的任务窃取方法,其特征在于,所述步骤A包括:通过Stealing线程判断本地的计算任务队列是否为空,若任务队列非空,则进入步骤B继续执行,若任务队列为空,则完成了一次的Ring Stealing的过程。
5.根据权利要求1所述的一种基于任务窃取算法的任务窃取方法,其特征在于,在高并发的请求处理系统中,每个线程并行执行计算任务,且每个线程均会轮询触发RingStealing过程。
6.一种基于任务窃取算法的任务窃取系统,其特征在于,包括:
模块M1:将系统中的各个线程按编号从小到大排列形成队列,并且队列首尾相连形成一个环;
模块M2:当系统超过一半的线程都处于过载状态时,让一个正常状态的线程分担多个过载线程的负载压力,针对当前正常状态的线程,判断下一个线程的状态;若处于过载状态,触发模块M3执行,若处于正常状态,则触发模块N1执行;
模块M3:根据模块M2判断的线程状态,当处于过载状态时,从过载线程的任务列队中窃取计算任务;
模块M4:在本地执行模块M3窃取的计算任务,然后触发模块M2执行,继续查看过载线程的下一个线程的状态;
模块N1:判断本地队列是否存在排队等待的计算任务,若列队非空,则触发模块N2执行;若列队为空,则完成了一次Ring Stealing过程;
所述RingStealing过程指基于任务窃取算法的任务窃取方法过程;
模块N2:执行当前线程列队中的计算任务。
7.根据权利要求6所述的一种基于任务窃取算法的任务窃取系统,其特征在于,所述模块M2中过载状态包括:
若线程处理当前计算任务的时间大于等于时间阈值,则认为线程目前被复杂计算任务堵塞,处于过载状态;
若线程处理当前计算任务的时间小于时间阈值,则认为线程处于正常状态。
8.根据权利要求6所述的一种基于任务窃取算法的任务窃取系统,其特征在于,所述模块M3包括通过Stealing线程从过载线程的队列首部窃取计算任务;
所述模块M4包括:通过Stealing线程在本地执行窃取的计算任务。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910954294.4/1.html,转载请声明来源钻瓜专利网。