掌桥专利:专业的专利平台
掌桥专利
首页

一种面向服务器无感知计算的多资源函数任务调度系统

文献发布时间:2024-04-18 20:01:30


一种面向服务器无感知计算的多资源函数任务调度系统

技术领域

本申请涉及任务调度技术领域,特别是一种面向服务器无感知计算的多资源函数任务调度系统。

背景技术

服务器无感知计算是云计算领域新兴的云计算范型,提供以函数为粒度的微服务开发模式,其核心技术特征是数据中心资源以函数粒度随需即用。在服务器无感知计算场景下,用户使用高级编程语言编写业务逻辑函数,并指定触发事件,服务器无感知计算平台将自动为该任务构建运行环境,适时调度和执行相应函数。服务器无感知计算对用户屏蔽底层系统和硬件细节,极大提高了易用性,节省用户成本。

现有服务器无感知计算技术主要采用静态资源分配机制,将函数任务所需要的资源静态分配给函数,函数任务在运行期间完全占用其所获得的资源。然而,上述方案在函数任务数量较多的场景下,系统资源使用率较低,进而影响了函数任务处理效率。

因此,有必要开发一种面向服务器无感知计算的多资源函数任务调度系统,以提高资源利用率。

发明内容

鉴于上述问题,本申请实施例提供了一种面向服务器无感知计算的多资源函数任务调度系统,以便克服上述问题或者至少部分地解决上述问题。

本申请实施例的第一方面,提供了一种面向服务器无感知计算的多资源函数任务调度系统,所述系统包括:调度器和多个工作节点;

所述调度器获取各个函数任务对多种资源中每种资源的使用情况;

所述调度器根据所述各个函数任务对多种资源中每种资源的使用情况,将所有待执行的函数任务划分成多个函数任务共享组,并为所述多个函数任务共享组分配资源,得到调度策略;其中,每个所述函数任务共享组包括多个函数任务,且所述多个函数任务的不同阶段交错在一起进行资源共享,每个所述函数任务的不同阶段使用其阶段所需要的一种资源,其阶段不需要的资源共享给其所属的函数任务共享组内的其他函数任务使用;

所述多个工作节点按照所述调度器生成的调度策略,执行对应的函数任务。

在一种可能的实施方式中,所述根据所述各个函数任务对多种资源中每种资源的使用情况,将所有待执行的函数任务划分成多个函数任务共享组,包括:

根据所述所有待执行的函数任务,将每三个待执行的函数任务作为一组,枚举出所有函数任务共享组;

根据所述各个函数任务对多种资源中每种资源的使用情况,计算所有函数任务共享组的共享效率,所述共享效率反应函数任务共享组所包括的各个函数任务执行期间所述多种资源的平均使用时间占比;

根据所述共享效率,筛选得到所述多个函数任务共享组。

在一种可能的实施方式中,所述根据所述共享效率,筛选得到所述多个函数任务共享组的筛选过程包括以下多轮:

在第一轮筛选中,将每个函数任务作为顶点,在每两个函数任务之间进行连边,每条边的权重表示连接的两个函数任务所组成的函数任务共享组的共享效率,利用最大权匹配算法求解,得到第一轮筛选结果,所述第一轮筛选结果包括:多个候选共享组和多个候选函数任务,每个候选共享组包括两个函数任务;

在第二轮筛选中,将所述候选共享组作为顶点,将所述候选函数任务作为顶点,在所述候选共享组和所述候选函数任务之间,或,两个所述候选函数任务之间进行连边,每条边的权重表示连接的候选共享组和候选函数任务所组成的函数任务共享组的共享效率,采用最大权匹配算法求解,得到所述多个函数任务共享组。

在一种可能的实施方式中,所述共享效率是按照如下公式计算得到的:

其中,

其中,

在一种可能的实施方式中,所述为所述多个函数任务共享组分配资源,包括:

按照所述多个函数任务共享组的服务量升序排序,依次将所述多个函数任务共享组分配到空闲资源上,所述服务量为:函数任务共享组的总执行时间,或,函数任务共享组的资源使用总量和所述总执行时间的乘积。

在一种可能的实施方式中,所述调度器至少包括监控模块;

所述工作节点,还用于在函数任务执行过程中发生异常的情况下,向所述监控模块报告异常信息;

所述监控模块根据接收到的所述异常信息,终止或重启异常的函数任务。

在一种可能的实施方式中,所述调度器至少包括资源分析模块;

所述资源分析模块根据所述多资源函数任务调度系统的资源配置的类型,选择多个候选函数任务;

所述资源分析模块多次离线执行所述候选函数任务,统计每个所述候选函数任务在每次执行中的执行时间和各类资源的使用时间;

所述资源分析模块,将所述执行时间的平均值,以及,所述各类资源的使用时间的平均值作为该函数任务对多种资源中每种资源的所述使用情况,发送给所述调度器。

在一种可能的实施方式中,所述工作节点还用于获取每个函数任务执行完成的执行情况,将所述执行情况发送给所述资源分析模块;所述执行情况包括本次执行完成函数任务的实际执行时间和各类资源的实际使用时间;

所述资源分析模块利用所述执行情况,更新该函数任务对多种资源中每种资源的所述使用情况。

在一种可能的实施方式中,所述调度器用于在检测到事件发生时,生成新的所述调度策略;所述事件为:函数任务触发事件、函数任务结束事件和函数任务异常事件中的一者或多者。

在一种可能的实施方式中,所述系统还包括存储系统;所述多种资源包括:存储资源、计算资源和通信资源;所述多个工作节点按照所述调度器生成的调度策略,执行对应的函数任务,包括:

在所述工作节点未启动函数任务对应的容器的情况下,利用存储资源从所述存储系统拉取函数镜像,启动新的容器;

在所述工作节点已启动函数任务对应的容器的情况下,利用计算资源执行函数任务,利用通信资源将执行结果返回给用户或发送给其他函数任务。

本申请实施例第二方面还提供了一种面向服务器无感知计算的多资源函数任务调度方法,应用于第一方面所提供的所述多资源函数任务调度系统;所述系统包括:调度器和多个工作节点;所述方法包括:

调度器获取各个函数任务对多种资源中每种资源的使用情况;

调度器根据所述各个函数任务对多种资源中每种资源的使用情况,将所有待执行的函数任务划分成多个函数任务共享组,并为所述多个函数任务共享组分配资源,得到调度策略;其中,每个所述函数任务共享组包括多个函数任务,且所述多个函数任务的不同阶段交错在一起进行资源共享,每个所述函数任务的不同阶段使用其阶段所需要的一种资源,其阶段不需要的资源共享给其所属的函数任务共享组内的其他函数任务使用;

多个工作节点按照所述调度器生成的调度策略,执行对应的函数任务。

本申请实施例第三方面还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序以实现本申请实施例第二方面所述的面向服务器无感知计算的多资源函数任务调度方法中的步骤。

本申请实施例第四方面还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现本申请实施例第二方面所述的面向服务器无感知计算的多资源函数任务调度方法中的步骤。

本申请实施例第五方面还提供了一种计算机程序产品,所述计算机程序产品在电子设备上运行时,使处理器执行时实现如本申请实施例第二方面所述的面向服务器无感知计算的多资源函数任务调度方法中的步骤。

本申请实施例提供的一种面向服务器无感知计算的多资源函数任务调度系统,所述系统包括:调度器和多个工作节点;所述调度器获取各个函数任务对多种资源中每种资源的使用情况;所述调度器根据所述各个函数任务对多种资源中每种资源的使用情况,将所有待执行的函数任务划分成多个函数任务共享组,并为所述多个函数任务共享组分配资源,得到调度策略;其中,每个所述函数任务共享组包括多个函数任务,且所述多个函数任务的不同阶段交错在一起进行资源共享,每个所述函数任务的不同阶段使用其阶段所需要的一种资源,其阶段不需要的资源共享给其所属的函数任务共享组内的其他函数任务使用;所述多个工作节点按照所述调度器生成的调度策略,执行对应的函数任务。

本申请所提出的系统,从服务器无感知计算任务对多种资源需求的角度,分析不同函数任务对多种资源(如计算资源、通信资源和存储资源)的使用情况,根据函数任务在启动阶段、计算阶段和通信阶段等不同阶段对多种资源中每种资源的使用情况(如实时需求量),生成调度策略。由此,通过该调度策略将多个函数任务组成函数任务共享组,在该函数任务共享组中,多个函数任务的不同阶段交错在一起进行资源共享,每个函数任务的不同阶段使用其阶段所需要的一种资源,其阶段不需要的资源共享给其所属的函数任务共享组内的其他函数任务使用,从而实现了函数任务共享组内的多个函数任务之间的细粒度的资源共享,提高了资源利用率,避免资源浪费或过载。

附图说明

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

图1是本申请实施例提供的一种面向服务器无感知计算的多资源函数任务调度系统的架构示意图;

图2是本申请实施例提供的一种细粒度的资源共享示意图;

图3是本申请实施例提供的一种函数任务共享组的筛选过程示意图;

图4是本申请实施例提供的一种面向服务器无感知计算的多资源函数任务调度方法的步骤流程图;

图5是本申请实施例提供的一种电子设备的示意图。

具体实施方式

下面将结合本申请实施例中的附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。

服务器无感知计算是一种新兴的云计算范型,提供以函数为粒度的微服务开发模式,其核心技术特征是数据中心资源以函数粒度随需即用。在服务器无感知计算范型下,用户使用高级编程语言编写业务逻辑函数,并指定触发事件,服务器无感知计算平台会适时调度和执行相应函数。服务器无感知计算对用户屏蔽底层系统和硬件细节,极大提高了易用性,并采用随用随付的商业模式,节省用户成本。上述特点促使许多企业和个人采用服务器无感知计算,同时也涌现出许多服务器无感知计算平台。

现有服务器无感知计算技术主要采用静态资源分配机制,将函数任务所需要的资源静态分配给函数,函数任务在运行期间完全占用其所获得的资源(包括存储资源、计算资源和通信资源)。然而,上述方案在函数任务数量较多的场景下,系统资源使用率较低,进而影响了函数任务处理效率。

鉴于上述问题,本申请实施例提出一种面向服务器无感知计算的多资源函数任务调度系统,以解决上述资源利用率较低等问题。下面结合附图,通过一些实施例及其应用场景对本申请实施例提供的面向服务器无感知计算的多资源函数任务调度系统进行详细地说明。

本申请实施例第一方面提供了一种面向服务器无感知计算的多资源函数任务调度系统,参照图1,图1为本申请实施例提供的一种面向服务器无感知计算的多资源函数任务调度系统的架构示意图,如图1所示,所述系统包括:

所述系统包括:调度器和多个工作节点。

所述调度器获取各个函数任务对多种资源中每种资源的使用情况。

所述调度器根据所述各个函数任务对多种资源中每种资源的使用情况,将所有待执行的函数任务划分成多个函数任务共享组,并为所述多个函数任务共享组分配资源,得到调度策略;其中,每个所述函数任务共享组包括多个函数任务,且所述多个函数任务的不同阶段交错在一起进行资源共享,每个所述函数任务的不同阶段使用其阶段所需要的一种资源,其阶段不需要的资源共享给其所属的函数任务共享组内的其他函数任务使用。

所述多个工作节点按照所述调度器生成的调度策略,执行对应的函数任务。

在实际应用过程中,函数任务可以被预先设定的HTTP请求、消息队列读写等事件触发,具体的,可以由用户向系统发送请求,以请求执行用户指定的函数任务,该函数任务可以为文件压缩、视频处理、缩略图生成、文件上传等。当系统中的调度器接收到触发事件时,会调度相应的函数任务到某一工作节点上,使用该工作节点上已有的容器,或,在该工作节点上创建新容器来调用函数请求。工作节点利用相关资源执行该函数任务,得到执行结果,最终将执行结果返回给用户。

服务器无感知计算是云计算领域的新兴技术,实现了函数即服务(任务)的云计算范式。在服务器无感知计算场景下,用户在服务器无感知计算平台使用高级编程语言编写业务逻辑函数,并指定触发事件,在此基础上,服务器无感知计算的任务调度系统响应于触发事件会适时调度和执行相应函数任务,对用户屏蔽底层系统和硬件细节,不需要用户专门为请求执行的函数任务分配特定的计算资源、存储资源,不需要用户指定执行任务的工作节点,服务器无感知计算的任务调度系统将自动为该任务构建运行环境,包括创建容器以及加载代码与相关库,然后执行该任务,极大提高了易用性。

在服务器无感知计算中,函数任务的资源消耗模式多样且复杂,但基本均遵循函数加载-函数执行-函数通信的三阶段模式。具体的,对于每个函数任务,一般包括三个阶段(函数加载、函数执行和函数通信),而每个阶段执行所所用的资源各不相同。其中,在函数加载阶段,由于存储节点通常和工作节点解耦,无状态的函数任务需要在启动阶段从存储系统中将函数镜像加载到工作节点。所以,函数加载阶段主要使用的是存储资源;在函数执行阶段,函数任务在工作节点上执行响应的函数处理任务,该阶段主要使用的是计算资源,在本实施例中,计算资源可以为CPU资源或GPU资源;在函数通信阶段,函数任务需要通过网络将处理结果传给下一个函数任务以继续处理,或,回传给用户,该阶段主要使用的是网络资源。

现有服务器无感知计算平台主要采用静态资源分配机制,将函数任务所需要的资源静态分配给函数,函数任务在运行期间完全占用其所获得的资源(包括存储资源、计算资源和通信资源)。然而,该策略没有考虑到函数执行时不同阶段对不同类型资源使用的差异,示例性的,将工作节点1的存储资源、计算资源和通信资源一并分配给函数任务A,而函数任务A在函数执行阶段,只利用了计算资源,导致分配的存储资源和通信资源闲置浪费。上述方案在函数任务数量较多的场景下,系统资源使用率较低,影响了函数任务处理效率。

在本实施例中,如图1所示,该系统包括调度器和多个工作节点。具体的,用户提交服务器无感知函数任务并设定服务器无感知函数任务的触发事件。调度器需要维护任务队列来管理用户提交的函数任务(包括正在执行和未执行的所有已提交的函数任务),分析函数任务的资源使用情况(即各个函数任务对多种资源中每种资源的使用情况),做出调度策略。各个函数任务对多种资源中每种资源的使用情况,是指该函数任务每执行一次所需要的存储资源、计算资源和通信资源的使用时间,示例性的,函数任务A的对多种资源中每种资源的使用情况是指,执行一次函数任务A使用存储资源使用时间为30分钟,计算资源使用时间为60分钟,和通信资源的使用时间为5分钟。

如图1所示,该调度器包括:资源分析模块、调度模块和监控模块。其中,资源分析模块负责分析记录每个函数任务对多种资源中每种资源的使用情况,该使用情况包括:函数任务一次执行中的资源使用量和资源使用时间等。调度模块则根据任务队列中所有待执行的函数任务的资源使用情况,给出调度策略(函数任务的共享方案和资源分配方案);监控模块负责监控各个工作节点上函数任务的执行情况,并针对异常进行处理。

在一种可能的实施方式中,所述调度器至少包括资源分析模块;

所述资源分析模块根据所述多资源函数任务调度系统的资源配置的类型,选择多个候选函数任务;

所述资源分析模块多次离线执行所述候选函数任务,统计每个所述候选函数任务在每次执行中的执行时间和各类资源的使用时间;

所述资源分析模块,将所述执行时间的平均值,以及,所述各类资源的使用时间的平均值作为该函数任务对多种资源中每种资源的所述使用情况,发送给所述调度器。

在本实施例中,调度器利用资源分析模块进行分析,对选择的每个候选函数任务进行多次离线调用执行,统计候选函数任务在每次执行中的执行时间和各类资源的使用时间。上述分析信息会被用于后续计算多个函数任务共享的效率和调度器生成任务共享执行的决策。资源分析模块使用服务器无感知的任务调度系统提供的计时工具、CPU用量监控工具、存储读写监控工具、网络读写监控工具,获取函数任务的执行时间和多种资源中每种资源的使用情况,因为函数任务的执行时间存在一定波动,资源分析模块会重复调用同一函数任务,并取平均值作为各统计量发送给调度模块。由调度模块根据上述信息生成调度策略。

此外,调度器会先根据多资源函数任务调度系统的资源配置的类型,选择多个候选函数任务。在本实施例中,考虑到服务器无感知计算的多资源函数任务调度系统的函数任务的资源需求可能各不相同,为简化资源分配和执行过程,本实施例只对需要相同数量资源的任务进行共享,即函数任务共享组中的所有函数任务需要的资源数量相同。由于多资源函数任务调度系统的函数任务的资源配置通常只有几类,且服务器无感知函数任务数量众多,如果对每个函数任务进行多次离线调用,则会导致处理量较大。本实施例根据资源配置的类型,分别选择从不同类型的资源配置的函数任务中选择一种,使得多个候选函数任务之间,资源配置的类型各不相同,由此,只需要对候选函数任务进行多次离线调用执行,则可以得到所有函数任务的信息(执行时间的平均值,以及,各类资源的使用时间的平均值)该处理方法仍能共享大量任务,从而提高资源利用率和任务执行效率。

为了解决上述静态资源分配机制的资源浪费问题,本实施例通过调度器中的调度模块将所有待执行的函数任务划分成多个函数任务共享组,并为多个函数任务共享组分配资源,得到调度策略。由此,使得同一个函数任务共享组中的多个函数任务能够共享分配的资源。具体的,多个函数任务的不同阶段交错在一起进行资源共享,每个函数任务的不同阶段使用其阶段所需要的一种资源,其阶段不需要的资源共享给其所属的函数任务共享组内的其他函数任务使用。

参照图2,图2示出了一种细粒度的资源共享示意图,如图2所示,在(a)示出的静态资源共享机制中,需要等待函数任务1使用存储资源、计算资源和通信资源,执行完成函数加载-函数执行-函数通信的三阶段之后,再执行函数任务2,由函数任务2使用三种资源执行函数加载-函数执行-函数通信的三个阶段。为避免函数执行中的资源干扰,并尽量提高各类资源利用率,本实施例提出,对于每个函数任务共享组中的多个函数任务,如图2中的(b)细粒度资源共享所示,函数任务共享组中的多个函数任务的三个阶段交错执行,由此,使函数任务1在函数计算阶段使用计算资源,同时,使函数任务2可以在函数加载使用存储资源。每一时刻每种资源只被一个函数任务使用,从而避免函数任务间的资源争抢,提高资源利用率。

在一种可能的实施方式中,所述根据所述各个函数任务对多种资源中每种资源的使用情况,将所有待执行的函数任务划分成多个函数任务共享组,包括:

根据所述所有待执行的函数任务,将每三个待执行的函数任务作为一组,枚举出所有函数任务共享组。

根据所述各个函数任务对多种资源中每种资源的使用情况,计算所有函数任务共享组的共享效率,所述共享效率反应函数任务共享组所包括的各个函数任务执行期间所述多种资源的平均使用时间占比。

根据所述共享效率,筛选得到所述多个函数任务共享组。

在本实施例中,对于所有待执行的函数任务,调度器通过调度模块生成调度策略。调度策略包括选取哪些待执行的函数任务组成函数任务共享组和分配资源两部分。对于生成函数任务共享组,需要最大化资源利用率和最小化平均任务完成时间,本实施例通过枚举得到所有可能的函数任务共享组,比较共享效率,确定多个函数任务共享组之间共享的优劣。

本实施例提出函数任务共享组的共享效率来量化不同函数任务共享组的优劣。所述共享效率反应函数任务共享组所包括的各个函数任务执行期间所述多种资源的平均使用时间占比,所以共享效率越大,则该共享组中每种资源的平均使用时间占比越大,共享的函数任务能更好地填满各类资源,减少资源浪费,资源使用效率越高;共享效率越小,则该共享组中每种资源的平均使用时间越短,资源使用效率越低。

在一种可能的实施方式中,所述共享效率是按照如下公式计算得到的:

其中,

其中,

在一种可能的实施方式中,所述根据所述共享效率,筛选得到所述多个函数任务共享组的筛选过程包括以下多轮:

在第一轮筛选中,将每个函数任务作为顶点,在每两个函数任务之间进行连边,每条边的权重表示连接的两个函数任务所组成的函数任务共享组的共享效率,利用最大权匹配算法求解,得到第一轮筛选结果,所述第一轮筛选结果包括:多个候选共享组和多个候选函数任务,每个候选共享组包括两个函数任务;

在第二轮筛选中,将所述候选共享组作为顶点,将所述候选函数任务作为顶点,在所述候选共享组和所述候选函数任务之间,或,两个所述候选函数任务之间进行连边,每条边的权重表示连接的候选共享组和候选函数任务所组成的函数任务共享组的共享效率,采用最大权匹配算法求解,得到所述多个函数任务共享组。

在本实施例中,采用全局调度策略将函数任务共享组的选择抽象为计算机图论中的最大权图匹配问题。将每个函数任务作为图中的一个点,点之间的连边的权重表示连接的函数任务的共享效率。图的一个匹配是一组没有公共顶点的边,所有匹配中边权和最大的匹配称为最大权匹配。对于最多共享两个任务的情况,该问题为一般图的最大权匹配问题,带花树算法可以在顶点个数的三次方时间内求出最优解。

考虑服务器无感知计算的多资源函数任务调度问题,至多有三个函数任务共享,无法直接使用上述带花树算法。对此,本实施例提出多轮近似算法,参照图3,图3示出了一种函数任务共享组的筛选过程示意图,如图3所示,第一轮筛选过程中,将每个函数任务作为顶点,每两个顶点之间连边,并求出最大权匹配(在按照上述公式计算共享效率时,N的取值为2),如图3所示,在第一轮筛选之后,将最大权匹配中的边的两个顶点合为一个顶点,得到两两组合的候选函数任务共享组和剩余的单个候选函数任务。在第二轮筛选过程中,在候选函数任务共享组所生成的顶点与剩余未合并的顶点(候选函数任务)之间进行连边,并且,在剩余未合并的顶点(候选函数任务)之间进行连边,采用最大权匹配算法继续求得最大权匹配(在按照上述公式计算共享效率时,N的取值为2),最终可获得至多三个函数任务共享的组合方案。

在一种可能的实施方式中,所述为所述多个函数任务共享组分配资源,包括:

按照所述多个函数任务共享组的服务量升序排序,依次将所述多个函数任务共享组分配到空闲资源上,所述服务量为:函数任务共享组的总执行时间,或,函数任务共享组的资源使用总量和所述总执行时间的乘积。

在本实施例中,调度器通过调度模块生成调度策略。调度策略包括选取待执行的函数任务组成函数任务共享组,和,为确定的各个函数任务共享组分配资源两部分。在确定多个函数任务共享组之后,需要为多个函数任务共享组分配资源,确定执行该函数任务共享组的具体的工作节点和空闲资源。为了给多个函数任务共享组分配资源,同时最小化平均任务完成时间,本实施例按照服务量升序排序,依次分配到空闲资源上,形成本次调度的调度策略,并发送给工作节点。服务量可以根据具体算法的不同来选择,具体的,该服务量可以为函数任务共享组的执行时间,即该函数任务共享组从开始执行至该函数任务共享组中的所有函数任务执行完成的时间,或,函数任务共享组的资源使用量和执行时间的乘积。

在一种可能的实施方式中,所述调度器至少包括监控模块;

所述工作节点,还用于在函数任务执行过程中发生异常的情况下,向所述监控模块报告异常信息;

所述监控模块根据接收到的所述异常信息,终止或重启异常的函数任务。

如图1所示,调度器中还包括监控模块,该监控模块负责接收各工作节点的执行情况和资源利用率,包括存储读写利用率、CPU利用率、网络读写利用率等。当接收到工作节点的异常信息时,监控模块会通知对应工作节点停止执行该函数任务,或者,将对应函数任务重新放入待执行的函数任务队列以重启该函数任务,并告知用户。

所述多个工作节点按照所述调度器生成的调度策略,执行对应的函数任务。

在本实施例中,基于服务器无感知的多资源函数任务调度系统中的每个服务器上均部署一个工作节点,每个工作节点会接收调度器生成的调度策略并执行调度策略所指示的函数任务共享组,得到函数任务的执行结果,并将执行结果返回给用户。

相关技术中的静态资源分配机制将函数所需要的资源静态分配给函数,函数在运行期间完全占用其所获得的资源(一个任务需要等待另一个任务完成才可执行)。该策略没有考虑到函数执行时不同阶段对不同类型资源使用的差异,资源使用率低。本实施例设计多种资源感知的细粒度资源共享机制,根据不同函数在不同阶段对不同类型资源使用的特点,来进行资源共享。在该机制下,多个函数的不同阶段交错在一起进行资源共享。每个函数的不同阶段使用其阶段所需要的资源,其阶段不需要的资源分配给其他函数使用。一个任务只需要等待前一个任务的启动阶段结束,就可以开始其任务启动,两个任务以交错的方式使用资源,从而实现了函数任务共享组内的多个函数任务之间的细粒度的资源共享,提高了资源利用率,避免资源浪费或过载。

在一种可能的实施方式中,如图1所示,所述系统还包括存储系统;所述多种资源包括:存储资源、计算资源和通信资源;所述多个工作节点按照所述调度器生成的调度策略,执行对应的函数任务,包括:

在所述工作节点未启动函数任务对应的容器的情况下,利用存储资源从所述存储系统拉取函数镜像,启动新的容器;

在所述工作节点已启动函数任务对应的容器的情况下,利用计算资源执行函数任务,利用通信资源将执行结果返回给用户或发送给其他函数任务。

每个工作节点接收到调度策略后,判断节点上是否有对应函数镜像,若没有则需要从存储系统拉取函数镜像并启动。在实际应用过程中,函数任务的启动包含冷启动和热启动两种模式。冷启动情况下,工作节点上未启动函数镜像的函数任务,需要首先利用存储资源从存储系统拉取函数镜像,启动新的容器,该段时间是存储资源的使用时间;热启动情况下,工作节点上已启动函数任务的容器,无需拉取函数镜像,因此其存储资源的使用时间为0。函数任务执行过程中主要使用CPU等计算资源,这部分时间作为计算资源的使用时间。任务结束后,需要将执行结果等返回给用户或发送给其他函数任务,这部分时间是网络资源的使用时间。

在一种可能的实施方式中,所述工作节点还用于获取每个函数任务执行完成的执行情况,将所述执行情况发送给所述资源分析模块;所述执行情况包括本次执行完成函数任务的实际执行时间和各类资源的实际使用时间;

所述资源分析模块利用所述执行情况,更新该函数任务对多种资源中每种资源的所述使用情况。

在本实施例中,工作节点需要监控函数任务的执行情况,该执行情况包括函数任务的执行时间、每种资源使用情况、资源利用率和异常信息,并报告给调度器中的资源分析模块,从而帮助资源分析模块对函数任务对多种资源中每种资源的使用情况进行更新,具体的,可以更新该函数任务对每种资源的使用量和使用时间。

在一种可能的实施方式中,所述调度器用于在检测到事件发生时,生成新的所述调度策略;所述事件为:函数任务触发事件、函数任务结束事件和函数任务异常事件中的一者或多者。

考虑到服务器无感知计算的函数任务往往执行时间较短,本实施例使用基于事件的调度模式,每当有函数任务触发、结束、异常等事件时,调度器会对所有待执行的函数任务和空闲资源进行一次调度,以生成当前时刻最合适的调度策略,调度策略中包括下一个需要执行的函数任务共享组、该共享组内的所有函数任务之间的共享模式和函数任务的资源分配。

本实施例从服务器无感知计算的函数任务对多种类型资源需求的角度,分析不同函数任务对多种资源(计算资源、网络资源和存储资源)的使用特点,根据不同函数任务在启动阶段、计算阶段和通信阶段等不同阶段对不同资源的实时需求量和使用时间,设计多种资源感知的细粒度资源共享机制和调度策略,优化函数任务完成时间、截止时间等多种优化目标。

为了验证该技术的性能,本申请实施例实现并评估了相关的系统原型。具体的,选取了SeBS基准函数集中多类工作负载,包括文件压缩、视频处理、缩略图生成、文件上传等,采用均匀负载和突发负载等多类负载进行测试。在6节点集群上与基线方法在完工时间、平均延迟、尾部延迟等方面进行了比较。测试结果表明,本实施例通过面向服务器无感知计算的多资源函数任务调度系统,执行对函数任务的细粒度资源共享方法,使多个函数任务共享多类资源,提高资源利用率,提升了多资源函数任务调度系统的集群效率和任务效率。

本实施例第二方面还提供了一种面向服务器无感知计算的多资源函数任务调度方法,应用于第一方面所提供的所述多资源函数任务调度系统;所述系统包括:调度器和多个工作节点;参照图4,图4示出了一种面向服务器无感知计算的多资源函数任务调度方法的步骤流程图,如图4所示,所述方法包括:

步骤S401,调度器获取各个函数任务对多种资源中每种资源的使用情况;

步骤S402,调度器根据所述各个函数任务对多种资源中每种资源的使用情况,将所有待执行的函数任务划分成多个函数任务共享组,并为所述多个函数任务共享组分配资源,得到调度策略;其中,每个所述函数任务共享组包括多个函数任务,且所述多个函数任务的不同阶段交错在一起进行资源共享,每个所述函数任务的不同阶段使用其阶段所需要的一种资源,其阶段不需要的资源共享给其所属的函数任务共享组内的其他函数任务使用;

步骤S403,多个工作节点按照所述调度器生成的调度策略,执行对应的函数任务。

在一种可能的实施方式中,所述根据所述各个函数任务对多种资源中每种资源的使用情况,将所有待执行的函数任务划分成多个函数任务共享组,包括:

根据所述所有待执行的函数任务,将每三个待执行的函数任务作为一组,枚举出所有函数任务共享组;

根据所述各个函数任务对多种资源中每种资源的使用情况,计算所有函数任务共享组的共享效率,所述共享效率反应函数任务共享组所包括的各个函数任务执行期间所述多种资源的平均使用时间占比;

根据所述共享效率,筛选得到所述多个函数任务共享组。

在一种可能的实施方式中,所述根据所述共享效率,筛选得到所述多个函数任务共享组的筛选过程包括以下多轮:

在第一轮筛选中,将每个函数任务作为顶点,在每两个函数任务之间进行连边,每条边的权重表示连接的两个函数任务所组成的函数任务共享组的共享效率,利用最大权匹配算法求解,得到第一轮筛选结果,所述第一轮筛选结果包括:多个候选共享组和多个候选函数任务,每个候选共享组包括两个函数任务;

在第二轮筛选中,将所述候选共享组作为顶点,将所述候选函数任务作为顶点,在所述候选共享组和所述候选函数任务之间,或,两个所述候选函数任务之间进行连边,每条边的权重表示连接的候选共享组和候选函数任务所组成的函数任务共享组的共享效率,采用最大权匹配算法求解,得到所述多个函数任务共享组。

在一种可能的实施方式中,所述共享效率是按照如下公式计算得到的:

其中,

其中,

在一种可能的实施方式中,所述为所述多个函数任务共享组分配资源,包括:

按照所述多个函数任务共享组的服务量升序排序,依次将所述多个函数任务共享组分配到空闲资源上,所述服务量为:函数任务共享组的总执行时间,或,函数任务共享组的资源使用总量和所述总执行时间的乘积。

在一种可能的实施方式中,所述调度器至少包括监控模块;所述方法还包括:

在函数任务执行过程中发生异常的情况下,所述工作节点向所述监控模块报告异常信息;

所述监控模块根据接收到的所述异常信息,终止或重启异常的函数任务。

在一种可能的实施方式中,所述调度器至少包括资源分析模块;所述方法还包括:

所述资源分析模块根据所述多资源函数任务调度系统的资源配置的类型,选择多个候选函数任务;

所述资源分析模块多次离线执行所述候选函数任务,统计每个所述候选函数任务在每次执行中的执行时间和各类资源的使用时间;

所述资源分析模块,将所述执行时间的平均值,以及,所述各类资源的使用时间的平均值作为该函数任务对多种资源中每种资源的所述使用情况,发送给所述调度器。

在一种可能的实施方式中,所述方法还包括:

所述工作节点获取每个函数任务执行完成的执行情况,将所述执行情况发送给所述资源分析模块;所述执行情况包括本次执行完成函数任务的实际执行时间和各类资源的实际使用时间;

所述资源分析模块利用所述执行情况,更新该函数任务对多种资源中每种资源的所述使用情况。

在一种可能的实施方式中,所述方法还包括:

所述调度器在检测到事件发生时,生成新的所述调度策略;所述事件为:函数任务触发事件、函数任务结束事件和函数任务异常事件中的一者或多者。

在一种可能的实施方式中,所述系统还包括存储系统;所述多种资源包括:存储资源、计算资源和通信资源;所述多个工作节点按照所述调度器生成的调度策略,执行对应的函数任务,包括:

在所述工作节点未启动函数任务对应的容器的情况下,利用存储资源从所述存储系统拉取函数镜像,启动新的容器;

在所述工作节点已启动函数任务对应的容器的情况下,利用计算资源执行函数任务,利用通信资源将执行结果返回给用户或发送给其他函数任务;

本申请实施例还提供了一种电子设备,参照图5,图5是本申请实施例提出的电子设备的示意图。如图5所示,电子设备100包括:存储器110和处理器120,存储器110与处理器120之间通过总线通信连接,存储器110中存储有计算机程序,该计算机程序可在处理器120上运行,进而实现本申请实施例公开的面向服务器无感知计算的多资源函数任务调度方法中的步骤。

本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现如本申请实施例公开的面向服务器无感知计算的多资源函数任务调度方法中的步骤。

本申请实施例还提供了一种计算机程序产品,所述计算机程序产品在电子设备上运行时,使处理器执行时实现如本申请实施例所公开的面向服务器无感知计算的多资源函数任务调度方法的步骤。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本申请实施例是参照根据本申请实施例的方法、装置、电子设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。

以上对本申请所提供的一种面向服务器无感知计算的多资源函数任务调度系统,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

技术分类

06120116556369