CN108762923A - 采用差分进化算法作为Docker Swarm调度策略的方法 - Google Patents
采用差分进化算法作为Docker Swarm调度策略的方法 Download PDFInfo
- Publication number
- CN108762923A CN108762923A CN201810508944.8A CN201810508944A CN108762923A CN 108762923 A CN108762923 A CN 108762923A CN 201810508944 A CN201810508944 A CN 201810508944A CN 108762923 A CN108762923 A CN 108762923A
- Authority
- CN
- China
- Prior art keywords
- node
- differential evolution
- evolution algorithm
- resource
- docker swarm
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供的是一种采用差分进化算法作为Docker Swarm调度策略的方法。首先获得各节点的资源,通过差分进化算法获得每个节点内存、CPU和网络吞吐率中的最优解;然后根据内存、CPU和网络吞吐率不同的权重进行计算,获得一个代表该节点资源的一个值,根据得到的这些值,对节点进行排序;最终选择排在第一的节点,然后在这个节点上分配容器。本发明选择差分进化算法作为Docker Swarm的容器调度算法。改变调整差分进化算法使其可以适用于Docker Swarm,并解决上述问题。最后通过对比实验验证了差分进化算法可以减少Docker Swarm在进行容器调度时各节点产生的资源碎片。
Description
技术领域
本发明涉及的是一种Docker Swarm的调度策略,特别涉及利用差分进化算法作为Docker Swarm的调度策略。
背景技术
Docker Swarm的三种调度策略Random、Spread和Binpack算法,三种算法比较简单,三者的不足是显而易见的。现总结的问题如下:
第一,Docker Swarm在进行容器分配时是根据各节点内存的大小,不能准确计算CPU处理能力。因为Docker对于内存是可以计算比较准确的,在CPU方面,Docker能做的只是部署容器在节点上运行,或者对CPU权值大小进行指定,这就导致了不能够按照各个节点的真正资源情况进行容器的准确分配。
第二,Docker Swarm会记录集群内每个节点资源情况,但是Docker Swarm统计的资源只是节点的总资源数,并不是实际可用的资源数,而且Docker Swarm也不会统计每个节点具体分配出去了多少资源,只是很粗略的估算一下资源。比如,一个节点系统显示的总内存为6G,但是可能系统已经分配出去或者自己使用了一些资源,但因为这些资源并不是Docker Swarm分配出去的,所以Docker Swarm仍然对主机资源标记为总的资源数。而且还存在被Docker Swarm分发出去的资源在没有被使用的情况下,这些资源也不会再被使用,可能给人感觉保证了容器的可用资源,但对Docker集群来说将有一大部分的资源被浪费了。所以,Docker Swarm的调度算法也会导致资源碎片化问题。
而差分进化算法(Differential Evolution,DE)是一种基于启发式搜索的随机并行直接搜索算法,种群中每一个个体都存在解向量。它可以对非线性不可微连续空间的函数进行最小化。目前,差分进化算法的应用和研究主要集中于连续、单目标、无约束的确定性优化问题。同时,差分进化算法在多目标、有约束、离散和噪声等不同环境下的研究也取得了一定成就。差分进化算法原理与遗传算法相似度很高,它们的过程都是:变异、交叉,还有选择。二者之间的主要区别在于:差分进化算法在变异操作时采用差分策略,即通过利用种群间的个体差分向量来扰动个体实现个体变异。
发明内容
本发明的目的在于提供一种能够解决原生Docker Swarm调度策略产生资源碎片化严重问题的采用差分进化算法作为Docker Swarm调度策略的方法。
本发明的目的是这样实现的:首先获得各节点的资源,通过差分进化算法获得每个节点内存、CPU和网络吞吐率中的最优解;然后根据内存、CPU和网络吞吐率不同的权重进行计算,获得一个代表该节点资源的一个值,根据得到的这些值,对节点进行排序;最终选择排在第一的节点,然后在这个节点上分配容器。
本发明的采用差分进化算法作为Docker Swarm调度策略的方法具体表述为:
1)确定控制参数:NP、F、CR;
2)在限定边界内的值进行选择,进行种群初始化,即CPU、内存和网络吞吐率;
3)初始种群评估,即计算初始种群中每个个体的适应度值;
4)确定是否达到终止条件或最大进化代数,如果“是”,作为最佳方案的输出,成为最佳个体,然后根据获取到的最优值,选取最优节点;否则,继续;
5)变异和交叉操作产生中间种群,并在变异时采用动态自适应算子;
6)选择原始种群和中间种群的个体,获得新一代个体;
7)进化次数g=g+1,转至4)。
根据差分进化算法存在鲁棒性强、参数受控少、原理简单,并且可以有效的解决原有调度算法产生的问题等特点,本发明采用差分进化算法作为Docker Swarm的容器调度策略。
Docker Swarm的原生容器调度算法存在没有充分考虑CPU的处理能力和会使集群中各节点产生较多资源碎片的问题,针对此问题,并考虑到差分进化算法在求解最优解方面的优势,故选择了差分进化算法作为Docker Swarm的容器调度算法。改变调整差分进化算法使其可以适用于Docker Swarm,并解决上述问题。最后通过对比实验验证了差分进化算法可以减少Docker Swarm在进行容器调度时各节点产生的资源碎片。
附图说明
图1是差分进化方法流程图。
图2是各节点容器分配结果图。
图3是各节点资源碎片情况结果图。
具体实施方式
下面举例对本发明做更详细的描述。
将差分进化算法应用Docker Swarm容器调度策略中,需要考虑的因素就是各节点的内存、CPU和网络吞吐率。方法思想为:首先,获得各节点的资源,通过差分进化算法获得每个节点内存、CPU和网络吞吐率中的最优解,然后根据三者不同的权重进行计算,获得一个代表该节点资源的一个值,根据得到的这些值,对节点进行排序,最终选择排在第一的节点,然后在这个节点上分配容器。本发明按照差分进化算法的步骤来介绍并给出解释:
1)初始化种群
其中,Xi(0)是第i个个体,j表示第j维。在这里X1表示内存、X2表示CPU、X3表示网络吞吐量。在这个公式中可以看到本文将内存、CPU还有网络吞吐率都作为种群,因此体现了不仅充分的考虑到CPU,而且也考虑到了每个节点的网络吞吐率,这就充分解决了原有Docker Swarm调度算法只考虑内存,计算CPU不准确的问题。
其中,和分别为第j维的下界和上界,在我们这里就是j台节点这三类资源的上下界,rand[0,1]表示区间[0,1]上的随机数。
2)变异
根据随机算法选用两个不同父代个体,根据缩放因子将缩放后的个体与变异个体进行向量融合。
Vi(g+1)=Xr1(g)+F(Xr2(g)-Xr3(g)) (3)
其中,r1,r2,r3是三个随机数,区间为[1,3],F称为缩放因子,为一个确定的常数,g表示第几代。
差分进化算法会出现早熟,陷入局部最优解的问题,为了避免出现早熟的现象,根据DE算法搜索推进状况,增加了动态自适应算子,动态自适应算子计算如下:
F=F0·2λ (5)
其中,Gm表示进化最大代数;G表示进化总代数;F0为变异因子。
初始时,DE算法动态自适应变异因子为F0~2F0,具有较大值,初始阶段保持每个个体的多样性,尽量避免早熟。随着DE算法搜索进展,变异因子的降低,到后期种群变异率接近F0,存储最优信息,避免最优解被覆盖,从而增加算法搜索全局最优解的几率。
3)交叉
ui,G+1=(u1i,G+1,u2i,G+1,…,uDi,G+1) (6)
4)选取最优节点
Nodebest,i=β1·X1,i+β2·X2.i+β3·X3,i (8)
其中,β1,β2,β3为比例系数β1:β2:β3=4:4:2,Nodebest,i表示获得节点中的最优解,然后根据这些进行排序,选择排序为第一的节点,在该节点上创建容器。
根据上面的证明可知,本发明采用差分进化算法作为Docker Swarm的调度算法,并不是简单的套用,而是有着更深层次的理论意义,很好的解决了原生调度算法考虑CPU不充分的问和产生严重的资源碎片化的问题。
Spread算法会统计各个节点运行的容器数,然后选择拥有容器数最少的那台节点上创建容器。这样可以保证容器会平均的分布在集群中的各个节点上,即使某个节点出现故障也只会损失少部分的容器。Binpack算法会选择拥有容器最多的那台机器运行新的容器,即Binpack算法把还未使用的节点留给需要更大空间的容器,尽最大努力的让容器在一个节点上运行。所以,通过图2节点容器分配个数可以看到,实验数据验证了Spread和Binpack算法的特性,也可看到本论文提出的差分进化算法分配容器的情况,可以看出该算法分配容器的特点:差分进化算法则尽可能保持每个节点的负载量不过大,不使用到极限,换句话说就是尽最大努力保持容器运行最佳。
在各个节点资源情况相同的情况下去比较各个算法使各个节点产生的资源碎片情况。体现各算法在使节点产生资源碎片化的不同,本发明定义资源碎片为:
S=[|M-C|/(M+C)]*100% (9)
其中,M为节点使用的内存,C为节点使用的CPU。
通过图3可以看到,差分进化算法在分配容器时各节点上产生的资源碎片相比于其它两种算法更少,所以差分进化算法在解决资源碎片化问题上有很好的表现。
Claims (2)
1.一种采用差分进化算法作为Docker Swarm调度策略的方法,其特征是:首先获得各节点的资源,通过差分进化算法获得每个节点内存、CPU和网络吞吐率中的最优解;然后根据内存、CPU和网络吞吐率不同的权重进行计算,获得一个代表该节点资源的一个值,根据得到的这些值,对节点进行排序;最终选择排在第一的节点,然后在这个节点上分配容器。
2.根据权利要求1所述的采用差分进化算法作为Docker Swarm调度策略的方法,其特征是:
1)确定控制参数:NP、F、CR;
2)在限定边界内的值进行选择,进行种群初始化,即CPU、内存和网络吞吐率;
3)初始种群评估,即计算初始种群中每个个体的适应度值;
4)确定是否达到终止条件或最大进化代数,如果“是”,作为最佳方案的输出,成为最佳个体,然后根据获取到的最优值,选取最优节点;否则,继续;
5)变异和交叉操作产生中间种群,并在变异时采用动态自适应算子;
6)选择原始种群和中间种群的个体,获得新一代个体;
7)进化次数g=g+1,转至4)。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2018103185934 | 2018-04-11 | ||
CN201810318593 | 2018-04-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108762923A true CN108762923A (zh) | 2018-11-06 |
Family
ID=64005564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810508944.8A Pending CN108762923A (zh) | 2018-04-11 | 2018-05-24 | 采用差分进化算法作为Docker Swarm调度策略的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108762923A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109788046A (zh) * | 2018-12-29 | 2019-05-21 | 河海大学 | 一种基于改进蜂群算法的多策略边缘计算资源调度方法 |
CN109995871A (zh) * | 2019-04-09 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种Pod调度方法及装置 |
CN111124619A (zh) * | 2019-12-25 | 2020-05-08 | 浙江大学 | 一种面向二次调度的容器调度方法 |
CN111506394A (zh) * | 2020-04-15 | 2020-08-07 | 广东工业大学 | 一种Docker Swarm容器调度方法及调度系统 |
CN111666128A (zh) * | 2020-05-25 | 2020-09-15 | 北京思特奇信息技术股份有限公司 | 一种容器集群组建系统及方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107045455A (zh) * | 2017-06-19 | 2017-08-15 | 华中科技大学 | 一种基于负载预测的Docker Swarm集群资源调度优化方法 |
-
2018
- 2018-05-24 CN CN201810508944.8A patent/CN108762923A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107045455A (zh) * | 2017-06-19 | 2017-08-15 | 华中科技大学 | 一种基于负载预测的Docker Swarm集群资源调度优化方法 |
Non-Patent Citations (2)
Title |
---|
林伟伟等: "基于遗传算法的Docker 集群调度策略", 《华南理工大学学报(自然科学版)》 * |
金涛: "多配送中心物流车辆调度的改进差分进化算法", 《计算机工程与应用》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109788046A (zh) * | 2018-12-29 | 2019-05-21 | 河海大学 | 一种基于改进蜂群算法的多策略边缘计算资源调度方法 |
CN109788046B (zh) * | 2018-12-29 | 2020-06-16 | 河海大学 | 一种基于改进蜂群算法的多策略边缘计算资源调度方法 |
CN109995871A (zh) * | 2019-04-09 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种Pod调度方法及装置 |
CN111124619A (zh) * | 2019-12-25 | 2020-05-08 | 浙江大学 | 一种面向二次调度的容器调度方法 |
CN111506394A (zh) * | 2020-04-15 | 2020-08-07 | 广东工业大学 | 一种Docker Swarm容器调度方法及调度系统 |
CN111506394B (zh) * | 2020-04-15 | 2023-05-05 | 广东工业大学 | 一种Docker Swarm容器调度方法及调度系统 |
CN111666128A (zh) * | 2020-05-25 | 2020-09-15 | 北京思特奇信息技术股份有限公司 | 一种容器集群组建系统及方法 |
CN111666128B (zh) * | 2020-05-25 | 2023-07-04 | 北京思特奇信息技术股份有限公司 | 一种容器集群组建系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108762923A (zh) | 采用差分进化算法作为Docker Swarm调度策略的方法 | |
Rakshit et al. | Noisy evolutionary optimization algorithms–a comprehensive survey | |
CN111065103B (zh) | 一种多目标优化的无线传感器网络节点部署方法 | |
CN104618269B (zh) | 基于能耗要求的云系统利用率最大化资源分配方法 | |
Hughes | Evolutionary many-objective optimisation: many once or one many? | |
CN105704255B (zh) | 一种基于遗传算法的服务器负载均衡方法 | |
Basu | Fuel constrained economic emission dispatch using nondominated sorting genetic algorithm-II | |
Ursem | Diversity-guided evolutionary algorithms | |
Sharma et al. | Reserve constrained multi-area economic dispatch employing differential evolution with time-varying mutation | |
CN108984301A (zh) | 自适应云资源调配方法和装置 | |
CN106484512B (zh) | 计算单元的调度方法 | |
CN111325356A (zh) | 一种基于演化计算的神经网络搜索分布式训练系统及训练方法 | |
CN110138612A (zh) | 一种基于QoS模型自校正的云软件服务资源分配方法 | |
US7730086B1 (en) | Data set request allocations to computers | |
CN106446959A (zh) | 一种云计算资源动态匹配方法及装置 | |
CN113938488A (zh) | 一种基于动静态加权轮询的负载均衡方法 | |
CN111178440B (zh) | 一种基于高效减小agv总运输成本的路径优化方法 | |
CN109600178A (zh) | 一种边缘计算中能耗与时延和最小化的优化方法 | |
CN110795208A (zh) | 基于改进粒子群的移动云计算自适应虚拟机调度方法 | |
CN109598278A (zh) | 聚类处理方法、装置、电子设备及计算机可读存储介质 | |
CN108564592A (zh) | 基于动态多种群集成差分进化算法的图像分割方法 | |
CN104899100A (zh) | 一种用于云系统的资源调度方法 | |
CN108830408A (zh) | 一种面向任务资源匹配的装备保障任务多目标规划方法 | |
CN110225096A (zh) | 基于遗传算法的服务器负载均衡方法 | |
CN104283963A (zh) | 一种分布合作式的cdn负载均衡方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181106 |
|
RJ01 | Rejection of invention patent application after publication |