一种基于负荷效率和优先级的软件自适应多线程控制方法技术

技术编号:26689424 阅读:15 留言:0更新日期:2020-12-12 02:38
本发明专利技术公开了一种基于负荷效率和优先级的软件自适应多线程控制方法,基于初始固定数量线程池和动态增加线程的结合;通过对线程的执行效率和系统总负荷进行监控;当执行效率低的线程数量超过预设比例,则在系统可承受总负荷范围内动态增加线程数量进行任务疏导;并通过建立评估数学模型选择任务执行的目标线程,在任务被加入目标线程执行队列后,对待执行队列中的所有任务按照优先级进行排序,保证优先级高的任务优先被执行。通过本发明专利技术所述的方法能够根据线程负荷和线程效率评估值,自适应调整线程数量,自动将待执行任务分配到目标线程,同时结合任务的优先级调整任务执行优先顺序,在均衡线程负荷和线程忙闲的同时,避免待执行任务积压。

【技术实现步骤摘要】
一种基于负荷效率和优先级的软件自适应多线程控制方法
本专利技术涉及涉及计算机软件领域,尤其涉及一种基于负荷效率和优先级的软件自适应多线程控制方法。
技术介绍
随着计算机软件系统功能越来越丰富,系统单位时间用户并发请求越来越高,对系统执行任务效率的要求也越来越高,可以说系统执行任务效率的高低很大程度影响着用户体验。软件系统的各服务模块在实现时普遍融入多线程的处理方式,有的采用建立线程池,将待执行任务直接交由系统调度执行,而因为不同任务的执行需要的系统资源量不同,这样容易导致线程负荷不均,同时线程数量由系统控制,系统总负荷也不可把控。即使有改进方案在线程池的基础上加入线程负荷评估机制,根据负荷高低将任务分配给特定线程,这种方案虽然能在一定程度上均衡线程负荷,但是由于评估模式单一,缺乏对线程效率以及任务优先级的评估,也就忽略了任务消耗时间以及优先级的影响,导致线程忙闲不均且优先级高的任务可能无法及时执行等诸多问题。现有的多线程控制方式或是建立线程池,将任务直接交由系统进行调度,或是对固定数量的线程建立负荷评估机制,通过对线程负荷进行评估,将任务交由负荷较低的线程执行,系统根据任务执行情况及时更新线程负荷。对于通过建立线程池,将任务直接交由系统进行调度执行的方式,系统根据线程空闲程度分配任务。由于每个任务执行所耗用的系统资源量不同,导致单个线程负荷不可控,而线程池的线程数量也是系统控制,在任务较多时系统会增加线程数量,线程之间存在资源抢占,导致系统总负荷过高。对于建立固定数量线程池,通过对线程和任务进行负荷评估,将任务交由负荷低的线程执行的方式,虽然在一定程度上均衡各个线程负荷,但是没有考虑任务的执行效率,有的任务虽然占用资源较少,但是由于内部实现、功能需求等因素所需要的执行时间较长,导致目标线程被某个任务长期占用,目标线程单位时间内执行任务的数量少,待执行任务积压,效率低下。于此同时,线程数量相对固定,在任务数量猛增时,缺乏调整的灵活性,再者,不同任务之间存在一定的执行优先级,如果忽略任务优先级,高优先级的任务执行可能滞后,影响用户体验,甚至影响系统的正常功能。
技术实现思路
本专利技术提供的一种技术方案是一种基于负荷效率和优先级的软件自适应多线程控制方法,解决现有线程控制方案中,单个线程负荷和系统总负荷不可控,线程数量固定缺乏调整灵活性,对任务分配目标线程时缺乏对线程执行效率和任务优先级评估等问题。基于上述问题,本专利技术的技术方案是:一种基于负荷效率和优先级的软件自适应多线程控制方法。区别于现有方案中当任务生成时计算线程负荷,分配目标线程,更新线程负荷,本专利技术采用当任务实际触发准备执行时计算线程负荷,分配目标线程,更新线程负荷。因为有些任务虽然已经生成,但是不具备触发条件,并未实际执行,此时就分配目标线程并将该任务预期负荷纳入线程负荷,则会与线程实际的负荷不符,也不利于对系统总负荷的把控。本专利技术采用初始固定数量线程池和动态增加线程相结合的方式,通过对线程的执行效率和系统总负荷进行监控,当执行效率低的线程数量超过预设比例时,在系统可承受总负荷范围内动态增加线程数量进行任务疏导,防止待执行任务积压。本专利技术对线程的评估除了负荷因素外,通过统计一段时间内平均每个任务执行时间作为线程效率评估依据,综合线程负荷和效率,通过建立评估数学模型选择任务执行的目标线程。在任务被加入目标线程执行队列后,对待执行队列中的所有任务按照优先级进行排序,保证优先级高的任务优先被执行。本专利技术的技术方案的具体步骤包括:第一、构建软件系统;软件系统包括:任务管理模块、线程管理模块、优先级管理模块。任务管理模块。该模块实时监控所有任务的状态,根据任务不同状态执行相应操作。线程管理模块。该模块构建线程评估数学模型,评估线程负荷和线程效率,选择目标线程,更新线程状态数据。同时,该模块实时监控线程总体效率和系统总负荷,自适应调整线程数量,总体效率依赖于预设单个线程效率门限值和线程数量预设比例上下限值。优先级管理模块。该模块根据优先级对不同任务进行排序管理。第二、实时监控任务状态;任务管理模块维护待分配任务并实时监控任务状态。任务管理模块设立任务待分配区,对系统已生成但没有达到触发条件的任务,放入任务待分配区。实时监控任务状态,当任务具备触发条件时,该模块调用线程管理模块为当前待执行任务寻找目标线程,将该任务从任务待分配区移动到目标线程的待执行队列中,并通知优先级管理模块刷新任务执行优先级。当线程执行完任务后,根据执行结果,视软件功能需求完成必要的后处理,比如任务状态更新、通知系统或用户等。第三、寻找目标线程;线程管理模块寻找目标线程。线程管理模块构建线程评估数学模型,该模型综合线程负荷和线程执行效率,比如通过对负荷和效率赋予权重进行加和。线程负荷包括线程占用CPU、内存、IO资源等,基于线程正在执行的任务实际占用负荷和等待执行的任务预期占用的负荷,通过加和方式计算得出。每项任务预期占用负荷,可以通过评估具体代码的实现得出,或是根据任务类型设定近似经验值。线程执行效率是对过去一段时间内,该线程平均每个任务所需执行时间来衡量,通过对线程负荷和线程执行效率加权计算得出数据作为当前线程状态数据,找到状态数据最小的作为目标线程,通知任务管理模块。在寻找目标线程过程中,基于预设单个线程效率门限值和线程数量比例上下限值,该模块还监控所有线程的执行效率和当前系统的总负荷,第四、优化优先级排序;优先级管理模块刷新待执行任务顺序。该模块收到任务管理模块通知后,对目标线程待执行任务队列中的任务,根据优先级高低进行重新排序,使得在线程空闲时优先级高的任务能优先执行或者优先级高的任务能优先获取执行所需系统资源。同时本专利技术保护一种基于负荷效率和优先级的软件自适应多线程控制结构,其包括:任务管理模块、线程管理模块、优先级管理模块。任务管理模块实时监控任务状态,当任务具备触发条件时,任务管理模块调用线程管理模块为当前待执行任务寻找目标线程,并通知优先级管理模块刷新任务执行优先级。任务管理模块。该模块实时监控所有任务的状态,根据任务不同状态执行相应操作。线程管理模块。该模块构建线程评估数学模型,评估线程负荷和线程效率,选择目标线程,更新线程状态数据。同时,该模块实时监控线程总体效率和系统总负荷,自适应调整线程数量,总体效率依赖于预设单个线程效率门限值和线程数量预设比例上下限值。优先级管理模块。该模块根据优先级对不同任务进行排序管理。本专利技术的优点是:根据线程负荷和线程执行效率构建线程状态数据评估模型,为待执行任务选择目标线程,根据线程效率和预设门限维护线程数目,及时疏导任务防止任务积压,同时维护任务优先级,保证线程任务队列中优先级高的任务优先执行。以此解决现有线程控制方法中评估方式单一,线程实际负荷不均,线程执行效率不均,线程数量调整不灵活,任务执行顺序与优先级不符等缺陷。附图说明下面结合附图及实施例对本专利技术作进一步描述:<本文档来自技高网
...

【技术保护点】
1.一种基于负荷效率和优先级的软件自适应多线程控制方法,基于初始固定数量线程池和动态增加线程的结合;通过对线程的执行效率和系统总负荷进行监控;其特征在于:/n当执行效率低的线程数量超过预设比例,则在系统可承受总负荷范围内动态增加线程数量进行任务疏导;/n并通过建立评估数学模型选择任务执行的目标线程,在任务被加入目标线程执行队列后,对待执行队列中的所有任务按照优先级进行排序,保证优先级高的任务优先被执行。/n

【技术特征摘要】
1.一种基于负荷效率和优先级的软件自适应多线程控制方法,基于初始固定数量线程池和动态增加线程的结合;通过对线程的执行效率和系统总负荷进行监控;其特征在于:
当执行效率低的线程数量超过预设比例,则在系统可承受总负荷范围内动态增加线程数量进行任务疏导;
并通过建立评估数学模型选择任务执行的目标线程,在任务被加入目标线程执行队列后,对待执行队列中的所有任务按照优先级进行排序,保证优先级高的任务优先被执行。


2.根据权利要求1所述的一种基于负荷效率和优先级的软件自适应多线程控制方法,其特征在于:步骤包括:
第一、构建软件系统;所构建的软件系统包括:任务管理模块、线程管理模块、优先级管理模块。
第二、实时监控任务状态;所述任务管理模块实时监控任务状态,当任务具备触发条件时,任务管理模块调用线程管理模块为当前待执行任务寻找目标线程,并通知优先级管理模块刷新任务执行优先级;
第三、寻找目标线程;所述线程管理模块构建一个综合线程负载及线程执行效率的线程评估数学模型;基于预设单个线程效率门限值和线程数量比例上下限值,所述线程管理模块监控所有线程的执行效率和当前系统的总负荷;
第四、优化优先级排序;在收到任务管理模块通知后,对目标线程待执行任务队列中的任务,根据优先级高低进行重新排序。


3.根据权利要求2所述的一种基于负荷效率和优先级的软件自适应多线程控制方法,其特征在于:
所述任务管理模块,实时监控所有任务的状态,并根据任务不同状态执行相应操作;
所述线程管理模块,构建线程评估数学模型并实时监控和评估线程负荷和线程效率;
所述优先级管理模块,根据优先级对不同任务进行排序管理。


4.根据权利要求2所述的一种基于负荷效率和优先级的软...

【专利技术属性】
技术研发人员:刘超邓淮谦
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1