浙江大学学报(工学版), 2026, 60(8): 1697-1708 doi: 10.3785/j.issn.1008-973X.2026.08.009

计算机技术

面向移动边缘计算的可靠性增强任务部署方法

赵庶旭,, 朱祺, 王小龙

兰州交通大学 电子与信息工程学院,甘肃 兰州 730070

Reliability-enhanced task deployment method in mobile edge computing environments

ZHAO Shuxu,, ZHU Qi, WANG Xiaolong

School of Electronic and Information Engineering, Lanzhou Jiaotong University, Lanzhou 730070, China

收稿日期: 2025-06-18  

基金资助: 甘肃省重点研发计划基金资助项目(20YF8GA123).

Received: 2025-06-18  

Fund supported: 甘肃省重点研发计划基金资助项目(20YF8GA123).

作者简介 About authors

赵庶旭(1976—),男,教授,博士,从事智能交通、边缘计算研究.orcid.org/0000-0001-8521-5833.E-mail:zhaosx@mail.lzjtu.cn , E-mail:zhaosx@mail.lzjtu.cn

摘要

边缘计算环境中存在如边缘服务器和虚拟机故障的风险因素,导致系统可靠性与服务质量降低,为此基于故障感知与可靠性均衡原理,提出时延-可靠性协同优化的任务部署策略. 建立可靠性增强移动边缘计算(MEC)系统模型以及基于服务器负载感知的故障率变化模型. 在减少时延与提高系统可靠性水平之间权衡,找到合适的计算节点部署任务,在能耗约束的条件下实现低时延、高可靠性的任务部署方案. 针对服务器故障率变化的情况,提出可靠性均衡的概念,通过限制边缘服务器的最大资源使用率来保证系统的可靠性,使用可靠性均衡评价指标(DRI)来衡量算法的性能. 仿真实验结果表明,与其他相关算法相比,2种所提算法在系统可靠性上分别平均提升了0.57%和1.09%,在时延上分别平均减少了30.06%和16.86%.

关键词: 移动边缘计算(MEC) ; 可靠性增强 ; 可靠性均衡 ; 时延 ; 任务卸载

Abstract

In the edge computing environment, risk factors such as edge server and virtual machine failures could lead to the degradation of system reliability and quality of service. Based on the principle of fault perception and reliability balancing, a task deployment strategy for delay-reliability collaborative optimization was proposed. First, a reliability-enhanced mobile edge computing (MEC) system model and a failure rate variation model based on server load perception were established. Then, by weighing the trade-off between reducing latency and improving the reliability level of the system, suitable computing nodes for task deployment were identified, and a low-latency and high-reliability deployment scheme was achieved under energy consumption constraints. Finally, in view of the change in server failure rate, the concept of reliability equilibrium was introduced, which ensured system reliability by limiting the maximum resource utilization of edge servers, and the degree of reliability imbalance (DRI) was employed to measure algorithm performance. Simulation results demonstrated that, compared with other related algorithms, the two proposed algorithms improved system reliability by 0.57% and 1.09%, and reduced latency by 30.06% and 16.86%, respectively, on average.

Keywords: mobile edge computing (MEC) ; reliability enhancement ; reliability balancing ; latency ; task offloading

PDF (1796KB) 元数据 多维度评价 相关文章 导出 EndNote| Ris| Bibtex  收藏本文

本文引用格式

赵庶旭, 朱祺, 王小龙. 面向移动边缘计算的可靠性增强任务部署方法. 浙江大学学报(工学版)[J], 2026, 60(8): 1697-1708 doi:10.3785/j.issn.1008-973X.2026.08.009

ZHAO Shuxu, ZHU Qi, WANG Xiaolong. Reliability-enhanced task deployment method in mobile edge computing environments. Journal of Zhejiang University(Engineering Science)[J], 2026, 60(8): 1697-1708 doi:10.3785/j.issn.1008-973X.2026.08.009

边缘应用与5G网络的快速发展普及,云计算模型已很难满足低时延需求的应用场景,移动边缘计算(mobile edge computing, MEC)网络[1]应运而生,它将云计算能力由中心逐步下沉到边缘,利用更靠近用户或数据源的计算和存储资源来完成数据处理,为用户提供超低时延和高带宽的网络服务.

可靠性指标评定网络组件在特定时间内正常运行的可能性[2],在云计算系统中定义为应用成功完成调度的概率[3]. MEC为了增强服务质量在一定程度上忽略了系统的可靠性,使得应用在边缘端执行时更易受到故障影响,从而导致执行失败[4]. 选择合适的边缘计算节点执行任务,在满足用户需求的同时减小故障的发生,是提升系统可靠性的关键. 影响MEC系统可靠性的因素众多,其中边缘服务器和虚拟机(virtual machine,VM)的故障是导致可靠性降低的主要原因[5];服务器故障率受资源使用率影响[6],随着使用率上升呈先下降后上升的趋势. 传统云计算中的容错技术(如副本、重新提交)通过消耗大量边缘资源来维持可靠性,所需的恢复时间较长,在资源受限的MEC环境中很难有效使用[7-8]. 边缘服务器的故障率不恒定,现有的可靠性增强任务部署方案均假设边缘计算节点的故障率恒定,但物理机的资源使用率对故障率的影响不容忽视[6]. 如何在节点故障率变化及资源受限的MEC环境下,构建既能降低资源消耗,又能提高系统可靠性的任务部署方案成为亟待解决的问题.

故障预防策略能够提前预测故障并提前采取容错方案,主要包括基于故障预防的任务部署方法与基于故障预测的任务迁移方法. 在任务部署方面,Liu等[9]提出具有可靠性和时延要求的快速节能任务卸载算法,通过提前计算在每个边缘计算节点执行任务时获得的可靠性值以及所需的时间来部署任务,但未考虑虚拟机故障. Liu等[10]提出具有最小化带宽资源的可靠性增强任务卸载策略,在提高系统可靠性的同时降低带宽消耗,但未考虑终端设备能耗以及边缘服务器故障率变化的情况. Samanta等[11]构建面向不确定需求的容错机制,在多种网络异常条件下实现资源合理分配,缺点是忽视了设备能耗与节点故障率对系统可靠性的影响. Liu等[12]提出面向超可靠低延迟的卸载方案,在任务卸载延迟和系统可靠性之间权衡,但仅考虑累积通信可靠性,未考虑计算节点故障及任务依赖关系. Zhao等[13]提出面向微服务应用的分布式冗余调度算法,用于解决因容器失效导致的可用性问题,但忽略了执行时延. 在任务迁移方面,Tuli等[14]提出基于生成对抗网络(generative adversarial network, GAN)复合AI模型的抢占式迁移技术,将可能发生故障的节点上的任务提前迁移至其他合适的节点执行,避免故障发生. Long等[15]提出基于深度确定性策略的MEC服务容错方法,融合生成优化网络模型以预测资源故障,深度确定性策略梯度模型以实现预防性任务迁移决策,在时延、能耗与预测精度方面均取得较好效果. Song等[16]提出基于服务器分类的服务迁移方案,在故障发生前主动迁移关键服务至健康节点,以降低服务中断风险. Park等[17]提出基于SmartNIC的Fatriot架构,通过主动监控MEC主机上的异常情况,在检测到故障时将传入的服务流量无缝重定向到备份主机,进而保持服务不被中断,缺点是忽视了用户能耗和任务的部署问题.

上述研究的故障模型未考虑任务执行时所在的边缘服务器和虚拟机均可能发生故障. 此外,大多数研究假设边缘服务器的故障率恒定,未考虑物理机CPU使用率对故障率的影响. 服务器负载过重往往导致实际故障率升高,从而降低系统的可靠性并影响用户的服务质量(QoS). 本研究建立故障模型、可靠性模型和时延模型等,构建考虑 CPU 使用率影响的服务器故障率变化模型. 在此基础上,设计出2种任务部署策略:针对服务器故障率恒定的情况,设计基于任务执行可靠性与处理时间权衡的可靠性增强任务部署算法;针对动态故障率情形,提出可靠性均衡的概念,通过限制服务器最大压力来保证整体系统可靠性.

1. 系统模型

边缘计算在更接近数据源的位置提供计算能力以降低延迟并提高响应速度,这种分布式计算架构忽视了系统的可靠性,使边缘计算容易受到各种故障的影响. 如图1所示, MEC环境下的任务部署模型包括网络模型、任务模型、通信模型、计算模型、能耗模型以及可靠性模型. 网络模型描述系统由互联的基站、边缘服务器和虚拟机构成;任务模型将应用拆分为具有依赖关系的子任务,分层构建就绪队列;通信模型计算任务的传输与通信开销;计算模型评估任务在节点上的处理时长;能耗模型计算卸载过程中的能耗开销,优化系统能效;可靠性模型衡量计算节点稳定性,结合调度策略提升并衡量系统可靠性.

图 1

图 1   面向移动边缘计算的任务部署模型图

Fig.1   Diagram of task deployment model in mobile edge computing environment


1.1. 网络模型

图2所示,MEC系统模型包括多个互联的基站,每个基站拥有一定数量的异构边缘服务器,并部署在用户设备(智能汽车、智能手机)附近,服务器集$ S=\left\{{s}_{1},{s}_{2},\cdots,{s}_{n}\right\} $. 每个边缘服务器包含若干异构虚拟机,虚拟机集$ \mathrm{VM}=\left\{{\text{vm}}_{1},{\mathrm{vm}}_{2},\cdots,{\mathrm{vm}}_{m}\right\} $,服务器$ {s}_{h} $上的虚拟机集$ {\mathrm{VM}}_{h}=\left\{{\mathrm{vm}}_{i},\cdots,{\mathrm{vm}}_{j}\right\} $. 每个边缘服务器和虚拟机都具有一定的故障率和恢复率,将用户设备定义为服务器$ {s}_{0} $上的虚拟机$ {\mathrm{vm}}_{0} $. 用户设备会产生对时延敏感的应用程序,每个应用由多个具有依赖关系的子任务组成,建模为有向无环图(directed acyclic graph, DAG). 在实际场景(如自动驾驶、工业物联网、智慧交通和大数据处理等)的典型应用中,均包含阶段性任务,可通过 DAG 表示内部任务之间的依赖关系,适合进行分布式调度与优化.

图 2

图 2   移动边缘计算系统模型图

Fig.2   Model diagram of mobile edge computing system


1.2. 任务模型

用户提交的应用程序集合$ I=\left\{1,2,\cdots,N\right\} $,将多个具有依赖关系的子任务组成的应用建模为有向无环图$ G=\left(T,E\right) $,其中$ {T}_{a}=\left\{{t}_{1},{t}_{2},\cdots,{t}_{k}\right\} $为应用$ a $中子任务的集合. 每个子任务$ {t}_{i} $的计算参数为$ \left\{{l}_{i},{d}_{i}\right\} $$ {l}_{i} $为完成任务$ {t}_{i} $所需的处理器周期总数,$ {d}_{i} $为任务输入数据大小. $ {E}_{a}=\left\{{e}_{ij}\left({m}_{i,j}\right)\right\} $为应用$ a $子任务间相连的边的集合,$ {m}_{i,j} $为子任务$ {t}_{i} $$ {t}_{j} $间的传输数据大小. 如图3所示,每条边表示2个子任务间的连接,箭头为依赖关系,即当前子任务只有在所有直接前继任务执行完成后才可以被启动. 定义$ \mathrm{pred}\left({t}_{q}\right) $为子任务$ {t}_{q} $的前继任务集合,$ \mathrm{succ}\left({t}_{q}\right) $为后继任务集合.

图 3

图 3   应用程序有向无环图层次模型

Fig.3   Application hierarchical model based on directed acyclic graph


1.3. 通信模型

网络中的每个基站都连接多个MEC服务器,用户$ i $的任务卸载到服务器$ {s}_{h} $的速率计算为

$ v_{i}^{h}=W\mathrm{lb}\left(1+{Pg_{i}^{h}}/{{\sigma }^{2}}\right)\text{.} $

式中:$ W $为用户与边缘服务器之间的信道带宽,$ {\sigma }^{2} $为噪声功率,$ P $为用户设备的传输功率. 用户$ i $与服务器$ s_h $之间的信道增益计算$ g_{i}^{h}=D_{h}^{-\alpha } $$ {D}_{h} $为用户与服务器$ s_h $之间的距离,$ \alpha $为路径损耗因子. 用户$ i $将输入数据大小为$ {d}_{q} $的子任务$ {t}_{q} $卸载到服务器$ {s}_{h} $的传输时延计算为$ t_{i,q,h}^{\mathrm{send}}={d}_{q}/v_{i}^{h} $. 子任务在不同服务器之间的传输时延由传输数据大小与传输速率决定,若2个相邻子任务部署在相同服务器上,则这2个子任务间的通信时间可忽略. 设$ {s}_{h} $$ {s}_{k} $分别为当前子任务$ {t}_{i} $与直接后继子任务$ {t}_{j} $所在服务器,$ v_{h}^{k} $为服务器间传输速率,则任务间通信时间表示为

$ T_{i,j}^{\mathrm{comm}}=\begin{cases} {m}_{i,j}/v_{h}^{k}, & {s}_{h}\neq {s}_{k};\\  0       ,& {s}_{h}={s}_{k}.\end{cases} $

1.4. 计算模型

应用子任务可以选择在用户终端上执行,也可以卸载到MEC服务器上执行. 定义边缘服务器上虚拟机的处理能力$ C=\left\{{c}_{1},{c}_{2},\cdots,{c}_{m}\right\} $为单位时间内可执行的处理器指令周期数. $ t_{i,q}^{\mathrm{loc}}={l}_{q}/{c}_{0} $为本地计算时延,其中$ {c}_{0} $为用户设备的处理能力. 由于边缘节点下行信道带宽大,输出数据量小,因此忽略将卸载子任务结果返回用户的传输时间. $ t_{i,q}^{\mathrm{off}}={l}_{q}/{c}_{k}+t_{i,q,h}^{\mathrm{send}} $为应用$ i $的子任务$ t_q $的边缘计算时延. 为了简化,将用户$ i $在本地或MEC服务器上执行的子任务的延迟时间统一用$ t_{i,q}^{\mathrm{exe}} $表示,当$ h=0 $时,表示子任务在本地执行,此时传输时延$ t_{i,q,h}^{\mathrm{send}}=0 $,计算时延统一表示为

$ t_{i,q}^{\mathrm{exe}}={l}_{q}/{c}_{k}+t_{i,q,h}^{\mathrm{send}}. $

定义$ \varPhi $为应用$ i $从顶层任务到底层任务的所有执行路径集,$ \varphi $为集合$ \varPhi $中的某条执行路径中的任务集,则应用$ i $的总执行时间为执行时间最长的路径,为

$ T\left(i\right)=\underset{\varphi \in \varPhi }{\max }\left(\sum\limits_{{t}_{q}\in \varphi }\left(t_{i,q}^{\mathrm{exe}}+T_{j,q}^{\mathrm{comm}}\right)\right) , {t}_{j}\in \left(\mathrm{pred}\left({t}_{q}\right)\cap \varphi \right). $

1.5. 能耗模型

任务在MEC服务器上执行无需担心能源供应,但用户卸载任务过程中的能量成本不可忽视. 用户卸载应用$ i $子任务$ {t}_{q} $时所需的能耗$ {\varepsilon }_{i}\left({t}_{q}\right)=Pt_{i,q,h}^{\mathrm{send}} $,处理器在单位时间内消耗的能量用$ \rho $表示,则子任务$ {t}_{q} $在本地计算所需的能耗$ {\varepsilon }_{i}\left({t}_{q}\right)=\rho t_{i,q}^{\mathrm{loc}} $,应用$ i $的总能耗为所有子任务花费能耗之和,表示为

$ E\left(i\right)=\sum\limits_{{t}_{q}\in {T}_{i}}{\varepsilon }_{i}\left({t}_{q}\right). $

1.6. 可靠性模型

在边缘计算场景下,导致系统可靠性降低的主要原因是MEC中服务器或虚拟机的故障[5]. 本文主要研究服务器和虚拟机在执行任务中故障对系统可靠性的影响. 执行可靠性主要受瞬时性故障和永久性故障影响. 鉴于瞬时性故障与执行可靠性的相关性更强[18],将故障均视为瞬时性故障,并假设所有服务器和虚拟机故障相互独立[19]. 在硬件生命周期中,瞬间故障的发生频率服从泊松分布[20]. 定义$ \lambda $为故障率参数,则在任务执行时间区间$ t $内发生$ k $次故障的概率为$ {\left(\lambda t\right)}^{k}\cdot {\exp}\left({-\lambda t}\right)/k!,\;k\geqslant 0 $,在执行任务时故障不发生的概率$ {P}_{\mathrm{succ}}={\exp}\left({-\lambda t}\right) $.$ {\lambda }_{h} $$ {\lambda }_{h,k} $分别表示服务器$ {s}_{h} $和其上虚拟机$ {\mathrm{vm}}_{k} $的故障率,则在服务器和虚拟机上执行子任务$ {t}_{q} $获得的可靠性值分别表示为$ {R}_{\mathrm{sh}}\left({t}_{q}\right)={\exp}\left({-{{\lambda }_{h}}{l}_{q}/{c}_{k}}\right) $$ {R}_{\mathrm{vmk}}\left({t}_{q}\right)={\exp}\left({-{{\lambda }_{h,k}}{l}_{q}/{c}_{k}} \right)$. 若完成应用$ i $时设备总能耗超过能耗要求$ {E}_{\mathrm{req}}\left(i\right) $,或执行中所在服务器或虚拟机发生故障导致应用无法完成,均视作违反应用$ i $的QoS请求. 用$ {R}_{\mathrm{req}}\left(i\right) $表示应用程序$ i $的可靠性需求,$ {r}_{i} $表示是否违反应用$ i $的QoS请求,若未违反,则$ {r}_{i}=1 $,反之$ {r}_{i}=0 $$ |T_i| $为应用$ i $中子任务数量,系统可靠性表示为

$ {R}_{\mathrm{sys}}=\sum\limits_{i=1}^{|T_i|}{r}_{i}{R}_{\mathrm{req}}\left(i\right)\bigg/\sum\limits_{i=1}^{|T_i|}{R}_{\mathrm{req}}\left(i\right). $

2. 问题描述及算法设计

2.1. 可靠性与时延优化问题求解

为了提高系统可靠性并减少平均延迟,须在能耗约束的情况下,最大化系统的可靠性水平,同时优化时延. 卸载问题可以转化为如下优化过程:

$ \left.\begin{array}{l} \mathrm{min} \displaystyle\sum\limits_{i=1}^{n}T\left(i\right)\Big/n,\\\mathrm{max} \displaystyle\sum\limits_{i=1}^{n}{r}_{i}{R}_{\mathrm{req}}\left(i\right)\bigg/\displaystyle\sum\limits_{i=1}^{n}{R}_{\mathrm{req}}\left(i\right).\end{array} \right\}$

式中:$ T\left(i\right) $为应用程序$ i $的总执行时间;$ {x}_{i,q,k} $为二元变量,表示应用程序$ i $中子任务$ {t}_{q} $是否在$ {\mathrm{vm}}_{k} $上执行,是则$ {x}_{i,q,k}=1 $,否则$ {x}_{i,q,k}=0 $$ \tau \left({t}_{q}\right) $为子任务$ {t}_{q} $的开始时间;约束条件$ {\mathrm{C}}1 $表示用户完成应用程序的总能耗小于或等于给定的能耗约束;约束$ {\mathrm{C}}2 $表示每个子任务只能在1个地方执行;约束$ {\mathrm{C}}3 $$ {\mathrm{C}}4 $表示当前子任务只有当所有前继任务完成之后才可执行. 利用加权和方法,将优化目标转化为单目标优化问题[21]. 目标优化问题表示为

$\left.\begin{split}& \min \alpha \cdot \frac{\displaystyle\sum\limits_{i=1}^n R_{\mathrm{req}}(i)}{\displaystyle\sum\limits_{i=1}^n r_i R_{\mathrm{req}}(i)}+\beta \cdot \frac{\displaystyle\sum\limits_{i=1}^n T(i)}{n} . \\&\, {\mathrm{s.t.}} \quad {\mathrm{C}} 1 ; {\mathrm{C}} 2 ; {\mathrm{C}} 3 ; {\mathrm{C}} 4 ; {\mathrm{C}} 5 .\end{split}\right\}$

式中:$ \alpha $$ \beta $均为正可调因子,$ \alpha +\beta =1 $.

2.2. 可靠性增强的任务部署算法设计

2.2.1. 算法设计

将应用拆分为具有依赖关系的多个子任务执行,建模为有向无环图,通过调度策略在对时延和可靠性进行权衡后,卸载至相应计算节点执行. 后继子任务要在所有前继任务完成并接收到传输数据后才可执行,故须先进行任务分层处理. 如图3所示,$ {t}_{0} $$ {t}_{8} $为虚拟任务,表示应用的开始和结束. 任务$ {t}_{q} $的层级数计算为

$ L\left({t}_{q}\right)=\begin{cases} 0,& q=0;\\\underset{{t}_{j}\in \mathrm{pred}\left({t}_{q}\right)}{\max }\left\{L\left({t}_{j}\right)\right\}+1,& q\neq 0.\end{cases} $

在选择服务器时,须计算服务器上虚拟机的平均算力以便选择. 用$ n({s}_{h}) $表示服务器$ {s}_{h} $上的虚拟机数量,则平均算力$ \mathrm{AVGC}\left({s}_{h}\right)=\displaystyle\sum\nolimits_{{\mathrm{vm}}_{k}\in {\mathrm{VM}}_{h}}{c}_{k}/n({s}_{h}) $,此时服务器$ {s}_{h} $的可靠性为$ {R}_{s\mathrm{Pre}}\left({t}_{q}\right)={\exp}\left({-{{\lambda }_{h}}{l}_{q}/\mathrm{AVGC}\left({s}_{h}\right)}\right) $.$ v $表示已部署好的子任务集,若已成功部署,则按真实能耗计算,否则均按分配到该服务器执行计算,任务$ {t}_{q} $在服务器$ {s}_{h} $执行的预计能耗计算为

$ E\left(i,{t}_{q},{s}_{h}\right)=\sum\limits_{{t}_{k}\in v}{\varepsilon }_{i}\left({t}_{k}\right)+\sum\limits_{{t}_{k}\in {T}_{i},{t}_{k}\notin v}Pt_{i,h}^{\mathrm{send}}. $

$ E\left(i,{t}_{q},{s}_{h}\right)\leqslant {E}_{\mathrm{req}}\left(i\right) $,则将该服务器加入满足能耗需求的服务器集$ {S}^{\prime} $. 此外,每次分配子任务$ {t}_{q} $都比较本地计算与边缘计算总时间,若本地时间更短,则剩余子任务按照在边缘能耗最大值来计算,子任务$ {t}_{q} $在本地执行预计所需能耗为

$ {E}_{\max }\left(i,{t}_{q},{s}_{0}\right)=\sum\limits_{{t}_{k}\in v}{\varepsilon }_{i}\left({t}_{k}\right)+\rho t_{i,q}^{\mathrm{loc}}+\sum\limits_{{t}_{k}\notin \left(v\cup {t}_{q}\right)}{\varepsilon }_{\max }\left({t}_{k}\right). $

若满足$ {E}_{\max }\left(i,{t}_{q},{s}_{0}\right)\leqslant {E}_{\mathrm{req}}\left(i\right) $,则该任务在本地执行,$ {\varepsilon }_{\max }\left({t}_{k}\right) $为任务$ {t}_{k} $在边缘端执行任务预计花费的最大能耗,计算为$ \underset{{s}_{h}\in S}{\max }\left\{Pt_{i,k,h}^{\mathrm{send}}\right\} $. 选择虚拟机时,须对任务执行时间和执行位置的可靠性进行权衡. 针对目标数值差距过大可能会导致权重无法准确取值的问题,使用归一化方法,用$ {R}_{\mathrm{vmk}}\left({t}_{q}\right)\left[{\mathrm{Norm}}\right] $$ t_{i,q}^{\mathrm{exe}}\left[{\mathrm{Norm}}\right] $表示归一化后的可靠性和执行时间. 基于此,虚拟机优先级计算为

$ \text{priority}\left(\mathrm{vm}\right)={\gamma }_{1}\cdot {R}_{\mathrm{vm}}\left({t}_{q}\right)\left[{\mathrm{Norm}}\right]+{\gamma }_{2}\cdot t_{i,q}^{\mathrm{exe}}\left[{\mathrm{Norm}}\right]. $

$ {R}_{\mathrm{vmk}}\left({t}_{q}\right)\left[{\mathrm{Norm}}\right]=\frac{{R}_{\mathrm{vmk}}\left({t}_{q}\right)-\underset{\mathrm{vm}\in {\mathrm{VM}}_{h}}{\min }{R}_{\mathrm{vm}}\left({t}_{q}\right)}{\underset{\mathrm{vm}\in {\mathrm{VM}}_{h}}{\max }{R}_{\mathrm{vm}}\left({t}_{q}\right)-\underset{\mathrm{vm}\in {\mathrm{VM}}_{h}}{\min }{R}_{\mathrm{vm}}\left({t}_{q}\right)}, $

$ t_{i,q}^{\mathrm{exe}}\left[{\mathrm{Norm}}\right]=\frac{\underset{\mathrm{vm}\in {\mathrm{VM}}_{h}}{\max }\left\{t_{i,q}^{\mathrm{exe}}\right\}-t_{i,q}^{\mathrm{exe}}}{\underset{\mathrm{vm}\in {\mathrm{VM}}_{h}}{\max }\left\{t_{\mathrm{i},q}^{\mathrm{exe}}\right\}-\underset{\mathrm{vm}\in {\mathrm{VM}}_{h}}{\min }\left\{t_{i,q}^{\mathrm{exe}}\right\}}. $

式中:$ {\gamma }_{1} $$ {\gamma }_{2} $为正可调因子,表示2个指标的重要程度,$ {\gamma }_{1}+{\gamma }_{2}=1 $.

根据式(8)中的目标优化问题以及约束条件,本研究提出可靠性增强的低时延任务卸载算法(reliability-enhanced low-latency task offloading algorithm,LLRE). 通过选择合适的位置部署任务,避免任务在执行过程中发生故障的同时,减少应用程序的执行时延. LLRE的描述如算法1所示.

算法1 可靠性增强的低时延任务卸载算法

输入:$ S,VM,T,I,{g}_{1},{g}_{2} $,应用有向无环图

输出:近似最优部署方案

1. 初始化所有参数

2. 根据截止时间升序对$ n $个应用进行排序

3. for $ i  $ in $ \left| I\right| $

4.  根据式(9)计算应用$ i $的层数$ {L}_{i} $

5.  将$ {T}_{i} $拆分为$ {L}_{i} $组,每层子任务集$ {G}_{l} $

6.  for $ l $ in $ {L}_{i} $

7.   按照子任务大小降序排序$ {G}_{l} $

8.   for $ {t}_{q} $ in $ \left| {G}_{l}\right| $

9.    计算服务器可靠性

10.    if $ {t}_{q} $直接前继任务服务器空闲

11.     then 将tq部署在满足条件且可靠性最高的服务器

12.     else 根据式(10)找到满足能耗要求的服务器集$ {S}^{\prime} $

13.       将$ {t}_{q} $部署在$ {S}^{\prime} $可靠性最高且空闲无故障的服务器上

14.    end if

15.    根据式(12)选择该服务器VM部署

16.    if 在本地计算总时延小于边缘且满足式(11)能耗要求

17.     then 在本地执行

18.     else 在选择的VM上部署

19.    end if

20.   end for

21.   end for

22. end for

23. 返回部署方案

算法1第3~22行的循环确定所有应用中所有子任务近似最优部署方案. 在部署过程中,根据式(9)确定应用程序中子任务层数,将任务集$ {T}_{i} $划分为$ {L}_{i} $组,按照大小降序排序(第4~7行). 第8~13行确定部署的服务器位置,选择与直接前继任务所在同一边缘服务器上的虚拟机执行(第8~11行),若该服务器已发生故障或无可用的虚拟机,则找到满足能耗要求的服务器,根据式(10)选择最可靠的边缘服务器(第12~13行),并根据式(12)选择优先级最高的虚拟机部署(第15行). 根据当前任务本地与边缘计算总时间及预计能耗来进一步确定部署位置(第16~23行). LLRE流程图如图4所示.

图 4

图 4   可靠性增强的低时延任务卸载算法流程图

Fig.4   Flowchart of reliability-enhanced low-latency task offloading algorithm


2.2.2. 算法复杂度分析

算法1先对所有应用排序(第2行),时间复杂度为$ O\left(N\cdot \text{lb}N\right) $,其中$ N $为应用数量. 随后进入3层嵌套循环结构:最外层循环遍历所有应用(第3~22行),执行次数为$ N $;中间层循环遍历每个应用的所有任务层(第6~21行),执行次数为$ {L}_{i} $;最内层遍历各层中所有子任务(第8~20行). 在中间层循环中,算法对每层任务按大小降序排序,设每层最多包含$ m $个子任务,则时间复杂度为$ O\left(m\cdot \text{lb}m\right) $,最内层循环,算法完成任务的部署决策,设系统共由$ s $台服务器和$ v $个虚拟机,则每个任务部署决策时间复杂度为$ O\left(s+v\right) $. 因此LLRE总体执行时间复杂度为$ O\left(N\cdot {L}_{i}\cdot m\cdot (\text{lb}m+s+v)\right) $.

3. 可靠性均衡算法设计

物理机资源使用率对故障率影响不容忽视[6],本研究考虑通过限制边缘服务器的压力值,解决服务器故障率变化下的任务部署问题.

3.1. 可靠性均衡模型

将边缘服务器的资源使用率(压力)表示为当前被使用的虚拟机算力之和与服务器总算力的比值. 用二元变量$ \mathrm{exe}_{i}^{k} $表示服务器$ {s}_{i} $上虚拟机$ {\mathrm{vm}}_{k} $是否正在执行任务,正在执行时$ \mathrm{exe}_{i}^{k}=1 $,反之$ \mathrm{exe}_{i}^{k}=0 $. 边缘服务器$ {s}_{h} $资源使用率表示为

$ {U}_{{{s}_{h}}}=\sum\limits_{k=1}^{n}\mathrm{exe}_{i}^{k}{c}_{k}/\sum\limits_{k=1}^{n}{c}_{k},\; 0 \lt {U}_{{{s}_{h}}} \lt 1. $

$ {\lambda }^{\prime}_{h} $表示服务器真实故障率,$ {\lambda }_{h} $表示初始故障率,$ f\left({U}_{{{s}_{h}}}\right) $表示故障率是关于服务器压力的函数,则边缘服务器真实故障率计算为$ {\lambda }_{h}+f\left({U}_{{{s}_{h}}}\right) $,由于服务器和虚拟机均可能发生故障,故将服务器$ {s}_{h} $的虚拟机$ {\mathrm{vm}}_{k} $上执行子任务$ {t}_{q} $的可靠性值计算为

$ R\left({t}_{q}\right)={R}_{\mathrm{sh}}\left({t}_{q}\right)\times {R}_{\mathrm{vmk}}\left({t}_{q}\right)={{\mathrm{exp}}}{\left(-\left({\lambda }_{h}+{\lambda }_{h,k}\right){l}_{q}/{c}_{k}\right)}. $

应用$ i $累积可靠性值表示为每个任务可靠性乘积:

$ R\left(i\right)=\prod\limits_{{t}_{q}\in {T}_{i}}R\left({t}_{q}\right). $

为了避免频繁选择相同服务器执行任务,导致负载过大进而增加故障率,在分配时须考虑服务器的压力. 本研究提出可靠性均衡的思想,核心目标是使所有计算节点具有相近的可靠性. 服务器真实故障率随压力的变化情况未知,故在部署任务时,定义服务器的压力阈值$ {U}_{\max } $.

3.2. 可靠性均衡评价指标

为了描述用户卸载子任务时系统可靠性的均衡情况,参考分布式系统中负载不平衡程度(degree of imbalance, DI)[22-23],可靠性均衡的评价指标DRI越小,表示计算节点之间的可靠性越均衡. 分配每个子任务时都计算可靠性均衡程度:

$ \mathrm{TDRI}\left({t}_{i}\right)=\frac{{R}_{\max }\left({t}_{i}\right)-{R}_{\min }\left({t}_{{i}}\right)}{{R}_{\mathrm{avg}}\left({t}_{i}\right)}. $

式中:$ {R}_{\max }\left({t}_{i}\right) $$ {R}_{\min }\left({t}_{i}\right) $分别为在服务器故障率变化的情况下执行子任务$ {t}_{i} $时,当前任务在所有位置上执行真实可获得的最大和最小可靠性值,$ {R}_{\mathrm{avg}}\left({t}_{i}\right) $为可获得的平均可靠性值,应用$ a $可靠性均衡程度$ \mathrm{ADRI}\left(a\right) $为所有子任务可靠性均衡程度之和$ \displaystyle\sum\nolimits_{{{t}_{i}}\in {{T}_{a}}}\mathrm{TDRI}\left({t}_{i}\right) $. 系统的可靠性均衡程度计算:所有在边缘执行的应用的DRI之和,与用户提交的应用数量之比:

$ \mathrm{DRI}=\sum\limits_{a=1}^{m}\mathrm{ADRI}\left(a\right)/m. $

3.3. 故障率变化下的可靠性均衡问题求解

在服务器故障率变化的情况下进行任务卸载,实现在能耗约束的情况下最大化系统的可靠性水平,同时优化时延. 卸载问题可以转化为如下优化过程:

$ \left.\begin{split} & \min  \alpha \cdot \frac{\displaystyle\sum\limits_{i=1}^{n}{R}_{\mathrm{req}}\left(i\right)}{\displaystyle\sum\limits_{i=1}^{n}{r}_{i}{R}_{\mathrm{req}}\left(i\right)}\text+\beta \cdot \frac{\displaystyle\sum\limits_{i=1}^{n}T\left(i\right)}{n}.\\&\, {\mathrm{s.t.}}\quad {\mathrm{C}}1;{\mathrm{C}}2;{\mathrm{C}}3;{\mathrm{C}}4;{\mathrm{C}}5;\\&\, {\mathrm{C}}6\colon {\lambda }^{\prime}_{h}={\lambda }_{h}+f\left({U}_{{{s}_{h}}}\right).\end{split}\right\}$

约束条件$ {\mathrm{C}}6 $表示服务器故障率随服务器压力变化.

3.4. 可靠性均衡策略的任务部署算法设计

3.4.1. 算法设计

为了实现在服务器故障率变化情况下的可靠性均衡问题,考虑用户的可靠性需求,以此确定更加合适的边缘节点执行任务,进一步提高系统可靠性. 用$ R\left(i,{t}_{q}\right) $表示分配任务$ {t}_{q} $时应用$ i $的可靠性,$ v $表示已部署好的子任务集,则每次分配任务时,应用的当前可靠性计算为

$ R\left(i,{t}_{q}\right)=\prod\limits_{{t}_{k}\in v}R\left({t}_{k}\right)\times R\left({t}_{q}\right)\times \prod\limits_{{t}_{k}\in {T}_{i},{t}_{k}\notin \left(v\cup {t}_{q}\right)}{R}_{\mathrm{u}}\left({t}_{k}\right). $

式中:$ R\left({t}_{k}\right) $为已部署任务真实获得的可靠性值,$ {R}_{\mathrm{u}}\left({t}_{k}\right) $为未部署任务的可靠性值,每次分配任务时应用应满足可靠性需求$ R\left(i,{t}_{q}\right)\geqslant {R}_{\mathrm{req}}\left(i\right) $,未部署任务的可靠性情况是未知的,因此将未部署任务按照能获得的最大可靠性值来计算. 用$ {R}_{\mathrm{m}}\left({t}_{k}\right) $表示任务$ {t}_{k} $在边缘端可以获得的可靠性上界,则每次分配任务须满足的可靠性值为

$ R\left({t}_{q}\right)\geqslant {R}_{\mathrm{req}}\left(i\right)\bigg/\left(\prod\limits_{{t}_{k}\in v}R\left({t}_{k}\right)\times \prod\limits_{{t}_{k}\in {T}_{i},{t}_{k}\notin \left(v\cup {t}_{q}\right)}{R}_{\mathrm{m}}\left({t}_{k}\right)\right). $

预先计算每个服务器满足条件的虚拟机个数,计算可靠性值,避免服务器可用虚拟机较少或故障率较高的问题. 用$ {y}_{i} $表示$ {\mathrm{vm}}_{i} $是否满足当前子任务可靠性需求,若满足,则为1,否则为0,服务器$ {s}_{h} $上满足需求的虚拟机个数为

$ \mathrm{nVM}\left({s}_{h}\right)=\sum\limits_{{\mathrm{vm}}_{i}\in {\mathrm{VM}}_{h}}{y}_{i}.\;\; {y}_{i}=\begin{cases} 1,& 满足需求;\\0,& 其他.\end{cases} $

$ s\left({\mathrm{VM}}_{h}\right) $表示服务器$ {s}_{h} $上满足可靠性需求的虚拟机集,$ |{\mathrm{VM}}_{h}| $为服务器$ {s}_{h} $上虚拟机数量,则服务器执行子任务平均可靠性值计算为

$ {{\mathrm{QAR}}_{\mathrm{vm}}\left({s}_{h}\right)=\begin{cases}\displaystyle\sum\limits_{\mathrm{vm}\in s\left({\mathrm{VM}}_{h}\right)}R\left({t}_{q}\right)\Big/\mathrm{nVM}\left({s}_{h}\right), & \mathrm{nVM}\left({s}_{h}\right)\neq 0;\\\displaystyle\sum\limits_{\mathrm{vm}\in {\mathrm{VM}}_{h}}R\left({t}_{q}\right)\Big/|{\mathrm{VM}}_{h}|     ,& 其他.\end{cases} }$

对式(23)和(24)进行归一化处理,$ {\mathrm{QAR}}_{\mathrm{max}} $$ {\mathrm{QAR}}_{\mathrm{min}} $分别表示所有服务器中,执行子任务$ {t}_{q} $时的最大和最小平均可靠性.

$ \mathrm{nVM}\left({s}_{h}\right)\left[{\mathrm{Norm}}\right]=\sum\limits_{{\mathrm{vm}}_{i}\in {\mathrm{VM}}_{h}}{y}_{i}\Big/|{\mathrm{VM}}_{h}|, $

$ {\mathrm{QAR}}_{\mathrm{vm}}\left({s}_{h}\right)\left[{\mathrm{Norm}}\right]=\frac{{\mathrm{QAR}}_{\mathrm{vm}}\left({s}_{h}\right)-{\mathrm{QAR}}_{\min }}{{\mathrm{QAR}}_{\max }-{\mathrm{QAR}}_{\min }}. $

基于此,服务器优先级计算为

$ \begin{split}\text{priority}\left({s}_{h}\right)&={\theta }_{1}\cdot \mathrm{nVM}\left({s}_{h}\right)\left[{\mathrm{Norm}}\right]+ \\& {\theta }_{2}\cdot {\mathrm{QAR}}_{\mathrm{vm}}\left({s}_{h}\right)\left[{\mathrm{Norm}}\right].\end{split} $

式中:$ {\theta }_{1} $$ {\theta }_{2} $为正可调因子,表示2个指标的重要程度,$ {\theta }_{1}+{\theta }_{2}=1 $.

本研究提出可靠性均衡策略的低时延任务卸载算法(reliability-balanced low-latency task offloading algorithm,LLRB),在选择合适的执行位置时考虑所在服务器的压力值,通过设置服务器的最大压力值来防止服务器的故障率过高,进而提高系统可靠性. LLRB的描述如算法2所示.

算法2 可靠性均衡策略的低时延任务卸载算法

输入:$ S,VM,T,I,{U}_{\max },{\theta }_{1},{\theta }_{2} $,应用有向无环图

输出:近似最优部署方案

1. 初始化所有参数

2. 根据截止时间升序对$ n $个应用进行排序

3. for $ i $ in $ \left| I\right| $

4.  根据式(9)计算应用$ i $的层数$ {L}_{i} $

5.  将$ {T}_{i} $拆分为$ {L}_{i} $组,每层子任务集$ {G}_{l} $

6.  for $ l $ in $ {L}_{i} $

7.   按照子任务大小降序排序$ {G}_{l} $

8.   for $ {t}_{q} $ in $ \left| {G}_{l}\right| $

9.    根据式(27)计算服务器优先级

10.    if $ {t}_{q} $直接前继任务所在服务器压力值小于$ {U}_{\max } $且无故障

11.     then 将$ {t}_{q} $部署在满足条件且优先级最高的服务器上

12.     else 根据式(10)找到满足能耗要求的服务器集$ {S}^{\prime} $

13.       将$ {t}_{q} $部署在服务器集$ {S}^{\prime} $优先级最高且压力值小于$ {U}_{\max } $且无故障的服务器上

14.    end if

15.    根据式(22)在该服务器上找到满足可靠性需求的虚拟机集$ \mathrm{V}{{{\mathrm{M}}^{\prime}}}_{h} $

16.    if $ \mathrm{V}{{{\mathrm{M}}^{\prime}}}_{h} $为空

17.     then 返回步骤13选择次优先且压力值小于$ {U}_{\max } $服务器部署任务

18.     else 选择该$ \mathrm{V}{{{\mathrm{M}}^{\prime}}}_{h} $中使$ t_{i,q}^{\mathrm{exe}} $最小的虚拟机进行部署

19.    end if

20.    if $ {t}_{q} $已经部署

21.     then if 本地计算总时延小于边缘且满足式(11)能耗要求

22.       then 在本地执行

23.     else 在选择的虚拟机上部署

24.     end if

25.    else if $ {S}^{\prime} $中存在压力小于$ {U}_{\max } $的服务器

26.     then 选择使$ R\left({t}_{q}\right) $最大且所在服务器满足约束的VM

27.    else选择使$ \underset{{s}_{h}\in S,{\mathrm{vm}}_{k}\in \mathrm{VM}}{\max }\{R\left({t}_{q}\right)-{U}_{{{s}_{h}}}\} $最大且满足能耗需求的VM

28.    end if

29.    根据式(15)更新服务器压力值

30.   end for

31.  end for

32. end for

33. 返回部署方案

算法2第3~33行的循环确定所有应用中所有子任务近似最优部署方案. 第8~13行确定任务要部署的服务器位置,在选择与直接前继任务所在同一边缘服务器上的虚拟机执行时,判断压力值是否满足要求(第8~11行),若该服务器不满足,则找到满足能耗要求的服务器,根据式(27)选择优先级最高且压力值满足要求的边缘服务器(第12、13行). 第15~18行初步确定任务的部署位置. 若当前服务器中没有满足需求的虚拟机,则选择次优且压力值合适的服务器,返回第13行重新执行(第16、17行),第18行为任务选择满足条件且使$ t_{i,q}^{\mathrm{exe}} $最小的虚拟机. 第20~32行确定任务最终部署位置,第20行防止出现所有边缘服务器上虚拟机均无法满足可靠性需求的情况,此时选择满足能耗需求且压力值合适服务器上,可靠性最高的位置部署,若所有服务器压力均过大,则根据$ \underset{{s}_{h}\in S,{\mathrm{vm}}_{k}\in \mathrm{VM}}{\max }\{R\left({t}_{q}\right)-{U}_{{{s}_{h}}}\} $选择部署位置. LLRB流程图如图5所示.

图 5

图 5   可靠性均衡的低时延任务卸载算法流程图

Fig.5   Flowchart of reliability-balanced low-latency task offloading algorithm


3.4.2. 算法复杂度分析

与LLRE相似,LLRB也包含应用排序、任务分层、任务排序部署等步骤,总体框架仍为3层嵌套循环结构. 在最内侧循环中,虽然增加对服务器进行压力判断以及回退机制(第17行),但最大执行次数仍为$ O\left(s+v\right) $,因此LLRB时间复杂度为$ O\left(N\cdot {L}_{i}\cdot m\cdot (\mathrm{lb}m+s+v)\right) $.

4. 仿真分析

为了评估所提算法的有效性和准确性,将这2种算法与以下算法[11,24]进行对比. 1) Random:部署时采取随机部署策略,调度时随机选择虚拟机部署任务,在分配所有子任务后计算总能耗,若不满足能耗需求,则重新选择虚拟机执行,直至找到满足能耗要求部署方案. 2) Greedy:部署时采用贪婪部署策略,对于每个子任务,在终端设备或MEC服务器上寻找使时延最小且满足能耗需求的位置部署. 3) 可靠性轮询部署算法(reliability round robin, RRR):部署时采用轮询部署策略[24],在调度时先找到满足能耗需求的服务器,根据平均可靠性值进行排序,并在服务器上选择能获得最大可靠性值的虚拟机部署任务,若所有服务器都已被调度过,则从头选择服务器开始调度,直至所有子任务部署完成. 4) 可靠性增强的任务卸载方法(reliability-enhanced task offloading, RETO):该算法目标是最小化物联网应用带宽消耗,同时最大限度地提高可靠性水平. Samanta等[11]提出具有最小化带宽资源的可靠性增强任务卸载策略,通过在带宽消耗、执行时间和虚拟机故障率之间权衡找到最优的部署策略.

采用物理机随CPU使用率UCPU变化的浴盆曲线[6],模拟边缘服务器故障率随压力值变化的情况. 以服务器压力值为自变量的三次函数,对文献[6]中故障率曲线进行拟合,近似得出边缘服务器故障率变化曲线. 添加故障率变化因子$ \alpha $,表示故障率受服务器压力影响的剧烈程度,$ \alpha =0 $表示服务器故障率不受资源使用率的影响,$ \alpha $越大表明所受影响越剧烈. 如图6所示为$ \alpha =1 $时的故障率拟合曲线,服务器$ {s}_{h} $真实故障率$ {\lambda }^{\prime}_{h} $计算为

图 6

图 6   边缘服务器故障率变化曲线

Fig.6   Failure rate variation curve of edge severs


$ {\lambda }^{\prime}_{h}=\begin{cases} {\lambda }_{h},& \alpha =0;\\{\lambda }_{h}+\alpha \cdot 0.075\;413\;11\cdot U_{{s}_{h}}^{3}-0.065\;771\;51\cdot U_{{s}_{h}}^{2}+0.007\;858\;42\cdot {U}_{{{s}_{h}}},& \alpha \gt 0.\end{cases} $

4.1. 仿真参数设置

对于应用程序子任务的拓扑图,采用文献[25]中的Montage、CyberShake和LIGO Inspiral Analysis共3种科学工作流进行仿真实验. 系统中包含3~8个边缘服务器,每个服务器含有5个虚拟机. 整个应用大小为5~6 MB,所需处理器总周期数为5 000~6 000 Megacycles,虚拟机的计算能力$ {c}_{k} $=5~10 GHz,用户设备处理器计算能力$ {c}_{0} $=0.5 GHz,用户设备在1个时间单位内的能量成本$ \rho $=5 mW,设置信道带宽W=5 MHz,用户设备的传输功率$ P $=50~100 mW,路径损耗因子$ \alpha $=4,信道噪声功率$ {\sigma }^{2} $=−100 dBm,若任务为发送方,则发送的数据量为40~80 KB. 采用Backblaze公司在2023年发布的硬盘故障率作为边缘服务器和虚拟机的故障率参数$ \lambda $,假设用户设备在执行时不会发生故障. 应用能耗需求$ {E}_{\mathrm{req}} $=0.14~0.18 J,可靠性需求$ {R}_{\mathrm{req}} $=0.93~0.98,设置正可调因子$ {\theta }_{1} $${\theta }_{2} $分别为0.2、0.8. 边缘服务器和虚拟机发生故障是概率事件,因此假设不同用户设备依次传输10 000个应用到边缘端执行,以消除随机性影响.

4.2. 实验结果及分析

4.2.1. 服务器最大压力值对算法性能的影响

服务器最大压力值$ {U}_{\max } $会影响任务的部署策略,进而影响算法的性能. 在3种工作流下改变LLRB中的$ {U}_{\max } $,根据系统可靠性、DRI、平均时延Tavg以及能耗Eavg受到的影响来选取合适的压力值. 服务器数量为5,故障率变化因子$ \alpha =1 $的实验结果如图7所示. LLRB在不同工作流执行时系统DRI、平均时延和能耗不同,原因是系统DRI、平均时延和能耗受系统中并行执行子任务数量影响,不同工作流可并行的子任务数量不同. 随着$ {U}_{\max } $从0.5增加到0.9,在3种工作流下,系统DRI呈先降低后升高的趋势,系统可靠性呈先升高后降低的趋势. 分析原因,当$ {U}_{\max } $较低时,服务器上可容纳的任务数较少,后续任务只能向故障率较高的服务器上分配,使得系统DRI较高、可靠性较低. 随着$ {U}_{\max } $升高,服务器压力增大,导致真实故障率上升,系统DRI升高、可靠性降低. 随着$ {U}_{\max } $增大,平均时延波动下降,原因是当$ {U}_{\max } $较低时,每个服务器上所能执行的子任务数有限,需要频繁将后继任务部署在压力值合适的服务器上,增加了子任务间的通信时延. 为了保证算法的性能,本研究设定$ {U}_{\max }=0.65 $.

图 7

图 7   服务器最大压力值对算法性能的影响

Fig.7   Impact of maximum server load on algorithm performance


4.2.2. 正可调因子对算法性能的影响

LLRE通过正可调因子$ {\gamma }_{1}、 {\gamma }_{2} $量化虚拟机可靠性和预计执行时间在调度决策中的权重. 在3种工作流下改变LLRE中的$ {\gamma }_{1}、 {\gamma }_{2} $,根据系统可靠性、系统DRI、平均时延以及能耗受到的影响来选取合适的值. 服务器数量为5,故障率变化因子$ \alpha =1 $的实验结果如图8所示. 在3种工作流下,系统可靠性与平均时延呈上升趋势. 原因是$ {\gamma }_{1} $增大表示决策更偏向选择可靠性更高的虚拟机,系统可靠性与时延因此增加. 由图8(c)和图8(d)可以看出,$ {\gamma }_{1} $${\gamma }_{2} $对系统DRI和平均能耗的影响较小,仅引起小幅波动,原因是$ {\gamma }_{1} $${\gamma }_{2} $只会改变服务器上虚拟机的选择顺序,不影响边缘服务器的选择. 由此可知,合适的$ {\gamma }_{1} $${\gamma }_{2} $可以保证较高的可靠性和较低平均时延. 为了保证算法的性能,本研究设定$ {\gamma }_{1}$${\gamma }_{2} $分别为0.7、0.3.

图 8

图 8   正可调因子对算法性能的影响

Fig.8   Impact of positive tunable factor on algorithm performance


4.2.3. 不同工作流对算法性能的影响

为了研究算法适用性,在不同的工作流下评估算法性能. 在服务器数量为5,故障率变化因子$ \alpha =1 $时,不同工作流下对算法性能的影响如图9所示. 在不同工作流下,LLRE和LLRB的可靠性均能保证在较高的水平,平均时延均优于可靠性轮询、随机分配策略,略高于贪婪算法和RETO,原因是所提算法在部署时综合考虑了时延、可靠性和服务器压力值. Greedy与RETO均以最小化时延为主要优化目标,所提算法能够在保证时延相近的同时显著提升系统的整体可靠性. 能耗在本研究中仅作为约束条件,未作为优化目标,因此结果更侧重于评估算法在能耗约束下的性能表现. 图9(b)为在不同工作流下,算法对系统可靠性均衡程度的影响. 在Montage工作流下所有算法的DRI均较低,原因是该工作流并行执行的子任务较少,对服务器故障率的影响较弱. 在CyberShake和LIGO工作流中LLRE、RETO和贪婪算法的DRI较高,原因是这2种工作流中子任务并行程度较高,LLRE由于每次都选择可靠性最高的服务器,使得该服务器压力过大,导致真实故障率较高. 贪婪算法须寻找最短的执行时间,RETO须选择处理时间和带宽消耗最小的位置部署,并且2个相邻子任务被分配到相同的服务器上执行时子任务间的通信时间可以忽略,且不消耗带宽资源,导致贪婪算法和RETO倾向于将任务部署在同一服务器虚拟机上. 可靠性均衡算法通过限制服务器的最大压力值避免该问题的出现,进而保证DRI较小并且能进一步提高系统可靠性.

图 9

图 9   不同工作流对算法性能的影响

Fig.9   Impact of different workflows on algorithm performance


4.2.4. 故障率变化因子对算法性能的影响

为了研究该算法的稳定性,在不同的服务器故障率变化程度下,根据故障率变化因子的大小,对算法的性能进行评估. 在LIGO工作流下,服务器数量为5时,故障率变化因子$ \alpha $对系统可靠性、平均时延、能耗的影响如图10所示. 从图10(a)和图10(b)可以看出,当$ \alpha =0 $即服务器故障率恒定时,LLRE的可靠性最高,LLRB次之,且使用所有算法部署时系统DRI均较低. 原因是服务器故障率恒定,使用LLRE不会对服务器故障率产生影响,能保证较高的系统可靠性和较低的系统DRI. 随着$ \alpha $的增大,系统可靠性与DRI分别呈下降和上升趋势,使用LLRE、RETO与贪婪算法对系统可靠性与系统DRI的影响尤为明显,但LLRB能够保证较高的系统可靠性以及较低的系统DRI. 分析原因:$ \alpha $越大,服务器资源使用率对故障率影响程度越大,LLRE、RETO与贪婪算法没有考虑服务器压力,导致服务器真实故障率较高,可靠性轮询算法通过依次选择服务器部署,可靠性均衡算法通过限制服务器最大压力值避免了该问题的出现. 从图10(c)和图10(d)可以看出,算法的平均时延和能耗不受$ \alpha $的影响,只是在小范围内波动. 原因是服务器故障率受服务器压力影响的剧烈程度只会改变系统可靠性与DRI,所提算法以及对比算法只会根据服务器初始故障率计算能获得的可靠性值. 分析结果表明,故障率变化因子改变不会影响部署决策.

图 10

图 10   故障率变化因子对算法性能的影响

Fig.10   Impact of failure rate variation factor on algorithm performance


4.2.5. 边缘服务器数量对算法性能的影响

为了模拟实际部署中边缘节点的动态加入或退出情况,设计固定增加和随机减少共2种服务器变动策略,以验证算法的可扩展性与适应性. 在LIGO工作流下,故障率变化因子$ \alpha =1 $时,服务器数量动态增加对系统可靠性、DRI、平均时延、能耗的影响如图11所示. 随着边缘服务器数量$ {N}_{\mathrm{mec}} $从3台固定递增至8台,所有算法的系统可靠性升高,平均时延下降,且使用LLRE和LLRB优于对比算法. 原因是随着计算节点数量的增加,有更多的选项来优化系统可靠性和均时延. 从图11(b)可以看出,使用LLRB的系统DRI随着服务器数量的增加呈上升趋势,其余算法呈先上升再下降再回升的变化模式. 原因是当计算节点数量较少时,部署的位置有限,每个服务器压力均较高,系统DRI较低. 随着服务器数量增加,LLRE、RETO和Greedy未考虑服务器压力值,故障率升高,DRI较高. 中间阶段,有更多可供选择的边缘服务器,能较好地避免单个服务器压力过大的情况,进而使DRI下降. 随着服务器数量进一步增加,可供选择的计算节点较多,DRI上升. 根据实验统计,在边缘服务器数量为8时,LLRE和LLRB在系统可靠性方面分别较对比算法平均提升约0.57%和1.09%,在时延方面分别平均减少约30.06%和16.86%,具体结果如表1表2所示.

图 11

图 11   边缘服务器数量对算法性能的影响

Fig.11   Impact of edge server number on algorithm performance


表 1   边缘服务器数量对系统可靠性的影响

Tab.1  Impact of edge server number on system reliability

NmecRsys
RandomRRRGreedyLLRELLRBRETO
30.94800.96190.95510.95450.97010.9544
40.96280.96700.96170.96650.97340.9641
50.96250.96950.96310.97160.97670.9661
60.96430.96910.96520.96970.97730.9679
70.96450.96960.96920.97230.97790.9692
80.96420.96820.97020.97360.97870.9697

新窗口打开| 下载CSV


表 2   边缘服务器数量对平均时延的影响

Tab.2  Impact of edge server number on average latency

NmecTavg/s
RandomRRRGreedyLLRELLRBRETO
31.12380.48530.34440.42990.45760.4034
41.04170.49140.31090.43540.44910.3702
50.99450.49640.30440.43510.45720.3718
60.92940.48270.28180.39980.43330.3528
70.89480.47320.26980.34510.40780.3529
80.85900.47430.26140.34470.40980.3554

新窗口打开| 下载CSV


模拟实际部署中边缘节点因故障或资源回收原因而退出的场景,评估在边缘服务器数量随机减少的状态下算法的性能表现. 服务器数量动态减少对系统可靠性、DRI、平均时延、能耗的影响如图12所示. 随着边缘服务器随机减少数量$ \Delta N $从0增至4台(初始数量为8台),所有算法系统可靠性和DRI均下降,平均时延和能耗均上升. 原因是可用的计算资源减少,任务调度和资源分配的优化选项变少,系统性能下降. 可以观察到,所提算法在可靠性下降幅度上优于其他对比算法,且能保证较低的平均时延.

图 12

图 12   随机减少的边缘服务器数量对算法性能的影响

Fig.12   Impact of randomly reduced edge server number on algorithm performance


实验结果表明,本研究提出的算法具有良好的适应性,可有效应对边缘节点动态变化的场景.

5. 结 语

本研究针对边缘计算环境中存在着边缘服务器和虚拟机故障风险因素,提出可靠性增强的低时延任务部署方案,通过考虑边缘服务器和虚拟机的故障率和算力以及用户能耗需求来选择部署位置. 针对边缘服务器故障率会随压力变化的问题,提出具有可靠性均衡策略的低时延任务部署方案,通过限制服务器的最大压力值来进行任务的部署. 在3种科学工作流上的仿真实验结果表明,所提算法能够满足用户能耗需求,提高系统可靠性并优化平均时延. 研究不足之处:每个服务器的最大压力值应不同,可根据边缘服务器累积故障次数与累计执行时间来动态调整最大压力值. 未来计划1)将能耗进一步纳入优化目标,联合考虑任务执行时延、系统可靠性与能耗之间的多目标权衡关系,构建更加全面的调度模型和策略;2)引入前沿智能优化算法开展对比实验,进一步验证所提算法在更复杂优化场景下的有效性;3)尝试在真实的边缘计算环境中开展实验,深化对可靠性增强问题的研究.

参考文献

谢人超, 廉晓飞, 贾庆民, 等

移动边缘计算卸载技术综述

[J]. 通信学报, 2018, 39 (11): 138- 155

DOI:10.11896/jsjkx.250100058      [本文引用: 1]

XIE Renchao, LIAN Xiaofei, JIA Qingmin, et al

Survey on computation offloading in mobile edge computing

[J]. Journal on Communications, 2018, 39 (11): 138- 155

DOI:10.11896/jsjkx.250100058      [本文引用: 1]

CHEN L, XU Y, LU Z, et al

IoT microservice deployment in edge-cloud hybrid environment using reinforcement learning

[J]. IEEE Internet of Things Journal, 2021, 8 (16): 12610- 12622

DOI:10.1109/JIOT.2020.3014970      [本文引用: 1]

MAZLAMI G, CITO J, LEITNER P. Extraction of microservices from monolithic software architectures [C]// Proceedings of the IEEE International Conference on Web Services. Honolulu: IEEE, 2017: 524–531.

[本文引用: 1]

ARAL A, BRANDIĆ I

Learning spatiotemporal failure dependencies for resilient edge computing services

[J]. IEEE Transactions on Parallel and Distributed Systems, 2021, 32 (7): 1578- 1590

DOI:10.1109/TPDS.2020.3046188      [本文引用: 1]

KUMARI P, KAUR P

A survey of fault tolerance in cloud computing

[J]. Journal of King Saud University: Computer and Information Sciences, 2021, 33 (10): 1159- 1176

DOI:10.1016/j.jksuci.2018.09.021      [本文引用: 2]

BIRKE R, GIURGIU I, CHEN L Y, et al. Failure analysis of virtual and physical machines: patterns, causes and characteristics [C]// Proceedings of the 44th Annual IEEE/IFIP International Conference on Dependable Systems and Networks. Atlanta: IEEE, 2014: 1–12.

[本文引用: 5]

RAY K, BANERJEE A

Prioritized fault recovery strategies for multi-access edge computing using probabilistic model checking

[J]. IEEE Transactions on Dependable and Secure Computing, 2023, 20 (1): 797- 812

DOI:10.1109/TDSC.2022.3143877      [本文引用: 1]

LONG T, MA Y, XIA Y, et al. A mobility-aware and fault-tolerant service offloading method in mobile edge computing [C]// Proceedings of the IEEE International Conference on Web Services. Barcelona: IEEE, 2022: 67–72.

[本文引用: 1]

LIU H, CAO L, PEI T, et al

A fast algorithm for energy-saving offloading with reliability and latency requirements in multi-access edge computing

[J]. IEEE Access, 2020, 8: 151- 161

DOI:10.1109/ACCESS.2019.2961453      [本文引用: 1]

LIU J, ZHOU A, LIU C, et al

Reliability-enhanced task offloading in mobile edge computing environments

[J]. IEEE Internet of Things Journal, 2022, 9 (13): 10382- 10396

DOI:10.1109/JIOT.2021.3115807      [本文引用: 1]

SAMANTA A, ESPOSITO F, NGUYEN T G

Fault-tolerant mechanism for edge-based IoT networks with demand uncertainty

[J]. IEEE Internet of Things Journal, 2021, 8 (23): 16963- 16971

DOI:10.1109/JIOT.2021.3075681      [本文引用: 3]

LIU J, ZHANG Q

Offloading schemes in mobile edge computing for ultra-reliable low latency communications

[J]. IEEE Access, 2018, 6: 12825- 12837

DOI:10.1109/ACCESS.2018.2800032      [本文引用: 1]

ZHAO H, DENG S, LIU Z, et al

Distributed redundant placement for microservice-based applications at the edge

[J]. IEEE Transactions on Services Computing, 2022, 15 (3): 1732- 1745

DOI:10.1109/TSC.2020.3013600      [本文引用: 1]

TULI S, CASALE G, JENNINGS N R. PreGAN: preemptive migration prediction network for proactive fault-tolerant edge computing [C]// Proceedings of the IEEE INFOCOM 2022 - IEEE Conference on Computer Communications. London: IEEE, 2022: 670–679.

[本文引用: 1]

LONG T, CHEN P, XIA Y, et al

A deep deterministic policy gradient-based method for enforcing service fault-tolerance in MEC

[J]. Chinese Journal of Electronics, 2024, 33 (4): 899- 909

DOI:10.23919/cje.2023.00.105      [本文引用: 1]

SONG L, SUN G, YU H. An approach for fault tolerance in multi-access edge computing [C]// Proceedings of the IEEE 2nd International Conference on Deep Learning and Computer Vision. Jinan: IEEE, 2025: 1–5.

[本文引用: 1]

PARK T, YOU M, KIM J, et al

Fatriot: fault-tolerant MEC architecture for mission-critical systems using a SmartNIC

[J]. Journal of Network and Computer Applications, 2024, 231: 103978

DOI:10.1016/j.jnca.2024.103978      [本文引用: 1]

International Organization for Standardization. Road vehicles - functional safety: ISO 26262 [S]. Geneva: International Organization for Standardization, 2017.

[本文引用: 1]

BARI M F, BOUTABA R, ESTEVES R, et al

Data center network virtualization: a survey

[J]. IEEE Communications Surveys and Tutorials, 2013, 15 (2): 909- 928

DOI:10.1109/SURV.2012.090512.00043      [本文引用: 1]

XIE G, ZENG G, CHEN Y, et al

Minimizing redundancy to satisfy reliability requirement for a parallel application on heterogeneous service-oriented systems

[J]. IEEE Transactions on Services Computing, 2020, 13 (5): 871- 886

DOI:10.1109/TSC.2017.2665552      [本文引用: 1]

BURKE E K, KENDALL G. Search methodologies: introductory tutorials in optimization and decision support techniques [M]. Boston: Springer, 2014: 273–316.

[本文引用: 1]

TONG Z, DENG X, CHEN H, et al

DDMTS: a novel dynamic load balancing scheduling scheme under SLA constraints in cloud computing

[J]. Journal of Parallel and Distributed Computing, 2021, 149: 138- 148

DOI:10.1016/j.jpdc.2020.11.007      [本文引用: 1]

GABI D, ISMAIL A S, ZAINAL A, et al

Orthogonal Taguchi-based cat algorithm for solving task scheduling problem in cloud computing

[J]. Neural Computing and Applications, 2018, 30 (6): 1845- 1863

DOI:10.1007/s00521-016-2816-4      [本文引用: 1]

KHATAVKAR B, BOOPATHY P. Efficient WMaxMin static algorithm for load balancing in cloud computation [C]// Proceedings of the Innovations in Power and Advanced Computing Technologies (i-PACT). Vellore: IEEE, 2018: 1–6.

[本文引用: 2]

邵苏杰, 吴磊, 钟成, 等

面向多工作流的基于容器的边缘微服务选择机制

[J]. 电子与信息学报, 2022, 44 (11): 3748- 3756

DOI:10.11999/JEIT220267      [本文引用: 1]

SHAO Sujie, WU Lei, ZHONG Cheng, et al

Container based microservice selection for multi-workflow in edge computing paradigm

[J]. Journal of Electronics and Information Technology, 2022, 44 (11): 3748- 3756

DOI:10.11999/JEIT220267      [本文引用: 1]

/