资源抢占的方法、装置、设备和计算机存储介质与流程

文档序号:16627597发布日期:2019-01-16 06:15阅读:273来源:国知局
资源抢占的方法、装置、设备和计算机存储介质与流程

本发明涉及计算机应用技术领域,特别涉及一种资源抢占的方法、装置、设备和计算机存储介质。



背景技术:

近年来,视频直播行业发展迅速,同时随着全景视频技术的改进,在视频转码系统中存在一个重要的需求就是能够同时支持全景视频的直播和点播。相对于点播任务,直播任务往往更加紧急和重要,因此需要优先执行。如果这时候没有足够的资源,就涉及到资源抢占的问题,例如中断一些点播任务释放出部分资源供直播使用。除了全景视频转码之外,对于其他应用场景,也涉及任务优先级的问题,为了保证高优先级的任务能够优先执行,需要抢占优先级低的任务所占用的资源。

目前的现有技术中大多只是涉及资源抢占的时机和可被抢占的资源,而从对系统性能的影响上来考虑如何进行合理的资源抢占则很少涉及,没有很好的解决方案。



技术实现要素:

有鉴于此,本发明提供了一种资源抢占的方法、装置、设备和计算机存储介质,以从对系统性能的影响上来考虑进行合理的资源抢占。

具体技术方案如下:

本发明提供了一种资源抢占的方法,该方法包括:

确定待分配任务需要进行资源抢占后,根据节点集群中至少部分节点的可抢占资源;

确定可抢占资源满足所述任务的资源占用量的节点集合;

预选所述节点集合中各节点的备抢占任务集合;

依据各节点的备抢占任务集合,分别确定所述节点集合中各节点的抢占代价;

依据抢占代价,选择所述节点集合中的一个节点供所述任务进行资源抢占。

本发明还提供了一种资源抢占的装置,该装置包括:

节点确定单元,用于在确定任务需要进行资源抢占后,根据节点集群中各节点的可抢占资源,确定可抢占资源满足所述待分配任务的资源占用量的节点集合;

任务预选单元,用于预选所述节点集合中各节点的备抢占任务集合;

代价确定单元,用于依据各节点的备抢占任务集合,分别确定所述节点集合中各节点的抢占代价;

节点选择单元,用于依据抢占代价,选择所述节点集合中的一个节点供所述任务进行资源抢占。

本发明还提供了一种设备,包括

存储器,包括一个或者多个程序;

一个或者多个处理器,耦合到所述存储器,执行所述一个或者多个程序,以实现上述方法中执行的操作。

本发明还提供了一种计算机存储介质,所述计算机存储介质被编码有计算机程序,所述程序在被一个或多个计算机执行时,使得所述一个或多个计算机执行上述方法中执行的操作。

由以上技术方案可以看出,本发明提供的资源抢占方式,通过预选各节点的备抢占任务集合,依据备抢占任务集合确定各节点的抢占代价,进而依据抢占代价选择一个节点进行资源抢占。这种资源抢占方式在保证资源抢占的同时,能够依据抢占代价进行资源抢占,尽可能降低对资源的浪费,降低对系统性能的影响。

【附图说明】

图1为本发明所基于的系统架构图;

图2为本发明实施例提供的主要方法流程图;

图3为本发明实施例提供的确定任务资源占用量的方法流程图;

图4为本发明实施例提供的全景视频转码各节点占用的资源类型示意图;

图5为本发明实施例提供的备抢占任务集合的预选方法流程图;

图6为本发明实施例提供的任务中断和恢复的方法流程图;

图7为本发明实施例提供的装置结构图;

图8为本发明实施例提供的设备结构图。

【具体实施方式】

为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。

本发明的核心思想在于,在需要进行资源抢占时,通过对具有足够可抢占资源的节点进行抢占代价的计算,依据抢占代价选择节点进行资源抢占。

图1为本发明所基于的系统架构图,如图1所示,该系统主要包括:调度系统和节点集群,在本发明实施例中节点集群以高性能计算集群为例。高性能计算集群包括一个以上的节点,各节点具备任务执行能力。以视频转码任务为例,各节点具备视频转码功能,能够将诸如全景视频等视频数据进行视频转码。另外,各节点可以具有cpu资源,也可以具有gpu资源,或者具备“cpu+gpu”架构的资源。优选地,若各节点具备“cpu+gpu”架构的资源,其中的gpu资源可以进一步被细分为gpu硬件解码器、gpu计算资源和gpu硬件编码器。调度系统负责对任务进行资源调度,将任务分配至高性能计算集群中的某个节点上执行。

图2为本发明实施例提供的主要方法流程图,如图2所示,该方法可以包括以下步骤:

在201中,确定待分配任务需要进行资源抢占。

对于一个需要分配资源的任务,在本发明实施例中称为待分配任务,可以首先确定该待分配任务的资源占用量,然后遍历高性能计算集群中的各节点,若不存在剩余资源满足待分配任务的资源占用量的节点,且该待分配任务的优先级高于预设第一阈值,则确定该待分配任务需要进行资源抢占。也就是说,一个高优先级的待分配任务,如果高性能计算集群中的各节点的剩余资源均无法满足待分配任务的资源占用量,即各节点的剩余资源都不足够执行该待分配任务,则说明该分配任务需要抢占其他任务的资源,以保证该高优先级的任务得以优先执行。

若高性能计算集群中存在节点的剩余资源能够满足待分配任务的资源占用量,则从剩余资源能够满足待分配任务的资源占用量的节点中选择一个用以执行该待分配任务。

以全景视频转码任务为例,需要优先保证直播类的全景视频转码任务得以执行,因此,若高性能计算集群中各节点的剩余资源均不足够该直播类全景视频转码任务的执行,则确定该直播类的全景视频转码任务需要抢占点播类的全景视频转码任务。

对于待分配任务的资源占用量的确定方式,若是单一类型资源的占用,例如该任务仅占用cpu资源,则确定方式相对比较简单,可以依据待分配任务类型以及先验资源占用量来确定。但很多情况下,为了优化任务执行效率以及任务本身的复杂程度,往往需要多种类型资源共同完成任务的执行。例如,对于全景视频转码任务而言,由于全景视频转码任务本身包含很多阶段,具体包括解码、预处理和编码三个阶段,其中预处理阶段又可以根据不同的处理进行更细粒度的划分,例如划分为水印处理、缩放、映射和滤波等。每个阶段可以放在不同类型的资源上执行。例如解码阶段可以放在gpu硬件解码器,也可以放在cpu上。预处理阶段中的水印处理阶段放在cpu上。视频预处理阶段中的视频缩放、映射或滤波处理等可以放在gpu计算资源上,也可以放在cpu上。视频编码阶段可以放在gpu硬件编码器上,也可以放在cpu上。

针对上述情况,本发明提供了一种确定待分配任务的资源占用量的方式,如图3所示,可以具体包括以下步骤:

在301中,确定待分配任务所包含各阶段的关键因子。

对于每个阶段可以预先设计一些关键因子,这些关键因子能够反映该阶段的处理对资源的占用量,优选这些关键因子与资源占用量之间呈正比关系,这样资源占用量就可以用这些关键因子的乘积来体现。

以全景视频编码任务为例,对于视频编码阶段,可以将视频输出分辨率(w,h),输出流数量(n)以及编码格式(f)作为关键因子。依据关键因子对资源的影响状况给各因子赋予一定数值,例如对于输出流数量是1的,关键因子n取值为1;对于pyramid映射方式等输出流数量是n的,关键因子n取值为n。再例如,对于h.265格式对硬件资源的占用大约是h.264格式的2倍,因此可以将h.264格式编码的关键因子f取1,h.265格式的f取2。

再例如,对于视频解码阶段,可以将视频输出分辨率、视频格式作为关键因子。对于视频预处理阶段,可以将视频输出分辨率、预处理类型等作为关键因子。

一个具体的任务,各阶段的关键因子可以根据经验或者经过多种试验等方式来确定。

在302中,利用该待分配任务所包含各阶段的关键因子以及各阶段占用的资源类型,分别确定该待分配任务所包含各阶段的资源占用状况。

各阶段的资源占用状况一方面包括各阶段占用的资源类型,另一方面包括各阶段对对应资源类型的资源占用量。

各阶段占用的资源类型可以预先确定,以全景视频转码任务为例,优选解码阶段占用gpu硬件解码器,预处理阶段中的水印处理占用cpu资源,预处理阶段中的视频缩放、映射或滤波处理占用gpu计算资源,编码阶段占用gpu硬件编码器,如图4中所示。

在预先确定任务占用的资源类型时,一方面可以依据任务属性来确定,例如对于h.265格式的全景视频转码,为了保证输出质量,限制编码阶段占用cpu资源。另一方面可以依据当前所使用高性能计算集群的硬件能力确定,例如高性能计算集群中gpu硬件编码器的能力较强,则编码阶段可以占用gpu硬件编码器,否则可以占用cpu。

各阶段对对应资源类型的资源占用量则可以采用各阶段的关键因子与基准任务进行比对后,依照基准任务的资源占用量来确定。

具体地,可以针对各阶段分别执行:确定该待分配任务对应的基准任务以及该阶段占用的资源类型;然后依据该阶段的关键因子以及预先得到的基准任务的关键因子和对该资源类型的资源占用量,确定该阶段对该资源类型的资源占用量。

以视频编码阶段为例,假设选择输出为2880×1920分辨率的cubemap映射转码为基准任务。该基准任务在视频编码阶段的关键因子分别为:wbase、hbase、nbase和fbase,预先对基准任务进行实测(例如多次测量后取均值),得到基准任务的视频编码阶段对gpu硬件编码器的占用量gebase。

那么该视频编码阶段对gpu硬件编码器的资源占用量ge可以为:

其中,w、h、n和f分别为该视频编码阶段的关键因子。当然公式(1)给出的是一种线性关系,但本发明并不限于该种线性关系,也可以采用其他非线性的方式以基准任务对资源的占用量来确定实际任务对资源的占用量。

采用类似的方式,可以确定出其他各阶段对对应资源类型的资源占用量,例如,确定视频解码阶段对gpu硬件解码器的资源占用量gd,预处理阶段中的水印处理对cpu的资源占用量c,以及预处理阶段中的缩放、映射、滤波处理阶段对gpu计算资源的资源占用量gp。

在303中,整合该待分配任务所包含各阶段的资源占用状况,得到该待分配任务对各资源的占用量。

若一个任务包含的各阶段占用的资源类型有相同的,例如若视频解码阶段占用cpu,水印处理也占用cpu,那么在进行整合时,将这两个阶段对cpu的资源占用量进行求和。这样,就得到了一个任务对各类型资源的占用量。

继续参见图2,若确定待分配任务需要进行资源抢占,则在202中,确定高性能计算集群中至少部分节点的可抢占资源。

所谓可抢占资源就是节点正在执行的可被抢占任务所占用的资源,其中可被抢占任务可以是优先级低于预设第二阈值的任务,上述的第一阈值高于或等于第二阈值。即各节点正在执行的任务中,低优先级的任务可以是可被抢占任务。除了限制优先级之外,还可以进一步限制任务的执行进度,例如执行进度大于或等于预设百分比的任务不能被抢占,这种情况下,可以将优先级低于预设第二阈值且执行进度低于预设百分比的任务作为可被抢占任务。

在203中,确定可抢占资源满足待分配任务的资源占用量的节点集合。

若待分配任务占用的资源类型为多种,则在确定节点集合时,需要各节点的可抢占资源中对应类型的资源量均大于或等于待分配任务的资源占用量。

举个例子,假设待分配任务的资源占用量分别为:对cpu资源的占用量为clive,对gpu硬件解码器的占用量为gdlive,对gpu计算资源的占用量为gplive,对gpu硬件编码器的占用量为gelive。某节点的可被抢占任务分别为r1,r2,…,rm,那么该节点如果满足以下条件,则被加入上述节点集合:

其中,ci、gdi、gpi和gei分别是可被抢占任务ri占用的cpu资源量、gpu硬件解码器资源量、gpu计算资源量和gpu硬件编码器资源量。

在204,预选节点集合中各节点的备抢占任务集合。

本步骤针对节点集合中的每个节点,分别假设若抢占该节点的资源,则确定该节点中被抢占任务是哪些,由确定出的任务构成该节点的备抢占任务集合,也就是说,分别对节点集合中各节点进行备抢占任务集合的预选。备抢占任务可以是节点正在被执行的任务中可供待分配任务抢占的任务。

在确定节点的备抢占任务集合时,可以首先确定该节点正在执行的可被抢占任务;从可被抢占任务中选择任务加入该节点的备抢占任务集合,其中选择的任务占用的资源与该节点的剩余资源之和满足待分配任务的资源占用量。下面结合图5所示流程,对备抢占任务集合的预选过程进行举例描述。如图5所示,某节点的备抢占任务集合的预选可以包括以下步骤:

在501中,确定该节点正在执行的可被抢占任务。

其中可被抢占任务可以是优先级低于预设第二阈值的任务,上述的第一阈值高于或等于第二阈值。即各节点正在执行的任务中,低优先级的任务可以是可被抢占任务。除了限制优先级之外,还可以进一步限制任务的执行进度,例如执行进度大于或等于预设百分比的任务不能被抢占,这种情况下,可以将优先级低于预设第二阈值且执行进度低于预设百分比的任务作为可被抢占任务。

在502中,判断可被抢占任务中可恢复任务所占用的资源是否足够满足待分配任务的资源占用量,如果是,则执行503;否则执行505。

在此将可被抢占任务分成了可恢复任务和不可恢复任务,可恢复任务指的是中断后能够从断点开始执行的任务,不可恢复任务指的是中断后需要重新执行的任务。以视频转码任务为例,通常输出hls(httplivestreaming,超文本传输协议实时流)或dash(dynamicadaptivestreamingoverhttp,基于超文本传输协议的动态自适应流)等分片格式的任务是可恢复任务,输出是单个视频文件的任务是不可恢复任务。

由于不可恢复任务中断后需要重新执行,因此抢占代价较高,对性能和效率影响较大,因此优先选择可恢复任务进行资源抢占。

在503中,从可恢复任务中选择一个任务加入该节点的备抢占任务集合。

本步骤的选择策略可以是任选一个。也可以是按照执行进度从低到高的顺序选择,即优先选择执行进度较低的任务,也就是已执行的较少的任务。也可以按照已执行的时间从短到长的顺序选择,即优先选择已执行时间较短的任务。还可以采用其他选择策略,在此不再一一穷举。

在504中,判断当前备抢占任务集合所占用的资源与该节点的剩余资源之和是否满足待分配任务的资源占用量,如果是,则结束针对该节点的预选流程,得到该节点的备抢占任务集合;否则,转至执行503。

在505中,将该节点正在执行的所有可恢复任务加入该节点的备抢占任务集合。

在506中,从该节点正在执行的不可恢复任务中选择一个加入该节点的备抢占任务集合。

由于可恢复任务所占用的资源并不满足被分配任务需要的资源占用量,因此将所有可恢复任务加入该节点的备抢占任务集合后,再从不可恢复任务中选择任务加入备抢占任务集合。

在507中,判断当前备抢占任务集合所占用的资源与该节点的剩余资源之和是否满足待分配任务的资源占用量,如果是,则结束针对该节点的预选流程,得到该节点的备抢占任务集合;否则,转至执行506。

上述过程实际上就是在可恢复任务中优先选择,若可被抢占任务中可恢复任务所占用的资源足够满足待分配任务的资源占用量,就从可恢复任务中选择m个任务加入该节点的备抢占任务集合,使得备抢占任务集合所占用的资源与该节点的剩余资源之和满足待分配任务的资源占用量;否则,将所有可恢复任务都加入该节点的备抢占任务集合后,在从不可恢复任务中选择n个任务加入该节点的备抢占任务集合,使得备抢占任务集合所占用的资源与该节点的剩余资源之和满足待分配任务的资源占用量。m和n均为正整数。

继续参见图2,在205中,依据各节点的备抢占任务集合,分别确定节点集合中各节点的抢占代价。

各节点的抢占代价实际上是通过备抢占任务集合中的任务来体现的。对于可恢复任务而言,可恢复任务的数量越多,抢占代价越大,反之越小。对于不可恢复任务而言,由于需要重新执行,因此不可恢复任务的执行进度也反映了抢占代价,执行进度越大,即已完成的百分比越高,抢占代价越大,反之越小。因此,节点的抢占代价可以依据节点的备抢占任务集合中可恢复任务的数量和/或不可恢复任务的执行进度来确定。例如可以用一个二元组来体现节点的抢占代价cost:

cost={rwaste,q}

其中,q代表该节点的备抢占任务集合中可恢复任务的数量。rwaste代表该节点由不可恢复任务所造成的资源浪费,其和不可恢复任务的执行进度相关,即不可恢复任务已执行的部分所占用的资源就是浪费的资源,因此:

其中,rj为该节点的备抢占任务集合中第j个不可恢复任务的资源占用量,pf为当前该第j个不可恢复任务的执行进度,例如已完成的百分比。

除了采用上述二元组的方式之外,还可以采用其他方式来体现节点的抢占代价,例如将可恢复任务的数量和不可恢复任务的执行进度分别赋予一定权值,然后依据节点中可恢复任务的数量和不可恢复任务的进度进行加权计算,得到一个分值作为该节点的抢占代价。

在206中,依据抢占代价,选择节点集合中的一个节点供该待分配任务进行资源抢占。

在本步骤中,作为一种优选的实施方式,可以选择节点集合中抢占代价最小的节点供待分配任务进行资源抢占。若抢占代价体现的是一个分值,则直接选择分值最小的节点即可。若抢占代价体现的是上述的{rwaste,q}二元组,则可以采用如下方式:

首先比较各节点的rwaste,确定rwaste最小的节点。若rwaste最小的节点为一个,则选择该节点。若rwaste最小的节点为多个,则从rwaste最小的节点中选择q最小的节点。若q最小的节点仍为多个,则从q最小的节点中任选一个即可。

当然,除了选择抢占代价最小的节点这种选择策略之外,还可以采用其他选择策略,例如选择抢占代价小于预设阈值的节点中的一个,等等。

完成上述供待分配任务进行资源抢占的节点选择后,可以进一步执行以下步骤:

在207中,通知选择出的节点中断执行该节点的备抢占任务集合中的任务并开始执行上述待分配任务。

在本步骤中,调度系统可以向选择出的节点发送任务中断请求以及将待分配任务分配给该节点。

上述任务中断请求中可以携带该节点的备抢占任务集合信息,例如备抢占任务集合所包含任务的标识信息。该节点接收到任务中断请求后,中断备抢占任务集合中的任务。另外,为了保证中断的任务中可恢复任务能够在后续继续被执行,需要确定中断的可恢复任务的中断点信息,并将中断点信息返回给调度系统。

在208中,将中断的任务重新分配给其他节点执行。

调度系统获取到中断的任务信息后,可以将中断的任务重新分配给其他节点执行。即将中断的任务作为待分配任务重新进行分配,其中不可恢复任务进行分配时,是整个任务重新进行分配,而可恢复任务是仅将未执行的部分进行分配。在进行分配时,同样是在高性能计算集群中找到一个节点的剩余资源能够满足重新分配的任务的资源占用量。若不存在这样的节点,由于重新分配的任务是优先级比较低的任务,无法进行任务抢占,只能等待有足够资源的节点时,再分配节点执行。

下面结合一个实施例对上述步骤207和208所示的任务中断和恢复的过程进行详述。假设高优先级的待分配任务为任务1,选择出节点1作为任务1进行资源抢占的节点。如图6所示,该过程可以包括以下步骤:

在601中,调度系统向节点1发送任务中断请求以及分配任务1给节点1,该任务中断请求中包含节点1的备抢占任务集合信息。

在602中,节点1依据备抢占任务集合信息,中断对应的任务,并确定中断的任务中可恢复任务的中断点。

本步骤中之所以确定可恢复任务的中断点,是为了后续被分配该可恢复任务的节点能够依据中断点信息继续执行该任务,从而保证该任务能够无缝连接。对于中断点的确定,本发明实施例可以采用如下方式:

首先中断可恢复任务后,确定当前正在输出的分片的前一个输出分片,假设是该任务输出的第q个分片,那么该第q个分片的最后一帧就可以看做是该任务已完成的输出帧数,该任务已完成的输出帧数fo可以为:

fo=q*t*ro(4)

其中,t是分片的时长,ro为输出帧率。

根据该任务已完成的输出帧数fo,上述第q个分片的最后一帧就可以作为中断点,即从这一帧开始接续执行该任务。鉴于输入帧率和输出帧率可能存在差异,因此,可以确定第fo帧对应的输入帧fi为:

fi=fo*ri/ro(5)

其中,ri为输入帧率。

将公式(4)代入公式(5),则可以得到:

fi=q*t*ri(6)

依据fi就可以得到中断点对应的帧,即第fi帧或者第fi+1帧。另外,由于输入帧率可能并非整数,因此计算出的fi也可能并非整数,对于这种情况可以对计算出的fi进行向前取整处理,当然也可以进行四舍五入等方式的取整处理。

另外,需要说明的是,上述确定中断点的过程中之所以采用正在输出的分片的前一个输出分片,而不采用正在输出的分片(即最后一个分片),是因为中断任务后,转码会停止,然后将现有的数据组成最后一个分片。而任务中断时间是任意的,因此可能会造成最后一个分片是小于设定的分片时间的,即并非一个完整的“分片”,这就可能会造成确定出的中断点与实际中断点之间存在一些帧的缺失。

在603中,节点1将中断的可恢复任务的中断点信息返回给调度系统。

在604中,节点1开始执行任务1。

需要说明的是,上述步骤604也可以在节点1中断任务结束后就开始执行。

在605中,调度系统将节点1中断的任务进行重新分配,分配到其他节点执行。假设中断的任务包括不可恢复任务2和可恢复任务3,将不可恢复任务2分配至节点2执行,将可恢复任务3分配至节点3执行,并将可恢复任务3的中断点信息发送给节点3。

在606中,节点2开始执行不可恢复任务2,即重新执行任务2。

在607中,节点3依据中断点信息,从中断点对应的帧开始执行可恢复任务3。

上述步骤606和607并非对执行顺序进行限制,只要节点2和节点3接收到被分配的任务后,就可以各自开始执行被分配的任务。

另外,在上述过程中,每当各节点执行完一个任务后,都可以将该任务执行完毕的状态信息返回给调度系统。另外,各节点执行任务过程中输出的分片都可以上传至一个流发送系统进行整合和发送,该部分可以采用现有技术,在此不做赘述。

需要说明的是,上述方法的执行主体可以为资源抢占的装置,该装置可以位于是位于调度系统的应用,或者还可以为位于调度系统的应用中的插件或软件开发工具包(softwaredevelopmentkit,sdk)等功能单元,本发明实施例对此不进行特别限定。下面结合实施例对本发明提供的资源抢占的装置进行详述。

图7为本发明实施例提供的装置结构图,如图7所示,该装置可以包括:节点确定单元02、任务预选单元03、代价确定单元04和节点选择单元05,还可以进一步包括资源确定单元01、抢占确定单元00、中断通知单元06、任务分配单元07和中断获取单元08。其中各组成单元的主要功能如下:

抢占确定单元00负责确定一个待分配任务是否需要进行资源抢占。具体地,可以先确定待分配任务的资源占用量;若高性能计算集群中不存在剩余资源满足待分配任务的资源占用量的节点,且待分配任务的优先级高于预设的第一阈值,则确定待分配任务需要进行资源抢占。也就是说,一个高优先级的待分配任务,如果高性能计算集群中的各节点的剩余资源均无法满足待分配任务的资源占用量,即各节点的剩余资源都不足够执行该待分配任务,则说明该分配任务需要抢占其他任务的资源,以保证该高优先级的任务得以优先执行。

若高性能计算集群中存在节点的剩余资源能够满足待分配任务的资源占用量,则由任务分配单元07从剩余资源能够满足待分配任务的资源占用量的节点中选择一个用以执行该待分配任务。

以全景视频转码任务为例,需要优先保证直播类的全景视频转码任务得以执行,因此,若高性能计算集群中各节点的剩余资源均不足够该直播类全景视频转码任务的执行,则确定该直播类的全景视频转码任务需要抢占点播类的全景视频转码任务。

其中,抢占确定单元00在确定待分配任务的资源占用量时,可以确定待分配任务所包含各阶段的关键因子,关键因子与资源占用量呈正比;利用待分配任务所包含各阶段的关键因子以及各阶段占用的资源类型,分别确定待分配任务所包含各阶段的资源占用状况;整合待分配任务所包含各阶段的资源占用状况,得到待分配任务对各资源的占用量。

其中,各阶段占用的资源类型依据待分配任务的类型和/或高性能计算集群中节点的剩余资源状况确定。

具体地,抢占确定单元00在利用待分配任务所包含各阶段的关键因子以及各阶段占用的资源类型,分别确定待分配任务所包含各阶段的资源占用状况时,针对待分配任务包含的各阶段分别执行:确定待分配任务对应的基准任务以及该阶段占用的资源类型;依据该阶段的关键因子以及预先得到的基准任务的关键因子和对资源类型的资源占用量,确定该阶段对资源类型的资源占用量。

若待分配任务为视频转码任务,则待分配任务所包含各阶段可以包括:视频解码阶段、视频预处理阶段和视频编码阶段。

其中,视频编码阶段的关键因子可以包括视频输出分辨率、输出流数量和编码格式;视频解码阶段的关键因子可以包括视频输出分辨率和视频格式;视频预处理阶段的关键因子可以包括视频输出分辨率和预处理类型。

视频解码阶段占用的资源类型优选gpu硬件解码器,也可以采用cpu。视频预处理阶段中的视频水印处理阶段占用的资源类型可以采用cpu。视频预处理阶段中的视频缩放、映射或滤波处理阶段占用的资源类型优选gpu计算资源,也可以采用cpu。视频编码阶段占用的资源类型优选gpu硬件编码器,也可以采用cpu。

资源确定单元01负责在确定待分配任务需要进行资源抢占后,确定高性能计算集群中至少部分节点的可抢占资源。

所谓可抢占资源就是各节点正在执行的可被抢占任务所占用的资源,其中可被抢占任务可以是优先级低于预设第二阈值的任务,上述的第一阈值高于或等于第二阈值。即各节点正在执行的任务中,低优先级的任务可以是可被抢占任务。除了限制优先级之外,还可以进一步限制任务的执行进度,例如执行进度大于或等于预设百分比的任务不能被抢占,这种情况下,可以将优先级低于预设第二阈值且执行进度低于预设百分比的任务作为可被抢占任务。

节点确定单元02负责确定可抢占资源满足待分配任务的资源占用量的节点集合。

若待分配任务占用的资源类型为多种,则在确定节点集合时,需要各节点的可抢占资源中对应类型的资源量均大于或等于待分配任务的资源占用量。

任务预选单元03负责预选节点集合中各节点的备抢占任务集合。针对节点集合中的每个节点,分别假设若抢占该节点的资源,则确定该节点中被抢占任务是哪些,由确定出的节点构成该节点的备抢占任务集合。

在确定节点的备抢占任务集合时,可以首先确定该节点正在执行的可被抢占任务;从可被抢占任务中选择任务加入该节点的备抢占任务集合,其中选择的任务占用的资源与该节点的剩余资源之和满足待分配任务的资源占用量。

具体地,任务预选单元03在从可被抢占任务中选择任务加入该节点的备抢占任务集合时,可以具体执行:

判断可被抢占任务中可恢复任务所占用的资源是否足够满足待分配任务的资源占用量,如果是,则从可恢复任务中选择m个任务加入该节点的备抢占任务集合,使得备抢占任务集合所占用的资源与该节点的剩余资源之和满足待分配任务的资源占用量,m为正整数。

如果判断出可被抢占任务中可恢复任务所占用的资源不足够满足待分配任务的资源占用量,则将可恢复任务全加入该节点的备抢占任务集合,并从可被抢占任务中的不可恢复任务中选择n个任务加入该节点的备抢占任务集合,使得备抢占任务集合占用的资源与该节点的剩余资源之和满足待分配任务的资源占用量,n为正整数。

代价确定单元04负责依据各节点的备抢占任务集合,分别确定节点集合中各节点的抢占代价。具体地,可以依据节点的备抢占任务集合中可恢复任务的数量和/或不可恢复任务的执行进度,确定节点的抢占代价。对于可恢复任务而言,可恢复任务的数量越多,抢占代价越大,反之越小。对于不可恢复任务而言,由于需要重新执行,因此不可恢复任务的执行进度也反映了抢占代价,执行进度越大,即已完成的百分比越高,抢占代价越大,反之越小。

节点选择单元05负责依据抢占代价,选择节点集合中的一个节点供待分配任务进行资源抢占。

作为一种优选的实施方式,可以选择节点集合中抢占代价最小的节点供待分配任务进行资源抢占。若抢占代价体现的是一个分值,则直接选择分值最小的节点即可。若抢占代价体现的是一个{rwaste,q}二元组,其中,q代表该节点的备抢占任务集合中可恢复任务的数量。rwaste代表该节点由不可恢复任务所造成的资源浪费,其和不可恢复任务的执行进度相关,即不可恢复任务已执行的部分所占用的资源就是浪费的资源。则可以采用如下方式:

首先比较各节点的rwaste,确定rwaste最小的节点。若rwaste最小的节点为一个,则选择该节点。若rwaste最小的节点为多个,则从rwaste最小的节点中选择q最小的节点。若q最小的节点仍为多个,则从q最小的节点中任选一个即可。

中断通知单元06负责通知选择出的节点中断执行该节点的备抢占任务集合中的任务并开始执行待分配任务。中断通知单元06可以向选择出的节点发送任务中断请求以及将待分配任务分配给该节点。

上述任务中断请求中可以携带该节点的备抢占任务集合信息,例如备抢占任务集合所包含任务的标识信息。该节点接收到任务中断请求后,中断备抢占任务集合中的任务。另外,为了保证中断的任务中可恢复任务能够在后续继续被执行,需要确定中断的可恢复任务的中断点信息,并将中断点信息返回给调度系统。中断的可恢复任务的中断点信息依据中断点所在分片之前已完成的分片数目、分片时长以及输入帧率确定。

任务分配单元07负责将中断的任务重新分配给其他节点执行。

中断获取单元08负责从选择出的节点获取中断的可恢复任务的中断点信息。

任务分配单元07负责将中断点信息提供给该中断的可恢复任务重新分配的节点,以便该节点从该中断点开始执行该中断的可恢复任务。

另外,任务分配单元07还可以将中断的不可恢复任务提供给重新分配的节点重新执行。

图8示例性地示出了根据各种实施例的示例设备800。设备800可包括一个或多个处理器802,系统控制逻辑801耦合于至少一个处理器802,非易失性存储器(non-volatilememory,nmv)/存储器804耦合于系统控制逻辑801,网络接口806耦合于系统控制逻辑801。

处理器802可包括一个或多个单核处理器或多核处理器。处理器802可包括任何一般用途处理器或专用处理器(如图像处理器、应用处理器基带处理器等)的组合。

一个实施例中的系统控制逻辑801,可包括任何适当的接口控制器,以提供到处理器802中的至少一个的任何合适的接口,和/或提供到与系统控制逻辑801通信的任何合适的设备或组件的任何合适的接口。

一个实施例中的系统控制逻辑801,可包括一个或多个内存控制器,以提供到系统内存803的接口。系统内存803用来加载以及存储数据和/或指令。例如,对应设备800,在一个实施例中,系统内存803可包括任何合适的易失性存储器。

nvm/存储器804可包括一个或多个有形的非暂时的计算机可读介质,用于存储数据和/或指令。例如,nvm/存储器804可包括任何合适的非易失性存储装置,如一个或多个硬盘(harddiskdevice,hdd),一个或多个光盘(compactdisk,cd),和/或一个或多个数字通用盘(digitalversatiledisk,dvd)。

nvm/存储器804可包括存储资源,该存储资源物理上是该系统所安装的或者可以被访问的设备的一部分,但不一定是设备的一部分。例如,nvm/存储器804可经由网络接口806被网络访问。

系统内存803以及nvm/存储器804可分别包括临时的或持久的指令810的副本。指令810可包括当由处理器802中的至少一个执行时导致设备800实现图2、3、5等描述的方法之一或组合的指令。各实施例中,指令810或硬件、固件,和/或软件组件可另外地/可替换地被置于系统控制逻辑801,网络接口806和/或处理器802。

网络接口806可包括一个接收器来为设备800提供无线接口来与一个或多个网络和/或任何合适的设备进行通信。网络接口806可包括任何合适的硬件和/或固件。网络接口806可包括多个天线来提供多输入多输出无线接口。在一个实施例中,网络接口806可包括一个网络适配器、一个无线网络适配器、一个电话调制解调器,和/或无线调制解调器。

在一个实施例中,处理器802中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑一起封装。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑一起封装以形成系统级封装。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑集成在相同的管芯上。在一个实施例中,处理器中的至少一个可以与用于系统控制逻辑的一个或多个控制器的逻辑集成在相同的管芯上以形成系统芯片。

设备800可进一步包括输入/输出装置805。输入/输出装置805可包括用户接口旨在使用户与设备800进行交互,可包括外围组件接口,其被设计为使得外围组件能够与系统交互,和/或,可包括传感器,旨在确定环境条件和/或有关设备800的位置信息。

列举一个应用场景:

在全景视频转码系统中,当有一个全景视频直播任务需要分配时,若当前高性能计算集群中各节点均没有足够的剩余资源来执行该全景视频直播任务,则需要进行资源抢占。因此可以采用本发明实施例中所提供的方式,确定各节点中点播任务占用的资源,进而确定出点播任务占用的资源和剩余资源之和能够满足上述待分配的全景视频直播任务的资源占用量,构成一个节点集合。然后计算节点集合中各节点的抢占代价,从中选出抢占代价最小的节点。向该节点发送任务中断请求,使得该节点中断全部或部分全景视频点播任务,并开始执行上述全景视频直播任务。对于该节点而言,确定中断的可恢复任务的中断点,并将中断点信息返回给调度系统。调度系统将中断的任务重新调度给其他节点执行,并将中断点信息发送给相应的节点,使得节点能够从中断点开始接续执行中断的可恢复任务。这样,即能够保证全景视频直播任务的优先执行,又能够使得中断的点播任务也尽快得到执行,且尽可能降低对系统性能的影响。

在本发明所提供的几个实施例中,应该理解到,所揭露的方法、装置、设备和计算机存储介质,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

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