1. 引言
云计算系统中的虚拟化技术是一项关键技术,通过多个虚拟机将资源分配给多个用户 [1] 。数据中心包含大量物理机器,每台物理机器上托管着多个虚拟机。为了满足用户的请求,需要对每个请求进行建模和检查,以确定分配和执行任务所需的虚拟机资源。将虚拟机放置在物理机器上被称为虚拟机放置(VMP),云服务提供商致力于优化VMP方法,以最大化每台物理机器上托管的虚拟机数量,从而增加数据中心托管虚拟机的数量 [2] 。VMP是一个复杂的问题,考虑到用户请求的可扩展性、物理机器的异构性和多种资源维度。对于特定的数据中心,VMP方法需要考虑具体要求。有效性可以通过诸如功耗、成本、资源利用率和负载均衡等指标来衡量。为了解决VMP问题,研究了许多元启发式算法,例如粒子群优化、遗传算法、蚁群优化算法等 [3] 。虽然元启发式算法比精确策略更先进,但它们计算成本较高。现有的研究主要关注降低功耗、最大化资源利用率、降低成本和负载均衡等目标,但较少关注虚拟机放置的时间消耗 [4] 。放置时间指的是将虚拟机放置在云服务器上所需的时间,对云服务提供商和用户都很重要。增加放置时间可能违反服务级别协议,并导致用户不满意。因此,在解决VMP问题时,有必要考虑放置时间,以避免由放置时间引起的问题。
本文提出了一个新模型来解决VMP问题,通过生成三个目标的最优解。这三个目标是:最小化将每个虚拟机放置在适当的物理机器上所需的总时间,减少数据中心物理机的能量消耗,以及最小化资源浪费。提出的多目标适应度函数包含三个参数,用于表示这三个目标。根据目标的重要性,这些参数被等权重地使用来得到合适的适应度函数。
2. 相关工作
一些研究学者已经探讨了虚拟机适当放置的重要性 [5] - [11] 。如何解决虚拟机布局问题一直是一个活跃的研究课题,参考文献 [12] 、 [13] 和 [14] 描述了虚拟机布局的背景和最新布局策略。虚拟机放置问题(VMP)在文献中得到了广泛讨论 [15] 。我们根据问题的策略、目标和上下文来寻找解决方案。为了确定在物理机上虚拟机布局的最优解,现有的工作可以分为:精确算法,如线性规划、动态规划、分支定界和回溯;以及近似算法(启发式算法、元启发式算法),如贪婪算法、局部搜索、遗传算法、禁忌搜索、模拟退火和随机演化。本文主要研究元启发式方法 [16] 。蚁群优化(ACO)元启发式算法被嵌入到能效启发式算法中,它减少了活跃物理机的数量,为数据中心节约能源。虽然该算法性能较好,但未考虑资源的浪费。现有研究中使用的适应度函数考虑了减少功耗、最大化资源利用、成本最小化和负载均衡等目标 [17] ,但未考虑放置时间,即虚拟机放置在云服务器上所需的时间,这对云服务提供商和潜在用户来说是一个重要指标。增加放置时间可能违反服务级别协议。PSO是一种群体智能优化算法 [18] ,因其简单易实现和出色性能,成为许多研究者关注的研究焦点。虽然PSO是一种有效的算法,但在某些特定问题上可能存在早熟收敛等局限性。目前,为了提高粒子群优化算法的优化能力,存在许多不同的改进策略。这些改进策略可分为四类:参数调整策略、拓扑策略、学习策略和混合算法策略 [19] 。针对PSO算法独立实现的不足,对PSO进行了优化,形成了分层粒子群优化算法,同时在此基础上提出了SSA-HPSO算法。SSA-HPSO算法将PSO算法的全局搜索能力与SSA算法个体之间的协同搜索能力相结合,以提高优化算法的性能。SSA-HPSO算法是一种麻雀搜索算法优化的分层粒子群算法,这意味着它具有适应性,可以根据问题特性和优化过程的进展调整算法参数,以更好地适应不同类型的优化问题。
3. 虚拟机放置的约束优化目标模型
本节展示了VMP前提和应用架构。此外,还介绍了问题的具体表述。进一步地提出了拟议的适应度函数,该函数在优化算法实现中起着核心作用。该适应度函数是一个多目标函数,旨在获得云数据中心中物理机(PMs)的放置时间、能量消耗和资源浪费的最优值,如图1所示。

Figure 1. Architecture of the VMP model
图1. VMP模型的架构
3.1. 问题描述
VMP模型的架构如图1所示,由四个关键组件构成:云数据中心、云信息服务、虚拟机调度器、以及云用户设备。云信息服务负责注册云数据中心内每个物理机(PM)的状态,并持续向Cloud Broker发送那些具备足够资源来托管所需虚拟机(VMs)的PM的每一次状态更新。这些状态包括每个数据中心中PM所提供的服务速率和队列中预期等待时间。Cloud Broker用来接收所有用户的虚拟机请求,并将收集的关于可用PM和请求VM的信息转换成相应的向量形式,提交给VMP调度器。VMP调度器利用这些向量,并依靠提出的适应度函数和优化算法,对所需的虚拟机进行放置决策。最终,根据调度器的决策,所请求的虚拟机被放置在相应的物理机上。
将VMP视为数学问题的模型,其中数据中心的物理机被表示为
,总数为N个,每个
可由CPU和内存进行定义。
和
分别表示物理机的CPU和内存资源。虚拟机的请求被表示为
,总数为
个,
和
分别表示虚拟机的CPU和内存需求。通过构建
的矩阵
来建立
个虚拟机请求和
个物理机之间的映射关系。每个虚拟机的位置可以用二进制变量
表示,当
= 1表示虚拟机
被放置在物理机
上,否则
置为0,
,
。
表示物理机的向量,每个物理机至少托管一个虚拟机,用决策变量
表示,其中
,每个决策变量如公式(1)所示。
(1)
元素
和
被设置为一元决策变量,当满足以下两个约束条件(2)(3)时该变量等于1,否则为0。
(2)
(3)
物理机对所有托管虚拟机的标准化CPU利用率如公式(4)所示;物理机对所有托管虚拟机的标准化内存利用率如公式(5)所示。
(4)
(5)
3.2. 建模放置时间
虚拟机的放置时间记为
,表示从虚拟机被请求的时刻开始计算,到虚拟机被放置到指定的物理机上所经过的时间。虚拟机放置时间由搜索时间
和排队时间
两部分组成。
搜索时间公式(6)如下所示:
(6)
排队时间公式(7)如下所示:
(7)
(8)
其中
表示空队列的概率,
表示到达率,1/
表示期望。所有的虚拟机放置的总时间如公式(9)所示。
(9)
3.3. 建模能量消耗
服务器的功耗可以通过功耗与CPU利用率之间的线性关系来准确描述。当物理机处于空闲状态时,会关闭它们以节省能源消耗。因此,它们的空闲功耗不计入总能耗。最后,我们将第
台服务器的功耗定义为CPU利用率的函数,如公式(10)所示。其中,
代表第
台主机服务器在时间
的CPU利用率。
和
分别表示最大利用率时和空闲时的功耗。
(10)
3.4. 资源浪费
为最大化CPU和内存的利用率,物理机的资源浪费如下公式(11)所示。
(11)
其中
是一个非常小的正实数0.0001。
表示第
台服务器的资源浪费,
和
表示标准化的CPU和内存资源使用情况。
和
表示标准化的剩余CPU和内存资源。
云数据中心所有的物理机总资源浪费如下公式(12)所示。
(12)
3.5. 资源浪费
可以将放置问题形式化为最小化放置时间,最小化能量消耗,最小化资源浪费,通过每个目标线性加权的形式,可以得出如下公式(13)所示。
(13)
其中w1,w2,w3时每个目标函数的目标权重,在这种情况下,每个权重可以计算为
= 1/n,其中n是目标函数的数量。因此,每个目标函数的等权值为
= 1/3。
4. SSA-HPSO算法
4.1. 粒子编码
在应用SSA-HPSO算法解决虚拟机部署问题之前,需对粒子进行编码,将问题的解空间映射到粒子的位置上。在PSO算法中,合理的编码不仅能获得更优的搜索结果,还有助于减小搜索空间。虚拟机部署常见的编码方式包括二进制编码和多值编码。对于将m个虚拟机部署在n台物理机上的问题,每个粒子表示一组虚拟机请求在一组物理机上放置的候选解决方案。位置矩阵M定义在解空间EQ中,用于触发粒子的运动。这样,每个粒子代表了放置问题的m × n个可能解之一。举例而言,考虑两个不同的粒子,它们都是从初始种群的解空间M中生成的。每个粒子用二维方案表示,其中使用一对多的映射来描述粒子内每个物理机和其托管的虚拟机之间的关系。
4.2. 粒子群
4.2.1. 传统粒子群
PSO在D维空间中,通过大小为N的粒子群模拟了极值搜索过程。可变粒子的传输动态模型如下所示:
(14)
(15)
在上述公式中,
表示的是第
个粒子在D维空间中时刻t的位置。
表示的是第
个粒子在时刻t的速度。
表示粒子在时间段t内的最佳位置。
,
,
分别表示的惯性权重,自主学习因子和社会学习因子。
和
为两个随机数。每个粒子都具有良好的能量以在空间中找到最优解,粒子的运动轨迹如图2所示。
4.2.2. 分层粒子群
传统粒子群优化算法存在着易陷入局部最优、搜索能力受限等缺点。而引入分层粒子群算法可以在一定程度上克服这些问题,它能够通过将粒子划分成不同的层次,实现更好的全局搜索和局部搜索的平衡,提高算法的收敛性和搜索效率 [20] 。这种分层设计使得粒子能够更有针对性地搜索解空间,从而更有可能找到更优的解。分层粒子群如图3所示。
(16)
(17)
(18)
(19)
其中公式(16)表示该层所有粒子的平均值,公式(17)表示该层高能粒子的平均值,公式(18)该层的高能粒子表示,公式(19)表示该层的低能粒子。
4.3. 麻雀搜索算法
麻雀搜索算法是Xue和Shen于2020年提出 [21] ,主要模拟麻雀的觅食过程,包括发现者–追随者模型和检测预警机制。在一个麻雀群中,一些个体作为有能力定位食物的发现者,而另一些个体作为追随者,跟踪发现者到食物来源。同时,该算法通过选择特定比例的个体监测周围环境,结合了检测和预警机制。一旦发现危险,这些个体就会立即放弃寻找食物,把安全放在首位。通过对麻雀觅食过程的模拟,提高了搜索效率和算法的生存能力,保证了优化过程中对安全因素的考虑。
在SSA中,种群中最优秀的个体在搜索过程中优先获得食物。作为探索者,与追随者相比,他们有更大的搜索空间。在每次迭代中,探索者的位置更新方法如公式(20)所示。
(20)
其中
表示麻雀个体的位置。
是当前迭代次数。
是最大迭代限制。α是一个在[0, 1]范围内的随机数。R2 (R2∈[0, 1])和ST (ST∈[0.5, 1])分别为警示值和安全值。Q是服从正态分布的随机数。L是一个1 × d矩阵,其中每个元素都被设置为1。
当R2 < ST,它表示附近没有捕食者,允许探索者进行全局搜索。如果R2 ≥ ST,则表明部分麻雀探测到捕食者的存在,触发了所有麻雀之间的协调行动。在觅食过程中,一些追随者会密切关注探险者。一旦探险家发现了更好的食物,他们就会立即离开现在的位置去争夺食物。如果他们在竞争中获胜,他们可以立即获得食物;否则,必须继续按照公式(21)进行。
(21)
在这个等式中,
表示最佳资源管理器的位置,
表示当前全局最差位置,n表示总体大小。A是一个1 × d矩阵,其中每个元素取1或−1的随机值。这里,A+的定义如公式(22)所示。
(22)
当
> n/2,表示适应度较低的第
个追随者状态较差,需要飞到别处觅食。在算法中,原始文本假设种群中有10%到20%的个体(在文本中设置为20%)意识到危险,并且它们在种群中的初始位置是随机生成的,如公式(23)所示。
(23)
式中,
表示当前全局最佳位置,β为步长控制参数,其服从均值为0,方差为1的随机分布;K为[−1, 1]范围内的随机数;F表示适应度值,
和
分别表示当前最佳和最差适应度值;ε是一个常数,用来避免被0整除。
总而言之,当
>
,表示麻雀处于群体边缘,当
=
时,表示处于群体中间的麻雀意识到了危险,需要靠近其他麻雀以避免被捕食。其中,K表示麻雀的运动方向,作为步长控制参数。
4.4. SSA-HPSO算法步骤
分层粒子群算法在提升全局与局部搜索平衡方面取得了一定进展,但对于高维复杂问题,其搜索效率仍受限。将麻雀搜索算法融入分层粒子群算法中,可为优化过程注入新的活力。麻雀搜索算法的个体之间具有协同搜索的能力,这有助于多个粒子在搜索空间中相互引导和协作,从而更容易跳出局部最优解,扩大搜索范围,提高全局搜索性能。融合麻雀搜索算法于分层粒子群算法中,不仅弥补了其不足,更提升了搜索效率与解的质量。这一融合方法为解决高维复杂问题提供了一种新的、高效的优化方案。流程图如图4所示。
5. 实验设计与结果分析
本文进行了两种仿真实验,分别对比了SSA-HPSO算法和PSO、WOA、GWO算法在搜索虚拟机部署方案时的放置时间、能耗、资源浪费。同时,比较了SSA-HPSO算法、PSO算法、WOA算法和GWO算法在处理虚拟机部署时总适应函数度值。在这两种仿真实验中,SSA-HPSO算法的参数如表1所示。

Table 1. Parameter setting of the proposed algorithm
表1. 所提算法的参数设置
图5显示了三种算法在实验迭代过程中的适应度函数值。研究结果表明,SSA-HPSO算法在适应度值下降速度方面胜过其他算法。此外,SSA-HPSO算法在较少的迭代次数下达到了最低的适应度值。
在图6中,展示了三种算法的平均放置时间。随着每种算法的虚拟机请求数量的增加,平均放置时间也随之增加。然而,GWO算法生成的平均放置时间最高,而SSA-HPSO算法生成的平均放置时间最低。因此,SSA-HPSO算法有效地缩短了放置时间。
图7中呈现了研究结果。可以观察到,随着虚拟机请求数量的增加,SSA-HPSO算法相较于GWO算法、PSO算法和WOA算法,在资源利用上浪费更少。这些结果源自SSA-HPSO算法的决策过程,它充分考虑了可用的剩余资源,并以平衡的方式利用这些资源,从而实现了最小的资源浪费。
三种提出的算法的所有活动服务器的总耗电量显示在图8中。对于所有算法,随着VM请求数量的增加,功耗也在增加。然而,在VM请求数量方面,SSA-HPSO算法的能耗始终低于其他算法。当使用GWO算法进行放置时,产生的功耗最高。
6. 结束语
本文提出了一种针对云计算环境中高效多目标虚拟机放置的优化策略。将麻雀搜索算法(SSA)个体之间的协同搜索能力和分层粒子群(HPSO)的全局搜索能力相结合,形成了SSA-HPSO算法。该算法综合利用了SSA的特性和HPSO的搜索能力,使得其在多目标虚拟机放置方面展现出更有效的性能。通过最佳的适应度函数来确定最佳的虚拟机放置解决方案,函数以三个标准值作为目标的结合,分别是虚拟机请求的总放置时间,在云数据中心的资源浪费和能耗。根据提出的适应度函数分别对SSA-HPSO、GWO、PSO、WOA算法进行评估。通过仿真的实验结果表明,相较于其他算法,SSA-HPSO算法效率更高,表现更为有效。在未来的研究中,SSA-HPSO算法可以扩展应用到其他虚拟机放置目标,例如资源利用率最大化、负载均衡、服务级别协议(SLA)、成本最小化等等。此外,所提出的算法也可结合深度学习技术用于服务云计算环境中的优化问题,进一步提升其性能和适应性。