一种基于NUMA系统的任务调度方法及装置与流程

文档序号:11285969阅读:301来源:国知局
一种基于NUMA系统的任务调度方法及装置与流程

本发明涉及计算机技术领域,特别是涉及一种基于numa系统的任务调度方法及装置。



背景技术:

随着计算机技术的快速发展,numa(nonuniformmemoryaccessarchitecture,非统一内存访问结构)技术也得到了快速发展,同时,基于numa技术构建的numa系统也在各行业得到了广泛应用。

numa系统包含多个numa节点,numa节点用于承载任务的执行。不同任务对不同类型资源的需求不同,当numa系统产生瓶颈,出现系统性能下降问题时,需要通过任务调度来解决。

在现有技术中,多是对任务进行随机调度,即随机将目标任务从a节点调度到b节点上,经过一段时间后,如果系统性能未得到提升,则继续进行任务的随机调度。

这种随机调度的方法存在一定的缺点,其很难从根本上解决numa系统当前瓶颈问题,系统性能也不能得到有效提升。



技术实现要素:

本发明的目的是提供一种基于numa系统的任务调度方法及装置,以从根本上解决numa系统当前瓶颈问题,提升系统整体性能。

为解决上述技术问题,本发明提供如下技术方案:

一种基于numa系统的任务调度方法,包括:

在达到预设的任务调度触发条件时,确定任务集合中每个任务对每种类型资源的需求,所述任务集合由numa系统中每个numa节点上当前运行的任务构成;

根据每个任务对每种类型资源的需求,确定所述numa系统当前瓶颈对应资源的目标类型;

确定所述任务集合中每个任务对所述目标类型资源的需求度;

根据每个任务对所述目标类型资源的需求度,将所述任务集合中的任务划分为多个任务组,以使按照大小顺序排列的前n个需求度对应的任务处于不同任务组中,n为任务组个数,n小于或等于所述numa系统中numa节点个数;

将每个任务组中的任务分别调度到对应的numa节点上。

在本发明的一种具体实施方式中,所述根据每个任务对每种类型资源的需求,确定所述numa系统当前瓶颈对应资源的目标类型,包括:

针对每种类型资源,确定所述任务集合中所有任务对该类型资源的总需求;

将最大总需求对应的类型确定为所述numa系统当前瓶颈对应资源的目标类型。

在本发明的一种具体实施方式中,所述确定所述任务集合中每个任务对所述目标类型资源的需求度,包括:

获得设定时间段内对所述任务集合中每个任务的监测数据;

基于所述监测数据,确定每个任务对所述目标类型资源的访问缺失率;

根据每个任务对所述目标类型资源的访问缺失率,确定每个任务对所述目标类型资源的需求度。

在本发明的一种具体实施方式中,所述根据每个任务对所述目标类型资源的需求度,将所述任务集合中的任务划分为多个任务组,包括:

根据所述任务集合中任务数量及所述numa系统中numa节点数量,确定任务组个数n;

将所述任务集合确定为待划分集合;

将所述待划分集合中最大需求度对应的任务和最小需求度对应的任务组合为一个任务组;

将未被划分的任务构成的集合确定为待划分集合,重复执行所述将所述待划分集合中最大需求度对应的任务和最小需求度对应的任务组合为一个任务组的步骤,直至得到的任务组数量为n,如果存在未被划分的任务,则将未被划分的任务随机或者按照设定顺序划分到n个任务组中。

在本发明的一种具体实施方式中,所述资源为内存资源、cpu资源或带宽资源。

一种基于numa系统的任务调度装置,包括:

需求确定模块,用于在达到预设的任务调度触发条件时,确定任务集合中每个任务对每种类型资源的需求,所述任务集合由numa系统中每个numa节点上当前运行的任务构成;

类型确定模块,用于根据每个任务对每种类型资源的需求,确定所述numa系统当前瓶颈对应资源的目标类型;

需求度确定模块,用于确定所述任务集合中每个任务对所述目标类型资源的需求度;

分组模块,用于根据每个任务对所述目标类型资源的需求度,将所述任务集合中的任务划分为多个任务组,以使按照大小顺序排列的前n个需求度对应的任务处于不同任务组中,n为任务组个数,n小于或等于所述numa系统中numa节点个数;

任务调度模块,用于将每个任务组中的任务分别调度到对应的numa节点上。

在本发明的一种具体实施方式中,所述类型确定模块,具体用于:

针对每种类型资源,确定所述任务集合中所有任务对该类型资源的总需求;

将最大总需求对应的类型确定为所述numa系统当前瓶颈对应资源的目标类型。

在本发明的一种具体实施方式中,所述需求度确定模块,具体用于:

获得设定时间段内对所述任务集合中每个任务的监测数据;

基于所述监测数据,确定每个任务对所述目标类型资源的访问缺失率;

根据每个任务对所述目标类型资源的访问缺失率,确定每个任务对所述目标类型资源的需求度。

在本发明的一种具体实施方式中,所述分组模块,具体用于:

根据所述任务集合中任务数量及所述numa系统中numa节点数量,确定任务组个数n;

将所述任务集合确定为待划分集合;

将所述待划分集合中最大需求度对应的任务和最小需求度对应的任务组合为一个任务组;

将未被划分的任务构成的集合确定为待划分集合,重复执行所述将所述待划分集合中最大需求度对应的任务和最小需求度对应的任务组合为一个任务组的步骤,直至得到的任务组数量为n,如果存在未被划分的任务,则将未被划分的任务随机或者按照设定顺序划分到n个任务组中。

在本发明的一种具体实施方式中,所述资源为内存资源、cpu资源或带宽资源。

应用本发明实施例所提供的技术方案,在达到预设的任务调度触发条件时,可以确定任务集合中每个任务对每种类型资源的需求,根据每个任务对每种类型资源的需求,确定numa系统当前瓶颈对应资源的目标类型,确定任务集合中每个任务对目标类型资源的需求度,根据需求度,将任务集合中的任务划分为多个任务组,使按照大小顺序排列的前n个需求度对应的任务处于不同任务组中,将每个任务组中的任务分别调度到对应的numa节点上。进行任务调度后,同一numa节点上的任务对目标类型资源的需求度差别较大,可以降低同一numa节点上的任务对目标类型资源的竞争性,从根本上解决numa系统当前瓶颈问题,提升系统整体性能。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例中一种基于numa系统的任务调度方法的实施流程图;

图2为本发明实施例中一种基于numa系统的任务调度装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1所示,为本发明实施例所提供的一种基于numa系统的任务调度方法的实施流程图,该方法可以包括以下步骤:

s110:在达到预设的任务调度触发条件时,确定任务集合中每个任务对每种类型资源的需求。

任务集合由numa系统中每个numa节点上当前运行的任务构成。

在numa系统中,numa节点可以承载任务的执行。可以将numa系统中每个numa节点上当前运行的任务构成任务集合。

在本发明实施例中,可以预先设定任务调度触发条件,具体的,可以设定调度周期,当到达新的调度周期时,即可视为达到了任务调度触发条件,或者,将系统性能下降到预设等级设定为任务调度触发条件,即当检测到系统性能下降到该预设等级时,视为达到了任务调度触发条件。

可以预先设定多个任务调度触发条件,在达到任意一个设定的任务调度触发条件时,均可触发本发明实施例所提供技术方案的执行。

在numa系统中,任务的需求和瓶颈随着时间的变化而变化。在达到预设的任务调度触发条件时,可以确定任务集合中每个任务对每种类型资源的需求。资源可以为内存资源、cpu资源或带宽资源。

不同任务对每种类型资源的需求不同,可以根据任务属性和任务执行阶段,确定每个任务对每种类型资源的需求。

s120:根据每个任务对每种类型资源的需求,确定numa系统当前瓶颈对应资源的目标类型。

确定了任务集合中每个任务对每种类型资源的需求后,可以根据每个任务对每种类型资源的需求,确定numa系统当前是否存在瓶颈,如果存在,则可以确定当前瓶颈对应资源的目标类型。

在本发明的一种具体实施方式中,步骤s120可以包括以下步骤:

步骤一:针对每种类型资源,确定任务集合中所有任务对该类型资源的总需求;

步骤二:将最大总需求对应的类型确定为numa系统当前瓶颈对应资源的目标类型。

为便于描述,将上述两个步骤结合起来进行说明。

numa系统可提供多种类型资源,针对每种类型资源,可以确定任务集合中所有任务对该类型资源的总需求。可以理解的是,如果任务集合中所有任务对某类型资源的总需求过大,很容易导致产生该类型资源瓶颈。

在本发明实施例中,可以将最大总需求对应的类型确定为numa系统当前瓶颈对应资源的目标类型。

s130:确定任务集合中每个任务对目标类型资源的需求度。

一个任务对目标类型资源的需求度表明该任务对目标类型资源的需求程度。不同任务对同一类型资源的需求度可能不同,如有的任务对内存资源需求较大,有的任务对cpu资源需求较大。

针对任务集合中的每个任务,根据该任务对该目标类型资源的需求,可以确定该任务对目标类型资源的需求度。具体的,可以预先设定需求与需求度的对应关系式,如当需求大于预设第一阈值时,设定其对应的需求度为第一值,当需求在第一阈值和第二阈值之间时,设定其对应的需求度为第二值。举例而言,当需求大于90%时,其对应的需求度为5,当需求在70%-90%之间时,其对应的需求度为4,这里需求度的值越高表明需求越大。当然,在实际应用中,还可以设定其他对应关系,本发明实施例对此不做限制。

在本发明的一种具体实施方式中,步骤s130可以包括以下步骤:

第一个步骤:获得设定时间段内对任务集合中每个任务的监测数据;

第二个步骤:基于监测数据,确定每个任务对目标类型资源的访问缺失率;

第三个步骤:根据每个任务对目标类型资源的访问缺失率,确定每个任务对目标类型资源的需求度。

为便于描述,将上述三个步骤结合起来进行说明。

在numa系统运行过程中,可以对numa节点上运行的每个任务进行监测,具体的,可以通过每个任务的硬件计数器对相应任务对各类型资源的访问缺失率进行记录。

获得设定时间段内对任务集合中每个任务的监测数据,基于该监测数据,可以确定每个任务对目标类型资源的访问缺失率。访问缺失率可以定义为每1000条指令中访问缺失个数。

对于一个任务而言,该任务对目标类型资源的访问缺失率越大,表明该任务对该目标类型资源的需求越大,需求度越大。根据每个任务对目标类型资源的访问缺失率,可以确定每个任务对目标类型资源的需求度。具体的,针对每个任务,可以直接将该任务对目标类型资源的访问缺失率确定为该任务对目标类型资源的需求度,或者根据预设的对应关系和该任务对目标类型资源的访问缺失率,确定该任务对目标类型资源的需求度。

s140:根据每个任务对目标类型资源的需求度,将任务集合中的任务划分为多个任务组,以使按照大小顺序排列的前n个需求度对应的任务处于不同任务组中。

n为任务组个数,n小于或等于numa系统中numa节点个数。

对于任务集合中任意两个任务,如果这两个任务对目标类型资源的需求度都很大,那么可以认为这两个任务对于该目标类型资源具有较强的竞争力,如果将这两个任务放置于同一个numa节点上,则将导致较大的性能降级。

在本发明实施例中,根据每个任务对目标类型资源的需求度,可以将任务集合中的任务划分为多个任务组,具体可以遵循以下划分规则:按照大小顺序排列的n个需求度对应的任务处于不同任务组中。

任务组个数n可以根据numa系统中numa节点个数和当前资源供需情况确定。任务组个数n小于或等于numa系统中numa节点个数。

在本发明的一种具体实施方式中,步骤s140可以包括以下步骤:

步骤一:根据任务集合中任务数量及numa系统中numa节点数量,确定任务组个数n;

步骤二:将任务集合确定为待划分集合;

步骤三:将待划分集合中最大需求度对应的任务和最小需求度对应的任务组合为一个任务组;

步骤四:将未被划分的任务构成的集合确定为待划分集合,重复执行步骤三的操作,直至得到的任务组数量为n,如果存在未被划分的任务,则将未被划分的任务随机或者按照设定顺序划分到n个任务组中。

为便于描述,将上述四个步骤结合起来进行说明。

根据任务集合中任务数量及numa系统中numa节点数量,可以确定任务组个数n。具体的,任务组个数n可以等于或小于任务集合中任务数量与numa系统中numa节点数量中较小者。

将任务集合确定为待划分集合。从待划分集合中取出最大需求度对应的任务和最小需求度对应的任务,将这两个任务组合为一个任务组。将余下的未被划分的任务构成的集合确定为待划分集合,重复执行上述步骤。当得到的任务组数量为n时结束。

如果此时仍存在未被划分的任务,则可以将未被划分的任务随机或者按照设定顺序划分到n个任务组中。这样处于同一个任务组中的任务具有一定的亲和性,对目标类型资源的需求度有较大差别,可以尽量避免对目标类型资源的竞争。

s150:将每个任务组中的任务分别调度到对应的numa节点上。

将任务集合中的任务划分为多个任务组后,可以将每个任务组中的任务分别调度到对应的numa节点上,任务组与numa节点一一对应。具体的,可以根据实际情况将任务组与numa节点对应。

应用本发明实施例所提供的方法,在达到预设的任务调度触发条件时,可以确定任务集合中每个任务对每种类型资源的需求,根据每个任务对每种类型资源的需求,确定numa系统当前瓶颈对应资源的目标类型,确定任务集合中每个任务对目标类型资源的需求度,根据需求度,将任务集合中的任务划分为多个任务组,使按照大小顺序排列的前n个需求度对应的任务处于不同任务组中,将每个任务组中的任务分别调度到对应的numa节点上。进行任务调度后,同一numa节点上的任务对目标类型资源的需求度差别较大,可以降低同一numa节点上的任务对目标类型资源的竞争性,从根本上解决numa系统当前瓶颈问题,提升系统整体性能。

相应于上面的方法实施例,本发明实施例还提供了一种基于numa系统的任务调度装置,下文描述的一种基于numa系统的任务调度装置与上文描述的一种基于numa系统的任务调度方法可相互对应参照。

参见图2所示,该装置包括以下模块:

需求确定模块210,用于在达到预设的任务调度触发条件时,确定任务集合中每个任务对每种类型资源的需求,任务集合由numa系统中每个numa节点上当前运行的任务构成;

类型确定模块220,用于根据每个任务对每种类型资源的需求,确定numa系统当前瓶颈对应资源的目标类型;

需求度确定模块230,用于确定任务集合中每个任务对目标类型资源的需求度;

分组模块240,用于根据每个任务对目标类型资源的需求度,将任务集合中的任务划分为多个任务组,以使按照大小顺序排列的前n个需求度对应的任务处于不同任务组中,n为任务组个数,n小于或等于numa系统中numa节点个数;

任务调度模块250,用于将每个任务组中的任务分别调度到对应的numa节点上。

应用本发明实施例所提供的装置,在达到预设的任务调度触发条件时,可以确定任务集合中每个任务对每种类型资源的需求,根据每个任务对每种类型资源的需求,确定numa系统当前瓶颈对应资源的目标类型,确定任务集合中每个任务对目标类型资源的需求度,根据需求度,将任务集合中的任务划分为多个任务组,使按照大小顺序排列的前n个需求度对应的任务处于不同任务组中,将每个任务组中的任务分别调度到对应的numa节点上。进行任务调度后,同一numa节点上的任务对目标类型资源的需求度差别较大,可以降低同一numa节点上的任务对目标类型资源的竞争性,从根本上解决numa系统当前瓶颈问题,提升系统整体性能。

在本发明的一种具体实施方式中,类型确定模块220,具体用于:

针对每种类型资源,确定任务集合中所有任务对该类型资源的总需求;

将最大总需求对应的类型确定为numa系统当前瓶颈对应资源的目标类型。

在本发明的一种具体实施方式中,需求度确定模块230,具体用于:

获得设定时间段内对任务集合中每个任务的监测数据;

基于监测数据,确定每个任务对目标类型资源的访问缺失率;

根据每个任务对目标类型资源的访问缺失率,确定每个任务对目标类型资源的需求度。

在本发明的一种具体实施方式中,分组模块240,具体用于:

根据任务集合中任务数量及numa系统中numa节点数量,确定任务组个数n;

将任务集合确定为待划分集合;

将待划分集合中最大需求度对应的任务和最小需求度对应的任务组合为一个任务组;

将未被划分的任务构成的集合确定为待划分集合,重复执行将待划分集合中最大需求度对应的任务和最小需求度对应的任务组合为一个任务组的步骤,直至得到的任务组数量为n,如果存在未被划分的任务,则将未被划分的任务随机或者按照设定顺序划分到n个任务组中。

在本发明的一种具体实施方式中,资源为内存资源、cpu资源或带宽资源。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1