一种云计算方法技术

技术编号:16152649 阅读:67 留言:0更新日期:2017-09-06 18:10
本发明专利技术涉及云计算技术领域,提出了一种云计算方法,包括步骤:S1.每个Linux容器创建一个CGroup层级,每个Erlang虚拟机进程对应一个所述CGroup层级,通过CGroup提供的子系统对CGroup层级下的每个CGroup子节点分配物理资源权重Wn;S2.将CGroup层级下的每个CGroup子节点与对应的Erlang虚拟机的进程调度者一对一映射,使得进程调度者对进程任务的调度受到对应的CGroup子节点的物理资源分配的限制;S3.修改Erlang虚拟机的任务迁移机制,使进程调度者中空闲和低负载部分得到利用,使满载部分不分配进程任务。通过本发明专利技术提出的方法,可以实现云计算平台计算能力的高效性。

【技术实现步骤摘要】
一种云计算方法
本专利技术涉及云计算
,尤其涉及一种基于Erlang虚拟机和Linux容器技术的云计算方法。
技术介绍
CGroup技术是ControlGroups的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(processgroups)所使用的物理资源(如cpu内存I/O等等)的机制。CGroup技术不是全新创造的,它将进程管理从cpuset中剥离出来,CGroup也是Linux容器(LXC)为实现虚拟化所使用的资源管理手段。CGroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。这些具体的资源管理功能称为CGroup子系统或控制器。CGroup子系统有控制内存的Memory控制器、控制进程调度的CPU控制器等。运行中的内核可以使用的CGroup子系统由代码.../proc/cgroup来确认。任务(task):CGroup的术语中,任务就表示系统的一个进程。控制组(cgroup):CGroup中的资源控制都以控制组为单位实现。控制组表示按某种资源控制标准划分而成的任务组,包含一个或多个子系统。一个任务可以加入某个控制组,也可以从某个控制组迁移到另外一个控制组。子系统(subsystem):CGroup中的子系统就是一个资源调度控制器(ResourceController)。比如CPU子系统可以控制CPU时间分配,内存子系统可以限制cgroup内存使用量。层级(hierarchy):层级由一系列控制组以一个树状结构排列而成,每个层级通过绑定对应的子系统进行资源调度。层级中的控制组节点可以包含零或多个子节点,子节点继承父节点的属性。整个系统可以有多个层级。Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang是运行于虚拟机的解释性语言,但是现在也包含有乌普萨拉大学高性能Erlang计划(HiPE)开发的本地代码编译器,自R11B-4版本开始,Erlang也开始支持脚本式解释器。在编程范型上,Erlang属于多重范型编程语言,涵盖函数式、并发式及分布式。Erlang是一个结构化,动态类型编程语言,内建并行计算支持。最初是由爱立信专门为通信应用设计的,比如控制交换机或者变换协议等,因此非常适合于构建分布式,实时软并行计算系统。使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。进程间上下文切换对于Erlang来说仅仅只是一两个环节,比起C程序的线程切换要高效得多。使用Erlang来编写分布式应用要简单的多,因为它的分布式机制是透明的:对于程序来说并不知道自己是在分布式运行。Erlang运行时环境是一个虚拟机,代码一经编译,同样可以随处运行。它在运行时系统甚至允许代码在不被中断的情况下更新。另外如果需要更高效的话,字节代码也可以编译成本地代码运行。因此,Erlang虚拟机本身就具有Erlang编程语言的优点。云计算通过分散计算资源的集中部署,能有效降低IT成本并提升IT服务质量,已得到广泛的认可和应用。目前大多数IaaS层云计算技术(包括Openstack、Xen、Vmware)都主要基于虚拟机技术,在追求灵活性的过程中损失了一部分计算性能。而且现有技术中的云计算平台对计算机物理资源的分配方法相对复杂。所以,如何构建一个充分利用资源,使计算能力高效的云计算平台是一个亟待解决的问题。
技术实现思路
为解决上述技术问题,本专利技术提出了一种基于Erlang虚拟机和Linux容器技术的云计算方法,以实现云计算平台计算能力的高效性。为此,本专利技术采用如下技术方案:一方面,本专利技术提供了一种云计算方法,所述方法包括下述步骤:S1:每个Linux容器系统创建一个CGroup层级,每个Erlang虚拟机进程对应一个所述CGroup层级,通过CGroup技术提供的子系统对所述CGroup层级下的每个CGroup子节点分配物理资源权重Wn;S2:将所述CGroup层级下的每个所述CGroup子节点与同一所述CGroup层级对应的Erlang虚拟机的进程调度者一对一映射,使得所述进程调度者对进程任务的调度受到对应的CGroup子节点的物理资源分配的限制;S3:修改所述Erlang虚拟机的任务迁移机制,使所述进程调度者中的空闲和低负载部分得到利用,使所述进程调度者中的满载部分不分配进程任务。进一步的,所述步骤S3包括下述子步骤:S31:所述容器系统以一定频率测量所述进程调度者可运行的最大进程数M,将所述最大进程数M乘以每个进程调度者对应的CGroup子节点的物理资源分配权重Wn,得到所述进程调度者应承担的进程任务数Tn;S32:根据所得进程任务数Tn和所述进程调度者的实时运行进程数,检查所述进程调度者的状态;当所述进程调度者所有任务运行结束时或进程调度者的实时运行进程数小于某个阈值Tx(Tx<Tn)时,所述进程调度者经由如下方式中的至少一种迁入路径,从其它进程调度者的运行队列中迁入一个或多个进程任务,包括从第一相邻的进程调度者迁入,随机从一个运行队列不为空的进程调度者迁入,随机从实时运行进程数大于某个阈值Ty(Tx<Ty<Tn)的进程调度者迁入,步骤结束;否则执行步骤S33;S33:当所述进程调度者被分配新进程时,检查被分配的所述进程调度者的实时运行进程数是否已经大于或等于它所对应承担的最大任务数Tn,如果不大于且不等于则迁入所述新进程;否则经由如下方式中的至少一种迁出路径将所述新进程迁出到其他进程调度者,包括向第二相邻的进程调度者迁出,随机向除自身之外的其它进程调度者迁出。进一步的,所述步骤S33可重复执行,当所述第二相邻的进程调度者或随机向除自身之外的其它进程调度者的实时运行进程数仍然已经大于或等于它所对应承担的最大任务数Tn,则继续经由如下方式中的至少一种迁出路径将所述新进程迁出到其他进程调度者,包括向第二相邻的进程调度者迁出,随机向除自身之外的其它进程调度者迁出,直到找到一个实时运行进程数小于它所对应承担的最大任务数Tn的进程调度者。进一步的,所述方法还包括下述子步骤:S34:检查所述进程调度者的实时运行进程数是否大于某个阈值Ty,若大于则经由如下方式中的至少一种迁出路径将其运行队列中的一个或多个进程任务迁出到其他进程调度者,包括向第二相邻的进程调度者迁出,随机向除自身之外的其它进程调度者迁出;进一步的,所述步骤S31的所述测量频率为每秒钟4次。进一步的,所述步骤S2是通过开启与所述CGroup层级下的所述CGroup子节点个数相同的进程调度者数量的方式,以实现所述CGroup子节点与所述进程调度者一对一映射。进一步的,所述步骤S32中的所述第一相邻为进程调度者序列中的前一个。进一步的,所述步骤S33中的所述第二相邻为进程调度者序列中的后一个。另一方面,本专利技术提供了一种云计算系统,其特征在于,包括存储器,存放有程序;处理器,运行所述程序,以执行如上述所述的方法。再一方面,本专利技术提供了一种包含计算机程序的计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述本文档来自技高网
...
一种云计算方法

【技术保护点】
一种云计算方法,其特征在于,所述方法包括下述步骤:S1:每个Linux容器系统创建一个CGroup层级,每个Erlang虚拟机进程对应一个所述CGroup层级,通过CGroup技术提供的子系统对所述CGroup层级下的每个CGroup子节点分配物理资源权重Wn;S2:将所述CGroup层级下的每个所述CGroup子节点与同一所述CGroup层级对应的Erlang虚拟机的进程调度者一对一映射,使得所述进程调度者对进程任务的调度受到对应的CGroup子节点的物理资源分配的限制;S3:修改所述Erlang虚拟机的任务迁移机制,使所述进程调度者中的空闲和低负载部分得到利用,使所述进程调度者中的满载部分不分配进程任务。

【技术特征摘要】
1.一种云计算方法,其特征在于,所述方法包括下述步骤:S1:每个Linux容器系统创建一个CGroup层级,每个Erlang虚拟机进程对应一个所述CGroup层级,通过CGroup技术提供的子系统对所述CGroup层级下的每个CGroup子节点分配物理资源权重Wn;S2:将所述CGroup层级下的每个所述CGroup子节点与同一所述CGroup层级对应的Erlang虚拟机的进程调度者一对一映射,使得所述进程调度者对进程任务的调度受到对应的CGroup子节点的物理资源分配的限制;S3:修改所述Erlang虚拟机的任务迁移机制,使所述进程调度者中的空闲和低负载部分得到利用,使所述进程调度者中的满载部分不分配进程任务。2.如权利要求1所述的方法,其特征在于,所述步骤S3包括下述子步骤:S31:所述容器系统以一定频率测量所述进程调度者可运行的最大进程数M,将所述最大进程数M乘以每个进程调度者对应的CGroup子节点的物理资源分配权重Wn,得到所述进程调度者应承担的进程任务数Tn;S32:根据所得进程任务数Tn和所述进程调度者的实时运行进程数,检查所述进程调度者的状态;当所述进程调度者所有任务运行结束时或进程调度者的实时运行进程数小于某个阈值Tx(Tx<Tn)时,所述进程调度者经由如下方式中的至少一种迁入路径,从其它进程调度者的运行队列中迁入一个或多个进程任务,包括从第一相邻的进程调度者迁入,随机从一个运行队列不为空的进程调度者迁入,随机从实时运行进程数大于某个阈值Ty(Tx<Ty<Tn)的进程调度者迁入,步骤结束;否则执行步骤S33;S33:当所述进程调度者被分配新进程时,检查被分配的所述进程调度者的实时运行进程数是否已经大于或等于它所对应承担的最大任务数Tn,如果不大于且不等于则迁入所述新进程;否则经...

【专利技术属性】
技术研发人员:犹杰
申请(专利权)人:深圳大数点科技有限公司
类型:发明
国别省市:广东,44

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

1