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

基于函数中间表达的无服务器计算调度系统及方法

文献发布时间:2023-06-19 12:10:19


基于函数中间表达的无服务器计算调度系统及方法

技术领域

本发明涉及的是一种云计算领域的技术,具体是一种基于函数中间表达(intermediate representation)的无服务器计算调度系统及方法。

背景技术

无服务器计算是一种新型的云计算模式,它可以将传统的单体应用进行细粒度的分割,并且可以将用户从繁杂的服务器管理中解放出来,极大的提高了应用部署的灵活性,提高了用户的生产效率。与传统的云计算负载不同,无服务器计算函数具有异构性、多样性以及动态性的特点,这就使得设计一款满足无服务器计算函数复杂特性的功耗管理机制充满了挑战。现有的针对云计算应用的调度策略都不能达到对无服务器计算函数的最优化调度,因为这些调度机制是粗粒度的,并且缺乏一个系统的视角。现有的调度主要从两个层面对应用进行调度:1)宏观层面的请求级调度,以请求的粒度对应用所需要的资源进行分配调度;2)微观层面的硬件动态调度,以指令的粒度对线程运行所需要的资源进行分配调度。这两种层面的调度方案都没有办法获取无服务器计算函数的如下内部特征:1)运行环境,无服务器计算平台允许开发者使用各种编程语言开发对应的函数;2)容器生命周期,无服务器计算函数在运行过程中可以分为很多个不同的阶段以及3)资源占用,无服务器计算函数所完成的任务不同,从而导致了函数所需要的资源类型也不同。若不能考虑上述无服务器计算函数的多维度特征,系统将无法为运行于同一个处理器核上的多个无服务器计算函数配置共同的最佳运行点,造成处理器核无法运行在最佳的能效状态。

发明内容

本发明针对现有技术存在的上述不足,提出一种基于函数中间表达的无服务器计算调度系统及方法,通过使用函数中间表达来描绘无服务器计算函数的多维度特征,并利用无服务器计算函数的多维度特征,周期性地对函数进行迁移以及对核进行频率调节,保证无服务器计算函数可以按照最优运行点运行。该系统可以提高无服务器计算系统的能效。

本发明是通过以下技术方案实现的:

本发明涉及一种基于函数中间表达的无服务器计算调度系统,包括:函数特征获取模块、函数聚集模块、映射模块和调节模块,其中:函数特征获取模块获取函数的编程语言特征、函数的运行时阶段特征以及函数的微体系结构特征;函数聚集模块将函数按照不同的特征聚集成为不同的函数集合;映射模块根据不同的函数集合,将CPU核分为初始化阶段CPU核、运行时阶段CPU核以及混合CPU核;调节模块根据函数的特征和CPU核的分类将函数部署到指定的核上,并根据函数特征的变化对函数周期性地进行迁移以及每个核的频率调节。

技术效果

与现有技术相比,本发明能够缓解上层请求级调度与底层指令级动态调度之间的缺口。函数的中间表达可以描述无服务器计算函数的多维度特征,利用这些多维度特征,可以更好的对无服务器计算函数进行调度和分配。本发明可以对函数的多维度特征进行获取、聚集,并对CPU核进行映射与调节,保证无服务器计算函数可以按照各自的最优运算频率进行运算。与现有工作相比,该系统可以保证无服务器计算系统中函数尽可能按照最优化运行频率进行运算,并且提高了无服务器计算系统的能源效率。

附图说明

图1为本发明流程图;

图2为函数特征获取模块示意图;

图3为函数聚集模块示意图;

图4为映射模块示意图;

图5为调节模块示意图;

图6为实施例整体实现图;

图7-8为实施例效果示意图。

具体实施方式

如图6所示,本实施例涉及一种基于函数中间表达的无服务器计算调度系统,包括:函数特征获取模块、函数聚集模块、映射模块和调节模块,其中:函数特征获取模块获取函数的编程语言特征、函数的运行时阶段特征以及函数的微体系结构特征;函数聚集模块将函数按照不同的特征聚集成为不同的函数集合;映射模块根据不同的函数集合,将CPU核分为初始化阶段CPU核、运行时阶段CPU核以及混合CPU核;调节模块根据函数的特征和CPU核的分类将函数部署到指定的核上,并根据函数特征的变化对函数周期性地进行迁移以及每个核的频率调节。

如图2~图5所示,所述的函数特征获取是指:首先获取函数的标识,然后分别:从无服务器计算函数的硬件层面获取函数的微体系结构特征

所述的函数聚集是指:将函数按照不同的特征聚集成为不同的函数集合,根据函数特征进行聚集,具体为:首先按照函数运行时阶段特征

所述的初始化阶段CPU核是指:按照集合

所述的运行时阶段CPU核是指:按照集合

所述的混合CPU核是指:由于每个CPU核上所能部署的函数数量有限,无法将所有具有相同特征的函数部署在相同的CPU核上,将不能完全按照特征部署的函数部署在混合CPU核上;该混合CPU核包括:初始化混合CPU核、运行时混合CPU核以及初始化/运行时混合CPU核,其中:初始化混合CPU核是指:初始化CPU核中还有部分函数处于初始化阶段,但是没有办法将具有相同编程语言的函数部署在同一个CPU核上,此时将剩下的这部分同处于初始化阶段的函数可以部署的CPU核标记为初始化混合CPU核,初始化混合CPU核中每一个核上将要运行的函数都处于初始化阶段但是编程语言不相同;运行时混合CPU核是指:运行时CPU核中依旧存在函数无法完全按照相同的微体系结构特征部署在同一个CPU核上;此时将剩下的这部分同处于运行时阶段的函数可以部署的CPU核标记为运行时混合CPU核;运行时混合CPU核中每一个核上将要运行的函数都处于运行时阶段但是微体系结构特征不相同;初始化/运行时混合CPU核是指:剩余部分函数无法按照初始化阶段以及运行时阶段部署在相同的CPU核上,此时剩余具有初始化阶段和运行时阶段的函数混合部署在CPU核上,并将这些核标记为初始化/运行时混合CPU核。

所述的调节是指:首先根据函数的特性和CPU核的分类将函数部署到指定的核上,感觉CPU核上运行的函数特征为每一个CPU核的频率设置为函数的最优运行频率并针对函数特征的变化对函数周期性地进行迁移以保证CPU核混乱因子最小,并且周期性地对CPU核进行频率调节,保证CPU核的频率满足函数的最优运行频率。

所述的对函数周期性地进行迁移是指:随着函数的运行,部分函数的特征会发生变化,同时伴随着新访问函数的到来,越来越多的CPU核上的函数无法保证具有相同的特征,这样混合CPU核会越来越多。本发明周期性地对CPU核上运行的函数进行迁移调节,确保无服务器计算系统中CPU核混乱因子最小。

所述的CPU核混乱因子是指:无服务器计算系统中混合CPU核占据所有激活CPU核的比重,即

如图1所示,当用户向无服务器计算系统发送函数触发请求时,所述无服务器计算调度系统的具体调度方法包括:

步骤1,函数特征提取模块获取函数的多维度特征,具体为:当函数运行在无服务器计算系统时,函数特征提取模块获取函数对应容器的标识符,并从三个不同的层次对无服务器计算函数的特征进行获取:从硬件层面获取函数的微体系结构特征

1)当函数访问无服务器计算系统时,函数特征提取模块首先会从函数软件层面获取函数的编程语言。获取函数语言的方法为利用docker ps命令解析其输出可以获取到函数的实现语言。并存储在一元组

2)函数特征提取模块周期性(100ms)地从硬件层面获取函数的微体系结构特征,函数特征提取模块使用perf命令对特定核上的特定的事件进行统计,事件包括:task-clock用来表述CPU利用率,cache-reference用来表示内存使用带宽以及block:block_rq_insert用来表示应用的IO带宽。并将这些硬件信息存储到三元组中

3)函数特征提取模块周期性(100ms)地从操作系统层面获取函数的运行时阶段特征,该模块通过分析docker log输出的日志信息,获取到函数当前所处于初始化阶段还是运行时阶段。并将该运行时信息存储在一元组中

函数特征提取模块将收集到的三方面特征信息进行归纳,并存储为一个具有函数标识的三元组

步骤2,函数聚集模块将函数按照不同的特征聚集成为不同的函数集合,具体为:首先根据函数的运行时阶段特征,将函数分为两个大类:所有处于初始化阶段的函数聚集成为初始化阶段函数集合;所有处于运行时阶段的函数聚集成为运行时阶段函数集合。

1)函数聚集模块进一步对初始化阶段函数集合根据编程语言进行聚集,将初始化阶段函数集合中具有相同编程语言(python,java,go,ruby,swift,php,rust等)的函数聚集成为新的函数集合

2)函数聚集模块进一步对运行时阶段函数集合根据微体系结构特征进行聚集,将运行时阶段中具有相同微体系结构特征(CPU密集、内存密集、IO密集等)的函数聚集成为新的函数集合

经过函数聚集模块,可以将无服务器计算系统中的函数分为具有相同特征的不同集合,然后下一步根据这些集合的特征,将这些函数部署到无服务器计算系统中。

步骤3,函数映射模块对无服务器计算系统上CPU核的分类,确保无服务器计算函数可以与CPU核有一个较好的映射,函数映射模块根据函数聚集模块中得到的不同的函数集合的特点和数量,将无服务器计算平台上CPU核分为:1)初始化阶段CPU核;2)运行时阶段CPU核;以及3)混合CPU核。无服务器计算平台上每个CPU核可最多同时部署4个函数。

1)所述的初始化阶段CPU核是指:对集合

2)所述的运行时阶段CPU核是指:对集合

3)所述的混合CPU核是指:由于每个CPU核上所能部署的函数数量有限,无法将所有具有相同特征的函数部署在相同的CPU核上,将不能完全按照特征部署的函数部署在混合CPU核上。混合CPU核进一步可以分为三类:1)初始化混合CPU核;2)运行时混合CPU核;以及3)初始化/运行时混合CPU核。

所述的混合CPU核,进一步按以下方式进行划分:

步骤4,调节模块对函数的运行环境进行调节,具体为:首先根据函数的特性和CPU核的分类将函数部署到指定的核上,根据函数-频率表将每一个CPU核的频率设置为函数的最优运行频率。并针对函数特征的变化对函数周期性地进行迁移以保证CPU核混乱因子最小,并且周期性地对CPU核进行频率调节,保证CPU核的频率满足函数的最优运行频率。

所述的函数-频率表是指:对无服务器计算平台上运行的函数进行统计,获取每种函数特征下函数运行在不同频率的能源效率。具体步骤为:将不同特征的函数绑定在CPU核,然后设置该CPU核的频率为0.8GHz,0.9GHz,…,2.2GHz,记录在每种频率设定下函数的能源效率。并将得到的结构存储在函数-频率表中。

所述的函数-频率表包括:函数特征以及0.8GHz~2.2GHz每隔0.1GHz对应的能源效率。

所述的将CPU核的频率设置为函数的最优运行频率,具体步骤包括:

1)根据函数映射模块将CPU核标记为不同类别。调节模块使用Cgroup命令将函数绑定到对应特征标记的CPU核上。

2)对于初始化阶段CPU核和运行时阶段CPU核,调节模块查询函数-频率表,选择对应函数特征的最优运行频率,然后使用DVFS来调节对应CPU核的频率。

3)对于混合CPU核,则使用能源效率最大化算法设置CPU核的频率。对于每一个混合CPU核上函数,从函数-频率表中获取函数在每种频率设置下的能源效率。在每一种频率设置下,将该CPU核上的所有函数能源效率相加,比较每种频率下的函数总体能源效率。选择使得函数总体能源效率最高的频率设置为该混合CPU核的频率。

所述的对函数周期性地进行迁移是指:随着函数的运行,部分函数的特征会发生变化,同时伴随着新访问函数的到来,越来越多的CPU核上的函数无法保证具有相同的特征,这样混合CPU核会越来越多。本发明周期性地对CPU核上运行的函数进行迁移调节,确保无服务器计算系统中CPU核混乱因子最小。

所述的CPU核混乱因子是指:无服务器计算系统中混合CPU核占据所有激活CPU核的比重,即

为了进行函数的迁移,根据目前系统内函数的特征,每隔100ms对CPU核进行重新的标记,并根据标记,对函数进行迁移,将具有相同特征的函数迁移到对应CPU核上。同时,将新访问的函数按照特征部署到对应的CPU核上。

所述的迁移,具体步骤包括:

经过具体实际实验,CPU为Intel(R)Xeon(R)Silver4114,无服务器计算函数选择ALUpy,ALUJS,ALUGo,ALUswift,ALUphp,ALUruby,FileIO,调节周期为100ms,每个CPU核上可以部署的函数最多为2个或4个。能够得到的实验数据是:本发明可以降低无服务器计算系统中CPU核部署函数的混乱程度,提高系统整体14%~53%的能效。

与现有技术相比,本方法显著缓解上层请求级调度与底层指令级动态调度之间的缺口。函数的中间表达可以描述无服务器计算函数的多维度特征,利用这些多维度特征,可以更好的对无服务器计算函数进行调度和分配。元调度来对函数的多维度特征进行获取、聚集,并对CPU核进行映射与调节,保证无服务器计算函数可以按照各自的最优运算频率进行运算。使得本发明可以更好的部署和管理无服务器计算系统,优化系统整体的运行能源效率。

上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

相关技术
  • 基于函数中间表达的无服务器计算调度系统及方法
  • 基于函数中间表达的无服务器计算调度系统及方法
技术分类

06120113195725