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

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

Info

Publication number
CN112068937A
CN112068937A CN202010745717.4A CN202010745717A CN112068937A CN 112068937 A CN112068937 A CN 112068937A CN 202010745717 A CN202010745717 A CN 202010745717A CN 112068937 A CN112068937 A CN 112068937A
Authority
CN
China
Prior art keywords
thread
task
management module
priority
load
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
Application number
CN202010745717.4A
Other languages
English (en)
Other versions
CN112068937B (zh
Inventor
刘超
邓淮谦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Inspur Intelligent Technology Co Ltd
Original Assignee
Suzhou Inspur Intelligent Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Inspur Intelligent Technology Co Ltd filed Critical Suzhou Inspur Intelligent Technology Co Ltd
Priority to CN202010745717.4A priority Critical patent/CN112068937B/zh
Publication of CN112068937A publication Critical patent/CN112068937A/zh
Application granted granted Critical
Publication of CN112068937B publication Critical patent/CN112068937B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

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

Claims (10)

1.一种基于负荷效率和优先级的软件自适应多线程控制方法,基于初始固定数量线程池和动态增加线程的结合;通过对线程的执行效率和系统总负荷进行监控;其特征在于:
当执行效率低的线程数量超过预设比例,则在系统可承受总负荷范围内动态增加线程数量进行任务疏导;
并通过建立评估数学模型选择任务执行的目标线程,在任务被加入目标线程执行队列后,对待执行队列中的所有任务按照优先级进行排序,保证优先级高的任务优先被执行。
2.根据权利要求1所述的一种基于负荷效率和优先级的软件自适应多线程控制方法,其特征在于:步骤包括:
第一、构建软件系统;所构建的软件系统包括:任务管理模块、线程管理模块、优先级管理模块。
第二、实时监控任务状态;所述任务管理模块实时监控任务状态,当任务具备触发条件时,任务管理模块调用线程管理模块为当前待执行任务寻找目标线程,并通知优先级管理模块刷新任务执行优先级;
第三、寻找目标线程;所述线程管理模块构建一个综合线程负载及线程执行效率的线程评估数学模型;基于预设单个线程效率门限值和线程数量比例上下限值,所述线程管理模块监控所有线程的执行效率和当前系统的总负荷;
第四、优化优先级排序;在收到任务管理模块通知后,对目标线程待执行任务队列中的任务,根据优先级高低进行重新排序。
3.根据权利要求2所述的一种基于负荷效率和优先级的软件自适应多线程控制方法,其特征在于:
所述任务管理模块,实时监控所有任务的状态,并根据任务不同状态执行相应操作;
所述线程管理模块,构建线程评估数学模型并实时监控和评估线程负荷和线程效率;
所述优先级管理模块,根据优先级对不同任务进行排序管理。
4.根据权利要求2所述的一种基于负荷效率和优先级的软件自适应多线程控制方法,其特征在于:所述第二步中,所述任务管理模块设立任务待分配区,对系统已生成但没有达到触发条件的任务,放入任务待分配区。
5.根据权利要求2所述的一种基于负荷效率和优先级的软件自适应多线程控制方法,其特征在于:所述第三步中,所述线程评估数学模型通过对线程负荷和线程执行效率赋予权重进行加和计算当前线程状态数据。
6.根据权利要求5所述的一种基于负荷效率和优先级的软件自适应多线程控制方法,其特征在于:所述线程负荷基于线程正在执行的任务实际占用负荷和等待执行的任务预期占用的负荷通过加和方式计算得出。
7.根据权利要求5所述的一种基于负荷效率和优先级的软件自适应多线程控制方法,其特征在于:所述线程负荷包括线程占用CPU、内存、IO资源。
8.根据权利要求5所述的一种基于负荷效率和优先级的软件自适应多线程控制方法,其特征在于:所述执行效率所述基于预设单个线程效率门限值和线程数量比例上下限值计算得出。
9.一种基于负荷效率和优先级的软件自适应多线程控制结构,其特征在于:包括:任务管理模块、线程管理模块、优先级管理模块;所述任务管理模块实时监控任务状态,当任务具备触发条件时,任务管理模块调用线程管理模块为当前待执行任务寻找目标线程,并通知优先级管理模块刷新任务执行优先级。
10.根据根据权利要求10所述的一种基于负荷效率和优先级的软件自适应多线程控制结构,其特征在于:包括:
所述任务管理模块,实时监控所有任务的状态,并根据任务不同状态执行相应操作;
所述线程管理模块,构建线程评估数学模型并实时监控和评估线程负荷和线程效率;
所述优先级管理模块,根据优先级对不同任务进行排序管理。
CN202010745717.4A 2020-07-29 2020-07-29 一种基于负荷效率和优先级的软件自适应多线程控制方法 Active CN112068937B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010745717.4A CN112068937B (zh) 2020-07-29 2020-07-29 一种基于负荷效率和优先级的软件自适应多线程控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010745717.4A CN112068937B (zh) 2020-07-29 2020-07-29 一种基于负荷效率和优先级的软件自适应多线程控制方法

Publications (2)

Publication Number Publication Date
CN112068937A true CN112068937A (zh) 2020-12-11
CN112068937B CN112068937B (zh) 2022-07-12

Family

ID=73657655

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010745717.4A Active CN112068937B (zh) 2020-07-29 2020-07-29 一种基于负荷效率和优先级的软件自适应多线程控制方法

Country Status (1)

Country Link
CN (1) CN112068937B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117215800A (zh) * 2023-11-07 2023-12-12 北京大数据先进技术研究院 一种动态线程控制系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104111877A (zh) * 2014-07-29 2014-10-22 广东能龙教育股份有限公司 一种基于线程调配引擎的线程资源动态调配系统和方法
US20150058865A1 (en) * 2013-08-26 2015-02-26 International Business Machines Corporation Management of bottlenecks in database systems
CN106557369A (zh) * 2016-11-25 2017-04-05 武汉斗鱼网络科技有限公司 一种多线程的管理方法及系统
CN110990142A (zh) * 2019-12-13 2020-04-10 上海智臻智能网络科技股份有限公司 并发任务处理方法、装置、计算机设备和存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150058865A1 (en) * 2013-08-26 2015-02-26 International Business Machines Corporation Management of bottlenecks in database systems
CN104111877A (zh) * 2014-07-29 2014-10-22 广东能龙教育股份有限公司 一种基于线程调配引擎的线程资源动态调配系统和方法
CN106557369A (zh) * 2016-11-25 2017-04-05 武汉斗鱼网络科技有限公司 一种多线程的管理方法及系统
CN110990142A (zh) * 2019-12-13 2020-04-10 上海智臻智能网络科技股份有限公司 并发任务处理方法、装置、计算机设备和存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117215800A (zh) * 2023-11-07 2023-12-12 北京大数据先进技术研究院 一种动态线程控制系统

Also Published As

Publication number Publication date
CN112068937B (zh) 2022-07-12

Similar Documents

Publication Publication Date Title
JP3585755B2 (ja) タイムシェアリングシステムにおける非通信プロセス間のプライオリティに基づく負荷分散
US10754706B1 (en) Task scheduling for multiprocessor systems
CN106557369B (zh) 一种多线程的管理方法及系统
CN105955809B (zh) 线程调度方法和系统
CN109766175A (zh) 面向高性能计算在云上的资源弹性伸缩系统及其调度方法
CN111767134A (zh) 一种多任务动态资源调度方法
US20030028581A1 (en) Method for resource management in a real-time embedded system
CN107145388B (zh) 一种多任务环境下任务调度方法及系统
CN111104211A (zh) 基于任务依赖的计算卸载方法、系统、设备及介质
CN114528092A (zh) 边缘节点任务调度方法、装置、计算机设备和存储介质
CN112068937B (zh) 一种基于负荷效率和优先级的软件自适应多线程控制方法
CN113064712A (zh) 基于云边环境的微服务优化部署控制方法、系统及集群
CN111090505B (zh) 一种多处理器系统中任务调度的方法和系统
CN116302578B (zh) 一种QoS约束的流应用延迟确保方法及系统
US20220291959A1 (en) Activity scheduling method, system, terminal and storage medium based on high response ratio
US20030028582A1 (en) Apparatus for resource management in a real-time embedded system
CN116010064A (zh) Dag作业调度和集群管理的方法、系统及装置
CN114995971A (zh) 实现kubernetes中pod批量调度方法及系统
CN111258729B (zh) 基于Redis的任务分配方法、装置、计算机设备及存储介质
CN117149382A (zh) 虚拟机调度方法、装置、计算机设备和存储介质
US20030023660A1 (en) Real-time embedded resource management system
CN111737086B (zh) 一种监控方式的调整方法、装置和计算机可读存储介质
CN113419863A (zh) 一种基于节点能力的数据分配处理方法及装置
CN113448705B (zh) 一种不平衡作业调度算法
CN116848508A (zh) 基于强化学习模型调度任务以供计算机执行

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant