System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及云计算,特别是涉及内存控制。
技术介绍
1、serverless计算通常被称为faas(function-as-a-service),迅速改变了云计算格局,使开发者可以卸载基础设施管理,仅关注代码功能。开发者可以将单体应用解耦为细粒度的函数,并在隔离的沙盒中调用它们。当前的serverless系统主要专注于横向扩展(即“横向扩展”或“scale-out”),同时利用安全容器来动态分配资源。在这种情况下,每个容器占用其专用的轻量级虚拟机(microvm),遵循单容器单虚拟机(scpv)模型。这种安排要求每个microvm运行自己的guest操作系统,这显著增加了guestos的内存开销,尤其是在每个节点上serverless容器数量增加至数千个的情况下。
2、为此云商引入了microvm模板以最小化guets实例之间的内存占用,如rund,一种轻量级安全容器。模板技术使guest内核能够按需加载内存,允许代码段和只读数据段在多个microvm实例之间共享。模板中的内核文件若未被访问则不会占用物理内存,从而减少实例的内存占用。rund使用了上述技术,使得安全容器在横向扩展时,创建的新microvm的内存占用显著减少。
3、此外,应用程序的调用模式存在明显偏斜。排名前18.6%的应用占serverless平台调用次数的99.6%以上,这些热门应用中的每个函数创建了多个microvm。例如,在重放azure trace中的函数id为bba3cc的函数时,观察到该单个函数触发了50多个microvm的创建
4、在实现mcpv模型以容纳同一函数的多个容器于一个microvm中时,一种直观的方法是允许在一个固定大小的microvm内创建具有静态容量的容器。此静态容量可以由开发者提供的资源规范决定,也可以通过云提供商进行的分析确定。然而,这种静态mcpv模型存在显著的缺点,即microvm内的容器数量容易超额指定,导致存在资源碎片的浪费。
5、上述限制促使本领域技术人员考虑一个动态的mcpv模型。在该模型中,microvm可以根据波动的工作负载调整其内存大小和容器数量。在函数请求稀疏时,microvm可以将其容器容量最小化为1,从而避免预分配内存资源导致的内存碎片。相反,对于增加的函数请求,microvm可以扩展内存和cpu资源,根据需要添加更多容器,以分摊guestos在多个容器之间的内存开销。当负载减少时,容器进程在超时后退出,microvm可以缩减规模并释放内存资源。因此,动态mcpv模型使得容器资源与microvm的生命周期解耦,从而消除内存碎片和浪费的问题。
6、申请内容
7、鉴于以上所述现有技术的缺点,本申请的目的在于提供一种服务器无感知安全容器的内存热插拔控制方法及电子设备,用于解决microvm内存调整的上述缺点。
8、为实现上述目的及其他相关目的,本申请提供一种服务器无感知安全容器的内存热插拔控制方法,所述方法包括:在接收到容器进程发起的内存分配请求时,基于czone从可移动区域分配内存;在接收到函数容器分配请求时,基于rund-v调用czone进行容器纵向扩展。
9、于本申请的一实施例中,所述基于czone从可移动区域分配内存包括:将czone配置为可移动区域的代理;在接收到容器进程发起的内存分配请求时,所述内存分配请求被代理到czone;检测所述czone是否满足内存分配请求,并在所述czone无法满足内存分配请求时,从所述可移动区域分配内存。
10、于本申请的一实施例中,所述从所述可移动区域分配内存包括:linux的任务结构中配置czone id字段,并基于与czone的相关性配置czone id字段的值;在接收到容器进程发起的内存分配请求时,基于所述czone id字段的值从所述可移动区域分配内存。
11、于本申请的一实施例中,所述czone id字段由所述容器进程的子进程继承,所述子进程通过封装系统czone_fork()创建。
12、于本申请的一实施例中,所述基于rund-v调用czone进行容器纵向扩展包括:当检测到microvm中的所有容器都在忙碌时,rund-v通过调用czone来触发纵向扩展,生成初始容器,以热插入容器所需的内存区域;czone为所述初始容器创建子进程,并将容器id和内存域id组成czone id字段,记录于所述czone中;函数实例管理代理调用cgroup以限制cpu和内存的使用,并将所述cgroup附加于容器进程上,同时rund-v定位附加到microvm的轻量级cgroup,并根据容器的规格增加资源限制;rund-v运行时通知microvm中的代理将所述初始容器添加到其调度组,完成纵向扩展。
13、于本申请的一实施例中,还包括:rund-v在每个microvm的guest中配置一个czone标志和所述czone标志的初始状态;当microvm检测所述czone标志的初始状态为预设状态时,允许czone进行容器纵向扩展,并在czone进行容器纵向扩展时,改变所述czone标志的状态。
14、于本申请的一实施例中,当rund-v运行时检测扩展请求被拒绝的次数达到预设值时,触发创建新的microvm实例,进行rund-v的横向扩展。
15、于本申请的一实施例中,当当检测到某个容器实例空闲时间到达时间阈值时,回收纵向资源或横向资源。
16、为实现上述目的及其他相关目的,本申请还提供一种计算机存储介质,存储有程序指令,所述程序指令被执行时实现如上所述的服务器无感知安全容器的内存热插拔控制方法的步骤。
17、为实现上述目的及其他相关目的,本申请还提供一种电子设备,包括存储器,用于存储计算机程序;处理器,用于运行所述计算机程序以实现如上所述的服务器无感知安全容器的内存热插拔控制方法的步骤。
18、如上所述,本申请的服务器无感知安全容器的内存热插拔控制方法及电子设备具有以下
19、有益效果:
20、本申请提供了一种有效的内存热插拔技术,最小化动态内存分配期间的性能下降,实现函数的多个副本容器能够在单个vm内通过纵向扩容降低vm的额外内存开销,加速运行时启动,可以为服务器无感知计算应用于高密度部署和高并发启动提供技术依托,可以构建具有商业意义的、基于混合资源扩展技术的服务器无感知计算系统,面向云服务提供商提供容器高效扩展服务。
技术实现思路
本文档来自技高网...【技术保护点】
1.一种服务器无感知安全容器的内存热插拔控制方法,其特征在于:所述方法包括:
2.根据权利要求1所述的服务器无感知安全容器的内存热插拔控制方法,其特征在于:所述基于CZone从可移动区域分配内存包括:
3.根据权利要求1或2所述的服务器无感知安全容器的内存热插拔控制方法,其特征在于:所述从所述可移动区域分配内存包括:
4.根据权利要求3所述的服务器无感知安全容器的内存热插拔控制方法,其特征在于:所述CZone ID字段由所述容器进程的子进程继承,所述子进程通过封装系统czone_fork()创建。
5.根据权利要求1所述的服务器无感知安全容器的内存热插拔控制方法,其特征在于:所述基于RunD-V调用CZone进行容器纵向扩展包括:
6.根据权利要求5所述的服务器无感知安全容器的内存热插拔控制方法,其特征在于:还包括:
7.根据权利要求6所述的服务器无感知安全容器的内存热插拔控制方法,其特征在于:当
8.根据权利要求7所述的服务器无感知安全容器的内存热插拔控制方法,其特征在于:当当检测到某个容器实例
9.一种电子设备,其特征在于,包括:包括存储器,用于存储计算机程序;处理器,用于运行所述计算机程序以实现如权利要求1至权利要求8任一权利要求所述的服务器无感知安全容器的内存热插拔控制方法的步骤。
10.一种计算机存储介质,存储有程序指令,其特征在于:所述程序指令被执行时实现如权利要求1至权利要求8任一项所述的服务器无感知安全容器的内存热插拔控制方法的步骤。
...【技术特征摘要】
1.一种服务器无感知安全容器的内存热插拔控制方法,其特征在于:所述方法包括:
2.根据权利要求1所述的服务器无感知安全容器的内存热插拔控制方法,其特征在于:所述基于czone从可移动区域分配内存包括:
3.根据权利要求1或2所述的服务器无感知安全容器的内存热插拔控制方法,其特征在于:所述从所述可移动区域分配内存包括:
4.根据权利要求3所述的服务器无感知安全容器的内存热插拔控制方法,其特征在于:所述czone id字段由所述容器进程的子进程继承,所述子进程通过封装系统czone_fork()创建。
5.根据权利要求1所述的服务器无感知安全容器的内存热插拔控制方法,其特征在于:所述基于rund-v调用czone进行容器纵向扩展包括:
6.根据权利要...
【专利技术属性】
技术研发人员:陈全,李子俊,过敏意,武晨洋,全硕,吴杰,
申请(专利权)人:上海交通大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。