CN113835866A - 多线程任务调度优化方法 - Google Patents
多线程任务调度优化方法 Download PDFInfo
- Publication number
- CN113835866A CN113835866A CN202111175609.9A CN202111175609A CN113835866A CN 113835866 A CN113835866 A CN 113835866A CN 202111175609 A CN202111175609 A CN 202111175609A CN 113835866 A CN113835866 A CN 113835866A
- Authority
- CN
- China
- Prior art keywords
- thread
- task
- communication
- cpu
- tasks
- 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
- 238000000034 method Methods 0.000 title claims abstract description 77
- 238000005457 optimization Methods 0.000 title claims abstract description 49
- 238000004891 communication Methods 0.000 claims abstract description 223
- 230000011218 segmentation Effects 0.000 claims abstract description 60
- 238000012545 processing Methods 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 claims abstract description 22
- 238000009826 distribution Methods 0.000 claims abstract description 7
- 230000005540 biological transmission Effects 0.000 claims description 20
- 230000004913 activation Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 62
- 230000003068 static effect Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 8
- 230000000903 blocking effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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)
- Multi Processors (AREA)
Abstract
本申请涉及多线程任务调度优化方法。方法包括:确定多个CPU处理多个任务的核间负载差值和核间通信总量,建立任务分配目标函数并求解,得到任务分配结果;基于任务分配结果,确定多个任务关系值和多个线程关系值,建立线程分割目标函数并求解,得到线程分割结果,为线程分割结果中的每个线程配置通信模块,线程分割结果用于反映任一CPU通过多个线程处理任一CPU的若干任务;确定多个通信模块启动时长和多个通信模块执行时长,建立通信模块调度目标函数并求解,得到通信模块调度结果。本申请能够适用于多种应用场景,并且得到全局最优任务调度结果。
Description
技术领域
本申请涉及任务调度技术领域,特别是涉及多线程任务调度优化方法。
背景技术
二十一世纪以来,集成电路产业基于摩尔定律得到了迅猛的发展,芯片的集成度不断提高,越来越多的嵌入式芯片进入到电力终端设备市场。随着嵌入式多线程系统在电力终端的广泛应用,为了使电力终端系统高效的运转,如何提升电力终端系统的运行效率和性能成为研发人员需要首先考虑的问题。
任务分配是嵌入式多线程系统模型的重要环节,目前,大多是通过启发式任务分割算法,或者通过动态调度器模型实现任务分配,启发式任务分割算法针对不同的硬件平台,需要定制不同的解决方案,对应用场景的适应性不强;动态调度器模型可以根据系统的运行状态实时做出任务调度,但是无法获得全局最优调度结果。
发明内容
基于此,有必要针对上述技术问题,提供能够适用于多种应用场景,并且得到全局最优任务调度结果的多线程任务调度优化方法。
一种多线程任务调度优化方法,所述方法包括:
确定多个CPU处理多个任务的核间负载差值和核间通信总量,根据所述核间负载差值和所述核间通信总量,建立任务分配目标函数并求解,得到任务分配结果,所述任务分配结果用于反映任一CPU处理的若干任务;
基于所述任务分配结果,确定多个任务关系值和多个线程关系值,根据所述多个任务关系值和多个所述线程关系值,建立线程分割目标函数并求解,得到线程分割结果,为所述线程分割结果中的每个线程配置通信模块,所述线程分割结果用于反映任一CPU通过多个线程处理所述任一CPU的若干任务;
确定多个通信模块启动时长和多个通信模块执行时长,根据所述多个通信模块启动时长和所述多个通信模块执行时长,建立通信模块调度目标函数并求解,得到通信模块调度结果,所述通信模块调度结果用于反映任一CPU中多个通信模块的调度顺序。
在其中一个实施例中,所述确定多个CPU处理多个任务的核间负载差值和核间通信总量,包括:
确定多个第一关系值、多个参考时长和多个运行平均时长,其中,所述第一关系值用于反映任一CPU是否处理任一任务,所述参考时长是任一CPU运行任一任务所需的时长,所述运行平均时长是所述多个CPU运行任一任务的平均时长;
根据所述多个第一关系值、所述多个参考时长、所述多个运行平均时长和所述多个CPU的数量,确定核间负载差值;
确定多个第二关系值,以及多个参考通信量,其中,所述第二关系值用于反映任一CPU是否运行任意两个任务,所述参考通信量是任意两个任务之间的通信量;
根据所述多个第二关系值和所述多个通信量确定核间通信总量。
在其中一个实施例中,所述任务分配目标函数的约束条件包括:所述任一任务被唯一CPU处理;
若任一CPU运行任意两个任务的第二关系值为零,则所述任一CPU处理所述任意两个任务中第一任务的第一关系值为0,或者,所述任一CPU处理所述任意两个任务中第二任务的第一关系值为0。
在其中一个实施例中,所述任务分配目标函数是以最小化联合优化值为目标建立的,所述联合优化值是基于所述核间负载差值和所述核间通信总量确定的。
在其中一个实施例中,所述基于所述任务分配结果,确定多个任务关系值和多个线程关系值,包括:
基于所述任务分配结果,确定任意两个任务之间是否存在数据传输,以得到任意两个任务之间的任务关系值;
基于所述任务分配结果,确定任意两个任务是否同时被分配至任一线程,以得到任意两个任务与任一线程之间的线程关系值。
在其中一个实施例中,所述线程分割目标函数的约束包括:任一任务被唯一线程执行;
若任意两个任务与任一线程之间的线程关系值为0,则所述任意两个任务中第一任务被所述任一CPU执行的关系值为0,或者所述任意两个任务中第二任务被所述任一CPU执行的关系值为0。
在其中一个实施例中,所述线程分割分配函数是以最小化线程数为目标建立的。
在其中一个实施例中,所述通信模块启动时长为启动任一通信模块所需的时长;
所述通信模块执行时长为执行任一通信模块所需的时长,其中,基于任一通信模块所处CPU的核内数据传输时长和核间数据传输时长,确定所述执行任一通信模块所需的时长。
在其中一个实施例中,所述通信模块包括:接收模块和发送模块,所述通信模块调度目标函数的约束包括:
任一发送模块的结束时刻早于任一接收模块的开启时刻;
任一CPU每次执行一个通信模块的数据处理。
一种电力设备,所述电力设备包括:
第一优化模块,用于确定多个CPU处理多个任务的核间负载差值和核间通信总量,根据所述核间负载差值和所述核间通信总量,建立任务分配目标函数并求解,得到任务分配结果,所述任务分配结果用于反映任一CPU处理的若干任务;
第二优化模块,用于基于所述任务分配结果,确定多个任务关系值和多个线程关系值,根据所述多个任务关系值和多个所述线程关系值,建立线程分割目标函数并求解,得到线程分割结果,为所述线程分割结果中的每个线程配置通信模块,所述线程分割结果用于反映任一CPU通过多个线程处理所述任一CPU的若干任务;
第三优化模块,用于确定多个通信模块启动时长和多个通信模块执行时长,根据所述多个通信模块启动时长和所述多个通信模块执行时长,建立通信模块调度目标函数并求解,得到通信模块调度结果,所述通信模块调度结果用于反映任一CPU中多个通信模块的调度顺序。
上述多线程任务调度优化方法,上述多线程任务调度优化方法中,首先以最小化核间负载差值和核间通信总量为目标,建立任务分配目标函数并求解,得到任务分配结果,即为每个CPU分配处理的任务,使得核间负载平衡,并且核间通信总量最小;在任务分配结果的基础上,以在进行线程分割的同时,尽量减少线程数为目标,建立线程分割目标函数并求解,得到线程分割结果,即为每个CPU处理的任务划分线程,提高CPU利用率的同时,控制由大量线程切换次数带来的核间通信时长;在线程分割结果的基础上,根据多个通信模块启动时长和多个通信模块执行时长,以最小化应用运行总时长为目标,建立通信模块调度目标函数并求解,得到通信模块调度结果,即确定每个CPU中通信模块的调度时间,通信模块是静态调度,可以实现应用运行总时长最小,系统吞吐量达到最大;所述多线程任务调度优化方法对应用场景没有限制,并且可以达到核间负载平衡、核间通信总量最小、线程数最小、应用运行总时长最小,系统吞吐量最大的全局最优任务调度。
附图说明
图1为一个实施例中多线程任务调度优化方法的流程示意图;
图2为一个实施例中任务分配结果的示意图;
图3为一个实施例中线程分割结果的示意图;
图4为一个实施例中用于说明通信模块调度顺序的示意图;
图5为一个实施例中得到线程分割结果后多线程任务系统的示意图;
图6为一个实施例中采用静态调度方法得到的结果示意图;
图7为一个实施例中采用动态调度方法得到的结果示意图;
图8为一个实施例中电力设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本实施例中,多线程任务调度优化方法通过建立多任务调度的整数线性规划(ILP,Integer Linear Programming)模型,对ILP模型进行多次优化求解,得到多任务调度结果,其过程包括:
对于嵌入式多线程系统中应用的运行,需要通过多个处理器(CPU)处理多个任务,基于多个处理器(CPU)处理多个任务的应用场景,建立第一ILP模型,基于第一ILP模型得到任务分配结果,具体包括:确定第一ILP模型的相关的多个第一ILP变量,根据多个第一ILP变量,以最小化总通信量为目标建立任务分配目标函数,对任务分配目标函数进行求解,得到任务分配结果;
优化第一ILP模型,得到第二ILP模型,基于第二ILP模型得到线程分割结果,并把通信模块分配到线程分割结果中,具体包括:确定第二ILP模型的多个第二ILP变量,根据多个第二ILP变量,以最小化线程数为目标建立线程分割目标函数,对线程分割目标函数进行求解,得到线程分割结果,为所述线程分割结果中的每个线程配置通信模块。
优化第二ILP模型,得到第三ILP模型,基于第三ILP模型得到通信模块调度序列,具体包括:确定第三ILP模型的多个第三ILP变量,以最小化应用运行总时长为目标建立通信模块调度目标函数,对通信模块调度目标函数进行求解,得到通信模块调度序列。
在一个实施例中,如图1所示,提供了一种多线程任务调度优化方法,本实施例以该方法应用于终端进行举例说明,可以理解的是,该方法也可以应用于服务器,所述多线程任务调度优化方法包括:
101,确定多个CPU处理多个任务的核间负载差值和核间通信总量,根据所述核间负载差值和所述核间通信总量,建立任务分配目标函数并求解,得到任务分配结果。
其中,所述多个任务是运行应用需处理的多个任务,通过终端中的多个CPU处理所述多个任务;所述核间负载差值用于反映多个CPU的负载均衡程度,所述核间通信总量,是任意两个CPU之间的通信量的总和;所述任务分配结果包括:任一CPU处理若干任务。
具体地,嵌入式多线程系统的应用的运行时间,取决于运行时长最长的CPU,因此,在任务分配需要优化CPU负载的均衡,又因为,一些任务和任务之间存在通信,若在不考虑任务之间的通信,直接为CPU分配任务,会导致CPU核间通信太多,引起数据处理的延迟,增加系统通信和数据同步所需的时长,从而造成阻塞,因此,以最小化核间负载差值和核间通信总量为目标,建立任务分配目标函数,并求解,得到任务分配结果。
得到任务分配结果即确定了每个CPU处理哪些任务,如图2所示,多个CPU包括:处理器1和处理器2,处理器1处理的任务包括:F0,F1,F2,F3,F4,F5和FF,处理器2处理的任务包括:F6,F7和F8,图2中的箭头表示数据传输方向,例如,任务F2和任务F3之间存在数据传输。
最小化核间负载差值和核间通信总量为目标建立任务分配目标函数,可以是:通过加权确定核间负载差值和核间通信总量的联合优化值,以最小化联合优化值为目标建立任务分配目标函数。
102,基于所述任务分配结果,确定多个任务关系值和多个线程关系值,根据所述多个任务关系值和多个所述线程关系值,建立线程分割目标函数并求解,得到线程分割结果,为所述线程分割结果中的每个线程配置通信模块。
其中,任务关系值两个任务之间的关系,用于反映两个任务之间是否存在数据传输关系,线程关系值是任务和线程之间的关系,用于反映任务是否被分配至线程。所述线程分割结果包括:通过若干线程执行任一CPU处理的若干任务。
具体地,对于任一CPU,将任一CPU的多个任务划分到多个线程进行处理,采用多线程处理可以提高CPU利用率,但是CPU内的频繁进行线程切换会增加处理时长,因此,综合考虑CPU利用率和线程切换次数,以在进行线程分割的同时,以最小化线程数为目标建立线程分割目标函数。
对线程分割目标函数进行求解,得到线程分割结果,线程分割是在任务分配结果的基础上,将每个CPU处理的若干任务划分至若干线程执行,并为每个线程配置通信模块。如图3所示,CPU包括:处理器1和处理器2,将处理器1处理的任务划分为两个线程处理,处理器1中线程1的通信模块包括:R3和S2,处理器1中线程2的通信模块包括:S0,处理器2中线程3的通信模块:R1、R2和S3,处理器2中线程4的通信模块包括R0和S1。
103,确定多个通信模块启动时长和多个通信模块执行时长,根据所述多个通信模块启动时长和所述多个通信模块执行时长,建立通信模块调度目标函数并求解,得到通信模块调度结果。
其中,所述通信模块启动时长是启动通信模块的时长,所述通信模块的执行时长是通信模块进行核内数据传输、核间数据传输的时长;所述通信模块调度结果用于反映任一CPU中多个通信模块的调度顺序。
通信模块执行顺序的不同对系统的性能影响巨大,高效的调度机制能减少系统的通信同步时间;调度机制可以分为动态调度和静态调度,动态调度仅在线程阻塞时才切换线程,因此动态调度无法选择最佳切换时间,系统吞吐量不能达到最优,所述多线程任务调度优化方法确定了通信模块的调度顺序,属于静态调度,静态调度可以确定各任务的执行顺序,并使系统吞吐量达到最大。
具体地,根据所述多个通信模块启动时长和所述多个通信模块执行时长,以最小化应用运行总时长为目标,建立通信模块调度目标函数。应用运行总时长是所述多个CPU处理完所述多个任务所需的时长,在应用运行的每个周期均会通过多个CPU处理完所述多个任务,所述应用运行总时长大于任一周期内多个通信模块启动时长和多个通信模块执行时长的和。对目标函数进行求解,可以得到通信模块调度结果,通信模块调度结果包括任一CPU中每个通信模块的调度时间,通过任一CPU中每个通信模块的切换时间可以反映任一CPU中多个通信模块的调度顺序。
上述多线程任务调度优化方法中,首先以最小化核间负载差值和核间通信总量为目标,建立任务分配目标函数并求解,得到任务分配结果,即为每个CPU分配处理的任务,使得核间负载平衡,并且核间通信总量最小;在任务分配结果的基础上,以在进行线程分割的同时,尽量减少线程数为目标,建立线程分割目标函数并求解,得到线程分割结果,即为每个CPU处理的任务划分线程,提高CPU利用率的同时,控制由大量线程切换次数带来的核间通信时长;在线程分割结果的基础上,根据多个通信模块启动时长和多个通信模块执行时长,以最小化应用运行总时长为目标,建立通信模块调度目标函数并求解,得到通信模块调度结果,即确定每个CPU中通信模块的调度时间,通信模块是静态调度,可以实现应用运行总时长最小,系统吞吐量达到最大;所述多线程任务调度优化方法对应用场景没有限制,并且可以达到核间负载平衡、核间通信总量最小、线程数最小、应用运行总时长最小,系统吞吐量最大的全局最优任务调度。
步骤101中,确定多个CPU处理多个任务的核间负载差值和核间通信总量,包括:
201、确定多个第一关系值、多个参考时长和多个运行平均时长,其中,所述第一关系值用于反映任一CPU是否处理任一任务,所述参考时长是任一CPU运行任一任务所需的时长,所述运行平均时长是所述多个CPU运行任一任务的平均时长。
具体地,所述第一关系值记为Bik,i∈{1,|T|},|T|是任务集合T中任务的数量,k∈{1,|C|},|C|是CPU集合C中CPU的数量;Bik用于反映CPU:ck是否处理任务ti,Bik为0或者1,Bik为0表示ck不处理ti,Bik为1表示ck处理ti。所述参考时长记为NTik,反映ck处理ti的所需的时长,当Bik为0时,NTik也为0,当Bik为1时,NTik为具体数值;所述运行平均时长记为CTi,表示多个CPU运行任务ti的平均时长。
202、根据所述多个第一关系值、所述多个参考时长、所述多个运行平均时长和所述多个CPU的数量,确定核间负载差值。
具体地,通过公式(1)确定核间负载差值。
其中,NV为核间负载差值。
203、确定多个第二关系值,以及多个参考通信量,其中,所述第二关系值用于反映任一CPU是否运行任意两个任务,所述参考通信量是任意两个任务之间的通信量。
具体地,第二关系值记为Aij,k,其中,Aij,k为0或者1,若ck处理ti和tj,则Aij,k为1,若Aij,k为0或者1,若ck不处理ti和tj,则Aij,k为0;参考通信量记为Dij,若ti和tj之间存在数据传输,则Dij为ti和tj之间传输的参考通信量,若ti和tj之间存在数据传输,则Dij为0(ti和tj之间的参考通信量为0)。
204、根据所述多个第二关系值和所述多个通信量确定核间通信总量。
具体地,通过公式(2)确定核间通信总量。
CV=∑i≤|T|∑i<j≤|T|(1-∑k≤|C|Aij,k)×Dij (2)
其中,CV为核间通信总量。
步骤101中,确定根据所述核间负载差值和所述核间通信总量,建立任务分配目标函数,包括:通过加权确定核间负载差值和核间通信总量的联合优化值,以最小化联合优化值为目标建立任务分配目标函数。任务分配目标函数如公式(3)所示。
min(m1×TV+m2×CV) (3)
其中,m1是核间负载差值的权重,m2是核间通信总量的权重,m1和m2可以根据需求自定义设置。
所述任务分配目标函数的约束条件包括:所述任一任务被唯一CPU处理;若任一CPU运行任意两个任务的第二关系值为零,则所述任一CPU处理所述任意两个任务中第一任务的第一关系值为0,或者,所述任一CPU处理所述任意两个任务中第二任务的第一关系值为0。
所述任一任务被唯一CPU处理,指的是,对于任一任务:tx,存在:例如,对于任务ti=t1,若ck=c2处理t1,则B12=1,并且B1k′=0,k′≠2。若任一CPU运行任意两个任务的第二关系值为零,是指若ck不处理ti和tj(ti和tj没有被分配到ck),即Aij,k=0时,则Bik=0,或者,Bjk=0。
在一个实施例中,步骤102中,所述基于所述任务分配结果,确定多个任务关系值和多个线程关系值,包括:
301、基于所述任务分配结果,确定任意两个任务之间是否存在数据传输,以得到任意两个任务之间的任务关系值。
具体地,任务关系值记为Yij,若ti和tj之间存在数据传输,则Yij为0,若ti和tj之间不存在数据传输,则Yij为0(ti和tj之间的参考通信量为0)。
302、基于所述任务分配结果,确定任意两个任务是否同时被分配至任一线程,以得到任意两个任务与任一线程之间的线程关系值。
具体地,线程关系值记为Sij,kl,若ti和tj均被分配到线程trkl,则Sij,kl为1,kl∈TRl,TRl是线程集合,若ti和tj不是均被分配到线程trkl,则Sij,kl为0。
步骤102中,根据所述多个任务关系值和多个所述线程关系值,建立线程分割目标函数,包括:根据所述多个任务关系值和多个所述线程关系值,以最小化线程数为目标建立线程分割目标函数,如公式(4)所示。
其中,|TRl|是线程集合中的线程数量。
所述线程分割目标函数的约束包括:任一任务被唯一线程执行;若任意两个任务与任一线程之间的线程关系值为0,则所述任意两个任务中第一任务被所述任一CPU执行的关系值为0,或者所述任意两个任务中第二任务被所述任一CPU执行的关系值为0。
在一个实施例中,对线程分割目标函数进行求解,得到线程分割结果,即确定了每个CPU中的多个线程,以及每个线程处理的任务,再为每个线程配置通信模块。通信模块包括接收模块和发送模块,每个线程一定会配置有发送模块。
在一个实施例中,确定了每个CPU中的多个线程,以及每个线程处理的任务后,进一步优化通信模块调度,实现最大化系统吞吐量,通信模块执行顺序的不同对系统的性能影响巨大,高效的调度机制能减少系统的通信同步时间。
如图4所示,图4中括号内数字是通信模块的执行时间,图4存在两种通信模块的调度顺序:(1),S1->R1->F1->F2->S2->R2->F4->F3;(2),F1->S1->R1->F4->F2->S2->R2->F3;顺序(1)中F1和F4是独立于其它模块的,F2是依赖于R1和F1的,所以F2得等R1和F1执行完毕才可以执行,同理F3也必须等R2和F4执行完毕再执行,顺序(2)中,线程1执行F1时,线程2可以同时处理S1,这相当于执行S1的时间被隐藏在F1的执行过程中,同理在线程1执行其他模块时,线程2可以执行F4,因为F4独立于其他模块,这时F4的执行时间也被隐藏在线程1其他模块的执行过程中。因此,顺序(1)的调度效率优于顺序(2)的调度效率。基于此,可以确定并行的通信模块调度执行效率高于串行的通信模块调度,因此,为了避免处理器发生阻塞,应将发送模块提前,并将接收模块推后。
线程内通信模块调度通常使用全局调度方法以避免死锁,全局调度方法能统一调度所有模块,但由于调度的模块过多,因此其速度较慢。局部调度方法只关注同一线程内的任务,因此可以很快的获得调度结果,但可能会引起系统死锁。本发明综合上述两种方法的优缺点,提出一种新的调度方法。
下面介绍三个定义:
线程环(TC):任意两个线程存在一条环状通信路径。
前导模块和后续模块:对于通信模块M和N,如果存在从M到N的非环状依赖路径,则称M是N的前导模块,N是M的后续模块。通信模块M的前导模块集合记为fro(M),通信模块M的后续模块集合记为bac(M)。
纯后续模块:M为N的后续模块,如果M只与N或N的后续模块存在依赖关系,则称M是N的纯后续模块。通信模块M的纯后续模块集合记为pb(M)。
概括来说,调度算法对处于TC中的通信模块使用全局调度方法,并根据通信模块间的依赖关系决定其执行顺序。然后,对剩余通信模块使用局部调度方法。第一步,调度不依赖于接收模块的发送模块。根据发送模块及其之前通信模块执行时间总和对发送模块进行排序,并优先调度总执行时间短的发送模块;一旦某个发送模块被调度,则同时将其前导模块添加到调度队列。第二步,将不依赖于接收模块的功能模块添加到调度队列。第三步,调度接收模块及依赖于它的发送模块,其选择发送模块的策略与第一步相同;然后根据纯后续模块的执行总和对被选中发送模块的先驱接收模块进行排序,并优先调度总执行时间长的接收模块及其纯后继通信模块。第四步,调度剩下的接收模块,其调度策略与第三步相同。调度算法如表1所示。
表1
本发明采用的是静态调度的方法,通过静态调度方法可以确定各任务的执行顺序,使得系统吞吐量达到最大。动态调度方法,仅在线程阻塞时才切换线程,因此动态调度方法无法选择线程的最佳切换时间,系统吞吐量不能达到最优。
如图5、图6和图7,图5是得到线程分割结果后多线程任务系统的示意图,图6是采用静态调度方法执行的结果,图7是采用动态调度方法执行的结果,可见,采用动态调度方法,当F0[i+1]被处理器1执行后,S0[i+1]仍然处于可执行状态,因此线程1被继续执行一次循环,此时,线程2等待来自R1[i-1]的数据,因此处理器2处于阻塞状态。采用静态调度方法,为了减少处理器2的同步开销,处理器1执行完F0[i+1]后主动进行线程切换(即在当前线程处于可执行状态时进行线程切换),因此,静态调度方法能根据系统运行状态自行选择线程切换时间,有效降低了系统同步开销。
基于配置了通信模块的线程分割结果,通过静态调度方法确定通信模块调度结果。具体地,根据所述多个通信模块启动时长和所述多个通信模块执行时长,建立通信模块调度目标函数并求解,得到通信模块调度结果。
建立通信模块调度目标函数要用到的变量包括:
CNrec:核内接收模块;CNsend:核内发送模块;CJrec:核间接收模块;CJsend:核间发送模块;M:功能模块和发送/接收模块;tmsw,k:CPU中ck∈C执行一次线程切换的时长;D'ij:模块mi,mj∈M间的通信传输量;tmtrf,k:单位数据的核内通信传输时长;tmin-trf:单位数据的核间通信传输时长;tmst,k:CPU中ck∈C执行一次通信启动的时长;tmi:执行模块mi∈M的时长;anp:运行应用需要的周期数。
所述通信模块启动时长为启动任一通信模块所需的时长;所述通信模块执行时长为执行任一通信模块所需的时长,其中,基于任一通信模块所处CPU的核内数据传输时长和核间数据传输时长,确定所述执行任一通信模块所需的时长。
具体地,应用运行总时长是所述多个CPU处理完所述多个任务所需的时长,在应用运行的每个周期均会通过多个CPU处理完所述多个任务。所述通信模块启动时长记为Oij,表示模块mi∈M在第l周期的启动所需的时长;所述通信模块执行时长记为:tmi。
所述通信模块调度目标函数如公式(5)所示。
min(tmall) (5)
其中,tmall表示应用运行总时长,最小化应用运行总时长,可以使得系统吞吐量最大化。
所述通信模块调度目标函数的约束包括:任一发送模块的结束时刻早于任一接收模块的开启时刻;任一CPU每次执行一个通信模块的数据处理。
任一发送模块的结束时刻早于任一接收模块的开启时刻,通过公式(6)、公式(7)和公式(8)表示:
t(Oi,l+tmi)≤t(Oj,l) (6)
t(Oj,l+tmj)≤t(Oi,l+1) (7)
t(Oi,l+tmi+tmsw,k)≤t(Oj,l) (8)
公式(6)、公式(7)和公式(8)中,mi表示任一发送模块,mj表示任一接收模块。
公式(6)中,t(Oi,l+tmi)表示在第l周期完成启动发送模块mi,以及执行发送模块mi的时刻,t(Oj,l)是第l周期开始启动接收模块mj的时刻,意思是,在同一周期内,发送模块的结束时刻早于任一接收模块的开启时刻。
公式(7)中,t(Oj,l+tmj)是在第l周期完成启动接收模块mj,以及执行接收模块mj的时刻,t(Oi,l+1)是第l+1周期启动发送模块mi的时刻。
公式(8)中,tmsw,k是CPUck执行一次线程切换的时长,t(Oi,l+tmi+tmsw,k)是在第l周期完成启动发送模块mi、执行发送模块mi和线程切换的时刻,t(Oj,l)是第l周期开始启动接收模块mj的时刻。
所述通信模块调度目标函数的约束包括:应用运行总时长大于任一周期内任意模块的处理时长,任一周期内任意模块的处理时长等于任一周期内任意模块的处理时长任意模块的启动时长和执行时长的和。如公式(9)所示。
tmall≥Oi,anp+tmi (9)
其中,anp是运行所需要的周期数,Oi,anp表示任一周期内模块mi的启动时长。
为了说明所述多线程任务调度优化方法的技术效果,通过以下具体实施例进行说明。
在一个实施例中,采用一个可自主配置的多核片上系统硬件平台,其通信网络可以很好满足实验需求,同时可以灵活的扩展处理器。该多核片上系统包含8个CPU核,其硬件架构在Xilinx V6VLX760 FPGA上实现。本发明在LESCEA平台实现用于电力安全通信IPSecVPN程序:首先进行线程分割;然后进行线程内调度;最后实现静态调度,生成相应的软件程序。并使用该软件程序进行TCP/IP加密通信。实验组分别在2、4、6、8核架构上实验,并以LESCEA平台为基础。如表2所示,包含了五组实验(G0、G1、LESCEA、G2、G3)。
表2
采用上述技术均能提升系统性能,参考表3,示出了不同架构的应用执行时间。
表3
表4是8核架构上处理器各状态所用开销。
表4
通过上述实验数据可知,本发明提出的多线程任务调度优化方法能有效降低通信时长。
确定不同系统架构的线程切换次数,如表5所示。
表5
如表5所示,虽然G3的线程切换次数更高,但静态任务调度的线程切换时机更佳,使得系统总周期数大幅降低,系统总体性能大幅提升。
随着多核处理器系统的广泛应用和集成电路制造工艺的不断进步,需要针对复杂的线程通信问题提出一套解决方案。本发明提出多线程任务调度优化方法,有效提升了处理器利用率和嵌入式多线程系统性能。
上述多线程任务调度优化方法中,首先以最小化核间负载差值和核间通信总量为目标,建立任务分配目标函数并求解,得到任务分配结果,即为每个CPU分配处理的任务,使得核间负载平衡,并且核间通信总量最小;在任务分配结果的基础上,以在进行线程分割的同时,尽量减少线程数为目标,建立线程分割目标函数并求解,得到线程分割结果,即为每个CPU处理的任务划分线程,提高CPU利用率的同时,控制由大量线程切换次数带来的核间通信时长;在线程分割结果的基础上,根据多个通信模块启动时长和多个通信模块执行时长,以最小化应用运行总时长为目标,建立通信模块调度目标函数并求解,得到通信模块调度结果,即确定每个CPU中通信模块的调度时间,通信模块是静态调度,可以实现应用运行总时长最小,系统吞吐量达到最大;所述多线程任务调度优化方法对应用场景没有限制,并且可以达到核间负载平衡、核间通信总量最小、线程数最小、应用运行总时长最小,系统吞吐量最大的全局最优任务调度。
在一个实施例中,如图8所示,提供了电力设备,包括:第一优化模块、第二优化模块和第三优化模块,其中:
第一优化模块,用于确定多个CPU处理多个任务的核间负载差值和核间通信总量,根据所述核间负载差值和所述核间通信总量,建立任务分配目标函数并求解,得到任务分配结果,所述任务分配结果用于反映任一CPU处理的若干任务;
第二优化模块,用于基于所述任务分配结果,确定多个任务关系值和多个线程关系值,根据所述多个任务关系值和多个所述线程关系值,建立线程分割目标函数并求解,得到线程分割结果,为所述线程分割结果中的每个线程配置通信模块,所述线程分割结果用于反映任一CPU通过多个线程处理所述任一CPU的若干任务;
第三优化模块,用于确定多个通信模块启动时长和多个通信模块执行时长,根据所述多个通信模块启动时长和所述多个通信模块执行时长,建立通信模块调度目标函数并求解,得到通信模块调度结果,所述通信模块调度结果用于反映任一CPU中多个通信模块的调度顺序。
关于电力设备的具体限定可以参见上文中对于多线程任务调度优化方法的限定,在此不再赘述。上述电力设备中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种多线程任务调度优化方法,其特征在于,所述方法包括:
确定多个CPU处理多个任务的核间负载差值和核间通信总量,根据所述核间负载差值和所述核间通信总量,建立任务分配目标函数并求解,得到任务分配结果,所述任务分配结果用于反映任一CPU处理的若干任务;
基于所述任务分配结果,确定多个任务关系值和多个线程关系值,根据所述多个任务关系值和多个所述线程关系值,建立线程分割目标函数并求解,得到线程分割结果,为所述线程分割结果中的每个线程配置通信模块,所述线程分割结果用于反映任一CPU通过多个线程处理所述任一CPU的若干任务;
确定多个通信模块启动时长和多个通信模块执行时长,根据所述多个通信模块启动时长和所述多个通信模块执行时长,建立通信模块调度目标函数并求解,得到通信模块调度结果,所述通信模块调度结果用于反映任一CPU中多个通信模块的调度顺序。
2.根据权利要求1所述的方法,其特征在于,所述确定多个CPU处理多个任务的核间负载差值和核间通信总量,包括:
确定多个第一关系值、多个参考时长和多个运行平均时长,其中,所述第一关系值用于反映任一CPU是否处理任一任务,所述参考时长是任一CPU运行任一任务所需的时长,所述运行平均时长是所述多个CPU运行任一任务的平均时长;
根据所述多个第一关系值、所述多个参考时长、所述多个运行平均时长和所述多个CPU的数量,确定核间负载差值;
确定多个第二关系值,以及多个参考通信量,其中,所述第二关系值用于反映任一CPU是否运行任意两个任务,所述参考通信量是任意两个任务之间的通信量;
根据所述多个第二关系值和所述多个通信量确定核间通信总量。
3.根据权利要求2所述的方法,其特征在于,所述任务分配目标函数的约束条件包括:所述任一任务被唯一CPU处理;
若任一CPU运行任意两个任务的第二关系值为零,则所述任一CPU处理所述任意两个任务中第一任务的第一关系值为0,或者,所述任一CPU处理所述任意两个任务中第二任务的第一关系值为0。
4.根据权利要求1所述的方法,其特征在于,所述任务分配目标函数是以最小化联合优化值为目标建立的,所述联合优化值是基于所述核间负载差值和所述核间通信总量确定的。
5.根据权利要求1所述的方法,其特征在于,所述基于所述任务分配结果,确定多个任务关系值和多个线程关系值,包括:
基于所述任务分配结果,确定任意两个任务之间是否存在数据传输,以得到任意两个任务之间的任务关系值;
基于所述任务分配结果,确定任意两个任务是否同时被分配至任一线程,以得到任意两个任务与任一线程之间的线程关系值。
6.根据权利要求5所述的方法,其特征在于,所述线程分割目标函数的约束包括:任一任务被唯一线程执行;
若任意两个任务与任一线程之间的线程关系值为0,则所述任意两个任务中第一任务被所述任一CPU执行的关系值为0,或者所述任意两个任务中第二任务被所述任一CPU执行的关系值为0。
7.根据权利要求5所述的方法,其特征在于,所述线程分割分配函数是以最小化线程数为目标建立的。
8.根据权利要求1所述的方法,其特征在于,所述通信模块启动时长为启动任一通信模块所需的时长;
所述通信模块执行时长为执行任一通信模块所需的时长,其中,基于任一通信模块所处CPU的核内数据传输时长和核间数据传输时长,确定所述执行任一通信模块所需的时长。
9.根据权利要求8所述的方法,其特征在于,任一CPU中线程的通信模块包括:接收模块和发送模块,每个线程至少包括发送模块;所述通信模块调度目标函数的约束包括:
任一发送模块的结束时刻早于任一接收模块的开启时刻;
任一CPU每次执行一个通信模块的数据处理。
10.一种电力设备,其特征在于,所述电力设备包括:
第一优化模块,用于确定多个CPU处理多个任务的核间负载差值和核间通信总量,根据所述核间负载差值和所述核间通信总量,建立任务分配目标函数并求解,得到任务分配结果,所述任务分配结果用于反映任一CPU处理的若干任务;
第二优化模块,用于基于所述任务分配结果,确定多个任务关系值和多个线程关系值,根据所述多个任务关系值和多个所述线程关系值,建立线程分割目标函数并求解,得到线程分割结果,为所述线程分割结果中的每个线程配置通信模块,所述线程分割结果用于反映任一CPU通过多个线程处理所述任一CPU的若干任务;
第三优化模块,用于确定多个通信模块启动时长和多个通信模块执行时长,根据所述多个通信模块启动时长和所述多个通信模块执行时长,建立通信模块调度目标函数并求解,得到通信模块调度结果,所述通信模块调度结果用于反映任一CPU中多个通信模块的调度顺序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111175609.9A CN113835866B (zh) | 2021-10-09 | 2021-10-09 | 多线程任务调度优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111175609.9A CN113835866B (zh) | 2021-10-09 | 2021-10-09 | 多线程任务调度优化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113835866A true CN113835866A (zh) | 2021-12-24 |
CN113835866B CN113835866B (zh) | 2024-02-20 |
Family
ID=78968135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111175609.9A Active CN113835866B (zh) | 2021-10-09 | 2021-10-09 | 多线程任务调度优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113835866B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114028A (zh) * | 2022-07-05 | 2022-09-27 | 南方电网科学研究院有限责任公司 | 一种电力仿真二次控制的任务分配方法及装置 |
CN115344388A (zh) * | 2022-08-22 | 2022-11-15 | 南方电网科学研究院有限责任公司 | 虑及通信和算力的电力实时仿真计算任务分配方法及装置 |
CN116204327A (zh) * | 2023-05-06 | 2023-06-02 | 阿里巴巴(中国)有限公司 | 分布式系统通信调度方法及分布式机器学习系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060168587A1 (en) * | 2005-01-24 | 2006-07-27 | Shahzad Aslam-Mir | Interoperable communications apparatus and method |
CN101968748A (zh) * | 2010-09-17 | 2011-02-09 | 北京星网锐捷网络技术有限公司 | 多线程数据调度方法、装置及网络设备 |
US20120102500A1 (en) * | 2010-10-25 | 2012-04-26 | Samsung Electronics Co., Ltd. | Numa aware system task management |
CN105700959A (zh) * | 2016-01-13 | 2016-06-22 | 南京邮电大学 | 一种面向多核平台的多线程划分及静态均衡调度策略 |
CN106897203A (zh) * | 2017-03-29 | 2017-06-27 | 北京经纬恒润科技有限公司 | 一种cpu负载率计算方法及装置 |
CN109298918A (zh) * | 2018-07-10 | 2019-02-01 | 东南大学 | 一种基于线性规划的并行任务节能调度方法 |
CN111415291A (zh) * | 2020-02-21 | 2020-07-14 | 华为技术有限公司 | 一种多核芯片及其调度方法 |
CN111897647A (zh) * | 2020-09-29 | 2020-11-06 | 杭州未名信科科技有限公司 | 一种多核系统中多线程调度方法、装置及设备 |
-
2021
- 2021-10-09 CN CN202111175609.9A patent/CN113835866B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060168587A1 (en) * | 2005-01-24 | 2006-07-27 | Shahzad Aslam-Mir | Interoperable communications apparatus and method |
CN101968748A (zh) * | 2010-09-17 | 2011-02-09 | 北京星网锐捷网络技术有限公司 | 多线程数据调度方法、装置及网络设备 |
US20120102500A1 (en) * | 2010-10-25 | 2012-04-26 | Samsung Electronics Co., Ltd. | Numa aware system task management |
CN105700959A (zh) * | 2016-01-13 | 2016-06-22 | 南京邮电大学 | 一种面向多核平台的多线程划分及静态均衡调度策略 |
CN106897203A (zh) * | 2017-03-29 | 2017-06-27 | 北京经纬恒润科技有限公司 | 一种cpu负载率计算方法及装置 |
CN109298918A (zh) * | 2018-07-10 | 2019-02-01 | 东南大学 | 一种基于线性规划的并行任务节能调度方法 |
CN111415291A (zh) * | 2020-02-21 | 2020-07-14 | 华为技术有限公司 | 一种多核芯片及其调度方法 |
CN111897647A (zh) * | 2020-09-29 | 2020-11-06 | 杭州未名信科科技有限公司 | 一种多核系统中多线程调度方法、装置及设备 |
Non-Patent Citations (2)
Title |
---|
SKVORTSOV SERGEY VLADIMIROVICH等: "Scheduling multithreaded processes by criterion of minimum of number data exchanges between processor cores", 《2018 7TH MEDITERRANEAN CONFERENCE ON EMBEDDED COMPUTING (MECO)》, pages 1 - 4 * |
蔡田田等: "多粒度通信优化的MPSoC调度映射策略", 《浙江大学学报(理学版)》, pages 429 - 436 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114028A (zh) * | 2022-07-05 | 2022-09-27 | 南方电网科学研究院有限责任公司 | 一种电力仿真二次控制的任务分配方法及装置 |
CN115114028B (zh) * | 2022-07-05 | 2023-04-28 | 南方电网科学研究院有限责任公司 | 一种电力仿真二次控制的任务分配方法及装置 |
CN115344388A (zh) * | 2022-08-22 | 2022-11-15 | 南方电网科学研究院有限责任公司 | 虑及通信和算力的电力实时仿真计算任务分配方法及装置 |
CN115344388B (zh) * | 2022-08-22 | 2023-12-01 | 南方电网科学研究院有限责任公司 | 虑及通信和算力的电力实时仿真计算任务分配方法及装置 |
CN116204327A (zh) * | 2023-05-06 | 2023-06-02 | 阿里巴巴(中国)有限公司 | 分布式系统通信调度方法及分布式机器学习系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113835866B (zh) | 2024-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113835866B (zh) | 多线程任务调度优化方法 | |
US8881158B2 (en) | Schedule decision device, parallel execution device, schedule decision method, and program | |
CN112465129B (zh) | 片内异构人工智能处理器 | |
Page et al. | Dynamic task scheduling using genetic algorithms for heterogeneous distributed computing | |
US20200012507A1 (en) | Control system for microkernel architecture of industrial server and industrial server comprising the same | |
Huang et al. | A workflow for runtime adaptive task allocation on heterogeneous MPSoCs | |
US20150113542A1 (en) | Knapsack-based sharing-aware scheduler for coprocessor-based compute clusters | |
Cho et al. | Scheduling parallel real-time tasks on the minimum number of processors | |
CN111258655A (zh) | 融合计算方法及可读存储介质 | |
Wang et al. | A smart semipartitioned real-time scheduling strategy for mixed-criticality systems in 6G-based edge computing | |
CN114371933A (zh) | 一种动态调度多核融合计算处理器的方法及其系统 | |
Muthu et al. | Optimized scheduling and resource allocation using evolutionary algorithms in cloud environment | |
Gharajeh et al. | Heuristic-based task-to-thread mapping in multi-core processors | |
Natarajan | Parallel queue scheduling in dynamic cloud environment using backfilling algorithm | |
Alhussian et al. | An unfair semi-greedy real-time multiprocessor scheduling algorithm | |
CN116708451A (zh) | 一种边云协同调度方法及系统 | |
Zheng et al. | Joint scheduling of overlapping MapReduce phases: Pair jobs for optimization | |
CN112506640B (zh) | 一种用于加密运算芯片的多处理器架构及调配方法 | |
Dong et al. | A general analysis framework for soft real-time tasks | |
CN113010319A (zh) | 混合启发式规则和遗传算法的动态工作流调度优化方法 | |
CN107589985B (zh) | 一种面向大数据平台的两阶段作业调度方法及系统 | |
CN114816720B (zh) | 多任务共享物理处理器的调度方法、装置及终端设备 | |
CN111984328B (zh) | 具有ooda循环分区机制的流式处理器 | |
Srinivas et al. | Improved Red Deer Algorithm for Scientific Workflow Scheduling in Cloud Environment | |
Filipović et al. | Modified master-slave algorithm for load balancing in parallel applications |
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 |