System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 基于Zygote机制的无服务器计算容器冷启动优化方法技术_技高网
当前位置: 首页 > 专利查询>天津大学专利>正文

基于Zygote机制的无服务器计算容器冷启动优化方法技术

技术编号:43032057 阅读:12 留言:0更新日期:2024-10-18 17:33
本发明专利技术公开了一种基于Zygote机制的无服务器计算容器冷启动优化方法,根据函数调用的历史记录预测下一时间段的函数调用次数,并由预测结果根据算法提前准备函数所需依赖,以减少容器冷启动延迟。主要包括通过时间序列预测来较准确地获取下一时间段的函数调用情况。再根据预测结果确定该函数是否启动私有容器,所有不满足条件的获取依赖集合,根据依赖集合对应函数的调用次数、依赖集合中所有依赖的TF值、安装和导入时间,获取所有依赖集合的分数,并按分数由大到小迭代创建Zygote容器,使得在Zygote容器较少的情况下仍可满足未来大多数的函数调用需求,最后针对每个函数调用选取合适的容器执行请求。本发明专利技术大大减少了容器冷启动延迟。

【技术实现步骤摘要】

本专利技术属于无服务器计算领域,特别是一种基于zygote机制的降低无服务器计算容器冷启动延迟的方法。


技术介绍

1、互联网技术的迅猛发展催生了对更加高效、便捷开发模式的追求。在这样的大环境下,无服务器计算凭借其出色的可维护性、敏捷的伸缩能力和细粒度的计费方式,成为了一种新的解决方案。在无服务器计算中,开发者把应用拆分成若干函数,这些函数在无服务器平台提供的容器或虚拟机中执行。这种方法的引入带来了以下显著的好处:首先,它能自适应地调整处理能力,让开发者摆脱对服务器数量和配置的担忧,极大地简化了管理流程。其次,开发者的费用仅基于实际使用时间计算,这不仅降低了成本,还有助于提升性能。

2、尽管无服务器计算优势巨大,但仍存在一些问题,容器冷启动延迟便是其中之一。冷启动延迟会显著影响无服务器函数的整体运行效率。这主要是由于2个原因:一是冷启动频繁发生;二是冷启动占用的延迟时间比例过高。通常,无服务器函数的生命周期较短,大部分无服务器函数甚至只需要几十毫秒即可执行完毕,与之相比,几十上百的冷启动延迟就显得。有人对14个无服务器函数执行延迟与总响应延迟的比例进行了计算,发现有12个无服务器函数的执行延迟甚至不到30%。因此,快速的冷启动对于开发者来说至关重要。

3、时间序列预测指的是对历史时序数据进行分析并预测未来趋势,已在交通、气象学、股票市场等多个领域展现出其独特价值。该技术通过对过去数据的深入分析,捕捉数据随时间变化的规律,并结合季节性调整、周期性波动等因素,进而准确地预测未来数据趋势。现有方法大多直接通过预测获取函数下次调用时间,但由于预测存在一定错误率,导致启动错误的函数实例从而导致既浪费资源,又并没有有效减少冷启动时间。本专利技术使用时间序列预测技术来获取未来函数调用次数,并将其与zygote机制结合,以便针对性地提前启动容器或准备好部分依赖,减少冷启动时间。

4、zygotes机制最初源于android系统,是一种用于提高应用程序启动的速度和效率的优化技术。当需要启动一个新的应用程序时,zygote进程会通过fork()系统调用创建一个新的子进程,且这个子进程已经包含了一些预加载的运行时环境和类库,从而避免从头开始加载运行时环境和类库的时间消耗,有效地简化了应用启动过程。在本专利技术中,将包含函数公共依赖包的基础容器视作zygote容器,其可充当多个函数的“父容器”,其在公共域提前下载、安装、导入了一些依赖,并在私有域提前下载了一些依赖,且由于造成容器冷启动的主要原因是函数所需依赖的安装与下载,因此直接由zygote容器fork新容器可显著减少启动时间。

5、现有的基于zygotes机制的方法中要么是缓存被调用过的zygote树,并通过lru算法更新缓存;要么是基于相似度合并几个容器的公共包创建zygote容器,但这些都极易造成生成的zygote容器不会被用到,既造成未来的函数调用无法使用zygote容器以减少冷启动,无用的zygote容器又占用了大量内存。


技术实现思路

1、针对现有工作中出现的问题,本专利技术提供一种基于zygote机制的无服务器计算容器冷启动优化方法。该方法首先通过时间序列预测获取未来函数调用次数,接着根据函数调用次数确定启动哪些私有容器或启动哪些zygote容器以及zygote容器提前准备了哪些依赖,使得提前创建的私有容器和zygote容器极大概率被使用,进而让绝大多数函数调用均可以直接使用私有容器或根据zygote容器获取函数实例来减少冷启动延迟。

2、为了解决上述技术问题,本专利技术提出的一种基于zygote机制的冷启动优化方法,包括以下步骤:

3、步骤一,通过时间序列预测获取下一时间段各函数调用次数

4、1-1)数据预处理:本专利技术使用包含函数id、函数调用时间的数据集,将所有待预测函数的每个时间段的调用次数作为特征,并通过序列长度和排列熵对各函数序列的可预测性进行了度量,只对序列长度高于阈值l1且排列熵低于阈值lh的序列进行预测。忽略了记录数量极少且预测效果不佳却需要消耗一定资源的序列;

5、1-2)构建并时间序列预测模型:本专利技术使用timesnet作为预测模型,并使用tweedie损失函数作为损失函数。并按照7:1:2的比例将上述数据集划分成训练集、验证集、测试集。训练集用于训练模型,验证集用于调整模型超参数,测试集用于最后实验评估效果;

6、1-3)预测未来的函数调用情况:使用构建好的神经网络模型在每个时间段,预测下一时间段各函数的调用次数;

7、步骤二,根据函数调用情况确定容器种类

8、获取到预测结果后,需要确定创建哪种容器;

9、2-1)确定私有容器种类:判断下一时间段各函数调用次数是否大于等于阈值lp,倘若满足条件,则发送创建容器实例的命令,执行步骤三;否则,执行步骤2-2);

10、2-2)确定zygote容器种类:首先,获取所有调用次数小于阈值lp的函数及其对应的调用次数;接着获取所有函数的所有依赖集合,再计算某依赖集合i的分数s(i),以衡量依赖集合i出现频次以及根据该依赖集合创建zygote容器带来的收益,分数计算公式如下:

11、

12、其中times(i)表示包含依赖集合i的所有函数下一时间段调用次数之和,本专利技术使用其来衡量下一时间段调用的函数需要依赖集合i的可能性,timeconfiguration(i)表示将依赖集合i安装、导入的平均时间,用来衡量创建该zygote容器相对其它种类zygote容器可节省冷启动的时间长短。α、β、γ均为超参数。tf(i)表示依赖集合i的“词频”。

13、得到各集合分数后,再按分数大小排序,按以下方法迭代:每次选择分数最高的集合作为新创建zygote容器的公共域的依赖集合cs,获取所有含有该依赖集合的函数,并得到除依赖集合cs的其它依赖,将其作为各函数私有域的依赖集合cp,并同时更新除依赖集合cs以外的其它集合的分数。更新方法为:获取所有包含分数最高依赖集合的函数,对于每个函数j,得到其所有依赖集合,并将依赖集合对应的times(i)减去函数j的下一时间段调用次数,再更新该依赖集合的分数。迭代结束条件为所有函数均可使用某个zygote容器获取函数实例或者剩余依赖集合的分数低于阈值ls。

14、步骤三,根据控制器命令创建容器

15、主机接收到创建命令后,需要按命令提前创建对应容器,以下为具体创建方法;

16、3-1)创建私有容器:直接启动对应函数的镜像,容器内函数依赖均已被下载、安装、导入,且代码正在运行;

17、3-2)创建zygote容器:容器内部设有共享域和每个函数对应的私有域,可使用该容器的函数只能访问共享域和函数对应的私有域。共享域安装、导入了所有函数所需的依赖;私有域中提前下载了每个函数对应的依赖和代码;

18、步骤四,执行函数调用请求

19、函数调用请求到来后,将请求发送本文档来自技高网...

【技术保护点】

1.一种基于Zygote机制的无服务器计算容器冷启动优化方法,其特征在于,包括以下步骤:

【技术特征摘要】

1.一种基于zygote机制的无服务器计算容...

【专利技术属性】
技术研发人员:石高涛陈宇涛张旺
申请(专利权)人:天津大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1