刘子源 胡永庆 杨含 秦广军 戴庆龙
摘 要:目前,研究人員着眼于车载边缘计算(vehicular edge computing,VEC)环境下高效应用和资源调度策略的研究,然而,这些应用和策略的实机验证往往受限于成本和时间,无法快速有效地进行。边缘/雾计算仿真器如iFogSim2的出现降低了实验成本,然而,高速移动车辆的连接切换和资源分配需求对边缘/雾计算仿真器在VEC下应用提出了挑战。因此,改进了iFogSim2,设计了支持高速移动的VEC环境仿真器VECSim。集成开源基站数据并构建车辆轨迹数据集,以便研究人员专注于资源分配策略。首先,为了简化实验步骤,改进了移动轨迹数据解析模块并适配了微观交通仿真软件Simulation of Urban Mobility (SUMO)生成的车辆轨迹数据。其次,基于分布式数据流模型对VEC下的分布式应用进行建模,并提供了服务迁移基准策略算法。此外,VECSim还引入了时间性能优化方法,通过并行化操作,加速仿真事件处理,从而提高了仿真工具的时间性能。实验表明,相比于iFogSim2中同类的服务迁移算法,提出的服务迁移算法在大规模机动车轨迹数据集验证下表现出良好的稳定性,时间性能优化方法在执行时间上取得了5.3%的性能提升。代码开源地址:https://github.com/LiuZi-yuan-CS/VECSim。
关键词:车载边缘计算;边缘计算仿真;服务迁移;车联网;SUMO
中图分类号:P315.69 文献标志码:A 文章编号:1001-3695(2024)05-028-1480-09
doi: 10.19734/j.issn.1001-3695.2023.09.0429
VECSim: improved iFogSim2 modeling and simulation simulator for vehicular edge computing
Abstract:Currently, researchers are focusing on efficient applications and resource scheduling strategies in vehicular edge computing (VEC) environments, however, the real-world validation of these applications and strategies is often limited by cost and time and cannot be performed quickly and efficiently. The emergence of edge/fog computing simulators such as iFogSim2 reduces the cost of experiments. However, the connection switching and resource allocation requirements of high-speed moving vehicles pose challenges to the application of edge/fog computing simulators under VEC. Therefore, this paper improved iFogSim2 by designing VECSim, a VEC environment simulator that supported high-speed mobility. It integrated open-source base station data and constructed vehicle trajectory datasets so that researchers can focus on resource allocation strategies. Firstly, to simplify the experimental steps, this paper improved the mobile trajectory data parsing module and adapted the vehicle trajectory data generated by Simulation of Urban Mobility (SUMO), a microscopic transportation simulation software. Secondly, this paper modeled distributed applications under VEC based on the distributed data flow model and provided a ser-vice migration benchmark policy algorithm. In addition, VECSim introduced a time-performance optimization method to accele-rate the simulation event processing by parallelizing the operation, which improved the time performance of the simulation tool. Experiments show that compared with similar service migration algorithms in iFogSim2, the proposed service migration algorithm exhibits good stability under the validation of large-scale motor vehicle trajectory dataset, and the time-performance optimization method achieves a 5.3% performance improvement in execution time. Code is available: https://github.com/LiuZi-yuan-CS/VECSim.
Key words:VEC; edge computing simulation; service migration; IoV; SUMO
0 引言
近年来,车联网(Internet of Vehicles, IoV)和多接入边缘计算(multi-access edge computing, MEC)紧密融合,催生了一种新的计算范式——车载边缘计算(vehicular edge computing, VEC)。VEC通过促进车辆之间的协作以及车辆与智能交通基础设施的交互,如在拥堵的交通环境中车辆间共享交通信息以共同规划最佳路径以减轻交通堵塞,智能交通基础设施可与车辆实时通信,向车辆提供路况信息、信号灯状态等数据,并同时从车辆收集信息以改进城市交通管理。因此,VEC能够有效应对因车辆高度机动性所引发的复杂实时计算问题[1]。目前,广泛的研究[2~5]聚焦于VEC环境中的高效应用和资源调度策略。可扩展的边缘计算设备在验证这些策略方面起着关键作用,但高昂的部署成本和复杂的部署流程给研究人员带来了一系列挑战和限制[6]。
随着边缘/雾计算仿真器的出现,降低了研究人员的实验测试成本。表1对近期聚焦于边缘/雾计算仿真器的工作进行了总结。YAFS[7]是一个用于边缘/雾计算下的仿真工具,其专注于模拟分布式计算环境中的资源分配、任务调度和网络通信等方面的问题。ECSNeT++[8]是基于OMNeT++[9]/INET[10]的边缘/雾计算仿真工具,模拟了分布式流处理(distributed stream processing, DSP)应用程序在边缘/雾计算环境中的执行过程,并为DSP应用程序提供了多种配置。上述两种仿真工具均不支持终端移动。STEP-ONE[11]是对ONE(Opportuni-stic Networking Environment)仿真器[12]的扩展,STEP-ONE继承了ONE对移动自组织网络(mobile Ad hoc network, MANET)和机会式网络仿真的支持,在此基础上构建了支持移动性的边缘/雾计算仿真环境,并对真实世界的移动轨迹和基站数据集进行了支持。然而,缺乏移动性管理的默认策略和模块化架构的系统建模,使得STEP-ONE仍然存在缺陷。此外,上述三种边缘/雾计算仿真工具以非CloudSim框架作为核心框架开发,其存在兼容性和扩展性不佳、研究人员的认可度不广的问题[13]。
CloudSim[14]是由墨尔本大学云计算与分布式(The Cloud Computing and Distributed Systems, CLOUDS)实验室开发面向云计算环境流行仿真框架,它基于SimJava[15]离散事件仿真框架编写。CloudSim虽然是一款常用的云计算环境仿真框架,但由于边缘/雾计算环境与云计算环境的相似性,在早期没有边缘/雾计算环境仿真工具时,CloudSim凭借其良好的扩展性和较低的二次开发成本,成为了边缘/雾计算研究人员主要使用的仿真工具。随着雾计算兴起,CLOUDS实验室基于CloudSim的核心,提出了用于雾计算中资源分配、任务调度和网络通信问题的iFogSim1[16]。iFogSim1引入了多层级模型,可以模拟多个层次的计算节点,支持虚拟机和容器的建模,使用户可以模拟不同级别的资源虚拟化。iFogSim1还允许模拟固定终端设备和边缘节点之间的实时通信和数据传输,以评估通信延迟和网络拥塞。然而,缺乏移动性支持给研究人员在进行移动场景下的雾计算仿真评估带来了困难。同时期基于CloudSim提出的EdgeCloudSim[17],也因为缺乏移动性的支持和较简单的通信环境建模而表现不佳。此外,在工作流调度和雾计算结合领域,FogWorkflowSim[18]利用了WorkflowSim[19](基于CloudSim专注于云计算工作流调度的仿真工具)和iFogSim1对工作流调度和雾计算的计算优势,实现了边缘/雾计算环境下的工作流调度和优化仿真,虽然上述工作推动了雾计算仿真领域的领域,但仍然没有解决移动性支持问题。
尽管iFogSim1等雾计算仿真工具可以完成边缘计算环境下的仿真需求,但是,移动性作为MEC最重要的特性亟待仿真工具的支持。Qayyum等人[20]开发了FogNetSim++,它基于CloudSim和iFogSim1开发,提供了开发定制移动模型的终端。但FogNetSim++的移动性支持系统与核心仿真引擎耦合过高,因此使用时需要对工具进行过多的修改。Jha等人[21]提出的基于CloudSim的IoTSim-Edge,设计了支持移动场景的边缘/雾计算仿真工具,针对交通场景,IoTSim-Edge还提供了一个在一条高速公路上车辆使用路侧单元节点(roadside unit,RSU)协同通信完成自动驾驶的示例。然而,缺乏城市场景下的移动轨迹数据集和模块化应用建模能力,IoTSim-Edge无法大面积构建多车移动对VEC环境的影响。基于iFogSim的MobFogSim[22]扩展iFogSim组件的基本功能,以支持雾/边缘计算中的车辆终端移动。然而,MobFogSim的移动支持只停留在处理网关和云数据中心层面,而不是分层的边缘/雾基础设施。IoTNetSim[23]对iFogSim进行了移动性扩展,可以对不同的物联网设备及其细粒度细节进行建模,还支持物联网设备在三维空间中的移动性。然而,它缺乏移动服务迁移的基准策略。SatEdgeSim[24]则基于iFogSim开发了面向卫星移动的边缘计算环境,由于卫星场景下卫星轨道相对固定,缺乏自定义的移动支持。为了弥补上述工作的不足,iFogSim2在iFogSim和MobFogSim的基礎上,设计了分层的MEC计算的架构[25],引入了自定义的移动支持、基于分布式应用的服务迁移基准算法以及将微服务概念应用于边缘节点。此外,数据集的稀缺也构成了目前VEC仿真中面临的挑战,其主要体现在基站数据集和微观交通数据的稀疏性。在基站数据集方面,目前,存在一些常见的数据集,如EUA数据集[26]、上海电信数据集[27,28]等。它们在一定程度上填补了基站数据集的稀疏性。在微观交通数据集方面,主要的解决方案是利用微观仿真交通软件Simulation of Urban Mobility (SUMO)[29]来获取微观交通数据。SUMO是一款开源、微观、空间连续和时间离散的微观交通流仿真平台。它可以用来模拟大规模道路网络上的微观交通流,支持对不同路网数据源文件的解析、不同输入方式下的车辆路由生成,以及对整个城市交通流量的高性能模拟。
目前,VEC环境下仿真仍然面临如下问题:
a)高速移动车辆引起的连接切换和资源分配的模拟需求。
b)由于数据隐私性,车辆轨迹数据和基站部署数据的缺乏限制了仿真实验。
c)缺乏适用于大规模移动轨迹数据下的服务迁移算法。
本工作以iFogSim系列仿真工具的流行度和扩展性为考量,针对iFogSim2[30]在VEC场景下的仿真存在节点资源分配方案不合理,移动数据解析加载支持不完善,分布式服务迁移算法不适用。因此,本文工作对iFogSim2仿真器进行了改进,设计了面向车载边缘计算的建模与仿真模拟工具VECSim。VECSim通过模块的扩展、修改和引入,实现了高速移动车辆引起的连接切换和资源分配的响应。VEC在继承了iFogSim2对开源基站部署数据集成的基础上,还对现实世界微观交通数据的收集和采样,并使用微观交通仿真软件SUMO[29]构建了车辆轨迹数据集。这些数据集的整合有助于减轻VEC仿真实验的限制,使研究人员能够更专注于VEC下的资源分配和调度策略研究。此外,为了更方便地接收由SUMO仿真输出的浮动车数据(floating car data,FCD),VECSim中的数据解析模块提供了对SUMO生成的浮动车轨迹数据的适配和解析支持,进一步简化了研究人员的实验流程。VECSim采用了基于分布式数据流(distributed data flow, DDF)模型[31]对VEC环境下常见的分布式应用进行建模。针对VEC场景中分布式应用的服务迁移问题,VECSim提供了相应的基准策略算法。通过使用集成的基站数据和车辆轨迹数据,将该算法与iFogSim2中提供的同类型的基准算法进行了比较。研究结果显示,VECSim中提供的服务迁移基准算法在大规模车辆轨迹数据集的验证下表现出了良好的稳定性。此外,对于CloudSim核心框架在处理仿真事件时的效率问题,VECSim引入了一种时间性能优化方法,通过设计FutureManager类实现了对Future队列的并行化操作,加速了仿真事件的处理,从而提高了仿真工具的时间性能。实验证明,时间性能优化方案使得VECSim仿真执行时间减少了5.3%。
1 系统设计与实现
针对目前iFogSim2不适合VEC环境下仿真的问题(即资源分配问题、数据解析问题和服务迁移问题),接下来将对引言中提到的iFogSim2在VEC环境下仿真的功能问题进行详细解释并给出解决方案。VECSim的整体架构如图1所示。彩色部分表示对iFogSim2中的组件的扩展与修改。
a)资源分配问题:iFogSim2仿真下的计算节点的资源分配策略是在仿真初始化阶段,将所有车辆在仿真期间所需要占据的计算节点资源全部进行分配,这导致了实际上还未开始仿真的车辆挤占了正在仿真车辆所需的计算节点资源,这一情况的出现导致了仿真与现实世界的事件发生流程,其次,这会导致用户错误地认为在仿真过程中节点的资源已被耗尽,他们会修改节点的资源初始化参数,以确保这些节点在迁移模块时有足够的资源使用,而不考虑策略本身的问题。解决方案:(a)需要对齐CloudSim底层的时间片与数据集中的轨迹时间戳;(b)按照数据集中每台车辆开始仿真的时间为其分配计算节点资源。
b)数据解析问题:iFogSim2中的移动数据加载实现为一次性加载,数据载入后,会将这些数据交由核心模块处理。然而,在初始化阶段将移动数据一次性加载会出现数据量过大导致底层的事件队列排序时间过长,这是因为一次性加载的移动数据需要按照时间戳进行排序,以确保事件按正确的时间顺序被处理。随着数据量的增加,排序所需的时间也会相应增加,从而影响了系统的初始化速度。其次,在硬件配置较低的设备上,一次性加载大量数据可能会导致内存溢出问题。这是因为设备的内存资源有限,无法容纳所有的移动数据。当内存不足时,系统会崩溃或性能严重下降,从而影响用户的使用体验。此外,缺乏对SUMO输出的FCD适配,使用SUMO仿真的车辆轨迹数据需要二次处理。解决方案:(a)实现移动数据解析的懒加载;(b)构建适配SUMO仿真输出数据格式的组件。
c)服务迁移問题:iFogSim2中的服务迁移算法实现不适用VEC环境仿真,具体表现在服务迁移过程中,其并未区分服务实例与车辆的从属关系,这导致在服务迁移过程中对车辆所属的服务实例操作混乱,最终导致了仿真的计算结果错误。此外车辆仿真生命周期结束后,CloudSim核心没有及时停止对仿真结束车辆的仿真事件轮询,导致不必要的运行开销。解决方案:(a)明确服务实例和车载应用的对应关系;(b)及时分配和回收服务实例所占据的计算节点资源;(c)每台车辆仿真结束后,CloudSim核心及时停止对结束仿真车辆的仿真事件轮询,降低仿真开销。
本章还将介绍和使用EUA数据集[26]和墨尔本市政府提供的2014—2017年的墨尔本市主干道车流统计数据(https://data.melbourne.vic.gov.au/explore/dataset/traffic-count-vehicle-classification-2014-2017/information/)在通过数据处理后构建的车辆轨迹数据为例构建了墨尔本市中心商务区的VEC场景,以补充VECSim的设计实现。
1.1 数据集介绍
1.1.1 EUA数据集
EUA数据集收集了来自澳大利亚墨尔本市和悉尼市CBD区域的基站信息,包含了基站标识、纬度、经度、许可区域、邮政编码。该数据集来源于澳大利亚通信及传媒管理局。基站可视化数据如图2(a)所示(见电子版)。
1.1.2 车辆轨迹数据集
车辆轨迹数据集是从墨尔本市政府提供的一组真实世界的交通数据中提取的。这组真实世界的交通数据记录了2014—2017年墨尔本市道路每小时通行的汽车数量,并根据车辆类别分为13类。
基于墨尔本市政府的统计数据,本文以来自墨尔本市CBD区域主干道的数据为基准,配合采集来自OpenStreetMap[32]的路网地图,使用SUMO仿真收集了时长为7天的墨尔本市CBD区域的私家车轨迹数据,图2(b)是随机选取车辆轨迹数据集中的5条轨迹切片的可视化,数据处理流程如图3所示。
1.2 场景构建
基于上述两个数据集,本文构建一个常见的VEC场景来阐述VECSim的设计与实现。使用三层式架构将区域内部的基础设施分为“控制器层(云层)-固定层(边缘层)-车辆层”[33],其中EUA数据集用于标注边缘层基站位置并根据基站的地理分布划分为12个区域,其中每个区域内部有一个代理节点作为区域内的通信节点负责与上层的云中心节点进行通信,区域内部的网关节点与代理节点直连,同时,网关节点也会与通信范围内行驶的车辆(由车辆轨迹数据集驱动)进行连接,以保证车载任务和通信能够在区域内不间断执行。基站的划分如图2(c)所示,其中蓝色节点表示区域内代理节点,网关节点用红色表示(见电子版)。
1.3 核心模块
VECSim继承了CloudSim的核心模块,核心模块的物理逻辑来自于SimJava框架对于离散事件仿真的建模,其包括以下三个方面:
a)事件定义:描述系统中发生的事件类型,包括事件的触发条件和处理行为。
b)模拟实体:表示仿真系统中的各种实体或代理,这些实体会根据特定的规则参与事件和过程。
c)交互过程:描述实体之间的相互作用、消息传递、状态变化等,通常通过事件来触发。
在核心模块中,使用了三个执行单元类(即SimEntity、SimEvent和VM)以及两个事件队列类(即Future和Deferred)来对上述物理逻辑进行业务逻辑的表达。SimEntity类是所有物理设备的父类,它作为执行单元的主体元素,在每个时间片下执行其相关的SimEvent所表示的仿真事件。在执行SimEvent所对应的事件时,来自SimEvent对象派生的任务或资源分配单元的VM类将占用相应SimEntity对象所拥有的资源,同时SimEvent对象可能在这次事件执行过程中派生新的SimEvent对象。因此,核心还存在两个SimEvent队列(为了保证操作效率,其本质是基于红黑树的有序集合):Future和Deferred,用于确保事件的执行时间顺序正确。图4展示了一次时间片下SimEntity执行事件的过程。
其主要流程如下:
a)Future队列将队列中执行时间为当前时间片的事件(SimEvent实例)发送给Deferred队列管理,并将这些已发送的事件在队列中删除。
b)Deferred队列在接收到来自Future队列分发的事件后,将这些事件依次发送给所属执行SimEntity实例。
c)SimEntity收到来在Deferred队列分发事件后,CloudSim依照SimEntity的编号顺序依次驱动所有的SimEntity实例执行属于其自身的待执行事件。
d)SimEntity在执行事件时,首先会判断该事件是否与其他SimEntity实例发生了交互,若发生交互,则先执行交互事件,反之,判断是否发生了任务派生。
e)SimEntity将判断执行的SimEvent事件是否触发任务派生(任务派生是一种特殊的交互事件,该事件在SimEntity之间发生,任务的承载单元为VM实例),若触发,接收任务的SimEntity则执行相应任务资源分配请求。
f)SimEntity将判断执行的SimEvent事件是否会派生新的SimEvent事件。如果派生新的事件,则依据派生事件的执行时间选择交由Future队列或Deferred队列管理,并最终完成一次时间片下的事件仿真。
VECSim的核心模块中除了基于CloudSim框架的iFog-Sim2的核心外,本工作扩展设计了Subject和Observer接口。这两个接口可以实现时间片监控逻辑,对现实世界事件的发生进行补充建模。由于在现实世界中,绝大多数车輛只会在驾驶阶段或需要服务时请求访问在线服务,在车辆熄火后或者驾驶员和乘员不需要服务支持时,保持车载服务在线是不合理的。然而,在iFogSim2仿真流程中,其分布式应用的模块分配策略在仿真初始化阶段就执行了所有的任务派生事件,这使得本该在其他时间片下执行的VM对象(资源或任务)在初始化阶段就已经被分配给了对应的SimEntity,这显然是不合理的。为了实现上述逻辑,就需要监控CloudSim中的时间片变量,通过将当前时间片与车辆运动轨迹数据集中的时间戳进行比较以确认车载服务是否需要离线或确定车辆是否已驶离区域服务区(图2(c)中灰色遮罩区域)。然而,经过多次迭代后的CloudSim核心功能的耦合度较高。直接修改CloudSim核心代码不符合开放-封闭原则[34]。此外,考虑到VECSim的可扩展性,VECSim引入观察者模式,设计了Subject和Observer接口。实现了对时间片变量的监控,通过这种方式从底层以较少的侵入内容实现了资源分配问题中的解决方案。如果想要更细的细粒度变量监控或捕获某些变量的状态,只需实现上述接口,而不会破坏CloudSim的核心功能。
1.4 物理设备
物理设备模块用于模拟真实世界的物理设备以及分布式数据流的传输。在VEC的三层式架构中,包括“控制器层(云层)-固定层(边缘层)-车辆层”,不同类型的节点都被FogDevice所统一表示。对于车辆层,VECSim进行了高度的抽象,使用FogDevice来表征车辆在VEC环境中的特性,并将移动控制规划交由移动管理模块和控制器模块来控制。而终端上的传感器和执行器则分别通过Sensor和Actuator类进行表示。Tuple类则用于表示传感器-设备、设备-设备和执行器-设备之间的数据包传输。
此外,VECSim扩展了原始的物理设备类方法。对于FogDevice、Sensor和Actuator类,重写了shutdownEntity方法,结合2.3节中CloudSim核心的时间片监控方案,以确保当设备不再需要进行仿真时底层核心会将其置为未激活状态。在轮询每一个实体时,底层会跳过未激活状态的实体,这一方法与原有的在仿真結束时一次性停止所有实体设备模拟的逻辑相比,不仅更符合实际运行逻辑,还减少了每个时间片下不必要的仿真开销。此外,还对这三个类中的VM对象的分配和回收方法进行了相应的补充和校正,以确保在仿真过程中的流程正确性。
1.5 分布式应用
随着边缘/雾计算的兴起,分布式应用程序已经成为了一个关键组成部分。这些分布式应用程序不仅能够以有向图的形式表示数据传输关系,还可以作为资源分配策略、服务迁移策略和任务卸载策略的载体[13]。由于VEC中的服务和计算任务具有较强的分布式特征,而车载智能应用也以分布式应用的形式不断发展,所以,VECSim继承了iFogSim2中的分布式应用模型架构,这使得它能够轻松测试各种策略以评估性能。在分布式应用模块中,Application被视为分布式应用,而AppModule则继承自VM类,不仅表示应用服务中不同功能的模块,还表示了该模块在物理设备上所需的资源占用情况。此外,AppEdge用于表示数据在AppModule之间的数据传输流向和数据大小,它包括了一个Tuple对象,并记录了发送AppModule和接收AppModule的信息。分布式应用模块提供了相应的接口和实现以辅助用户设计和创建具体仿真的应用,一旦创建成功,这些应用将由Controller进行统一管理,这种分布式应用程序的建模方法为VE仿真提供了灵活性和可扩展性。
1.6 移动数据解析和管理
微观交通中个体车辆轨迹的隐私性和敏感性导致车辆移动轨迹数据在VEC环境仿真中的稀缺性。因此,VECSim利用SUMO构建了符合真实交通场景的车辆移动轨迹数据,以推动VEC仿真的进行。其输出的FCD可以记录每个时间戳下正在执行交通仿真车辆的轨迹信息。为了在VECSim中有效使用FCD数据,VECSim构建了数据解析模块DataParser,它将SUMO仿真输出的FCD数据按照车辆唯一编号解析成独立的CSV格式文件。此外,为了与CloudSim框架核心仿真机制相适配,VECSim还设计了RealTimeLocation类,每个RealTime-Location实例代表某一台车辆在某个时间步下的坐标信息,并以队列的形式存储一组RealTimeLocation实例,以记录单台车辆的移动数据。
然而,处理大规模高采样频率和高速度的车辆移动轨迹数据时,采用全加载模式会导致底层事件队列排序时间过长和内存溢出问题。因此,VECSim对DataParser组件进行了扩展,实现了移动数据的懒加载,即只有在需要使用车辆的移动轨迹数据时才执行数据加载操作。DataParser通过读取每台车辆的开始仿真时间和结束仿真时间,并以哈希表的形式存储车辆生命周期以进行预处理操作。当时间片轮转到某台车辆的生命周期时,通过懒加载形式完整读取该车辆的移动数据,将其转换为一个RealTimeLocation实例队列,并向CloudSim核心发送包含了RealTimeLocation实例队列中第一个RealTimeLocation实例的移动管理事件。然后将这一队列打包交由Controller管理和控制,在移动事件需要执行时再向事件队列进行发送,以减少底层事件队列的排序时间。
1.7 控制与策略
车辆的高移动性会影响网关节点的计算效率,尤其是在频繁切换接入节点时,导致网络拓扑结构频繁变化。这就要求应用程序服务从一个计算节点迁移到另一个节点,以确保服务质量。服务迁移操作取决于以下三个方面。
a)车辆的位置。
b)车辆移动轨迹表或车辆移动的速度和方向,用于计划或预测下一个迁移节点。
c)更好的迁移算法来计算最佳迁移路径,减少迁移时间和延迟。
为了解决VEC环境下常见的服务迁移问题,在控制与策略模块中,设计了分布式应用模块部署策略,以及移动性的服务迁移算法,Controller类实现了Observer接口来监控模拟时间片,因此当模拟时间片运行到每台车辆的模拟时间开始的前一个时间片时,Controller类将从CloudSim核心中收到通知,从DataParser提供的2个关于车辆的生命周期表中找到需要启动的车辆。同样,当模拟时间片运行到每台车辆的模拟时间结束的后一个时间片时,Controller也会停止需要仿真的车辆。由于这两个表由哈希表组成,所以查找效率为O(1),这减少了在模拟中寻找等待启动或销毁的车辆所需的时间。每次车辆启动后,Policy类将为车辆的分布式应用模块进行部署,模块部署策略在算法1中描述。
模块部署策略确保了每个分布式应用模块的正确部署,并且每个车辆设备上的分布式应用模块记录也将为后续由于车辆移动而进行的模块迁移提供唯一记录和上下文关系。模块部署策略需要启动的模拟车辆名称列表Vn作为输入参数。分布式应用模块部署过程如下(为了方便表示,算法1使用Java中面向对象的思想进行展示):
算法1 分布式应用模块部署策略
初始化:在执行开始,需要重置上一次运行该流程时使用的中间参数(第1行)。然后,执行getLeafToRootPaths方法计算每辆车到云节点的多跳通信链路,并用P记录(第2行)。
模块预分配:在这个阶段,它将遍历P中的每个多跳通信链路p,然后,分布式应用程序模块将在p中的不同设备上进行分配(第3~5行)。模块部署规则是根据设备是否具有相应的承载能力放在车辆、网关节点、代理节点和云节点上。
模块部署:上一阶段分配的模块将在该阶段生成模块实例,并将其放置在相应的物理设备上。遍历P中的每一个多跳通信链路p,vid记录每个多跳通信链路p中的车辆唯一标识(第7行)。为了获得模组和设备之间的对应关系,还需要迭代p和在预分配阶段分配给did(多跳通信链路p上迭代的节点标识)的模组列表M(第9行)。接下来,为设备did部署模块模组实例并记录模组实例和部署设备的映射关系(第11、12行)。最后,记录每个车辆的分布式应用程序模块的部署关系(第15行)。
算法分析:分布式应用模块部署策略的主要计算操作时间集中在第6~16行,因此三个循环嵌套带来O(P×p×M)的时间代价,其中P与当前时间片下需要启动仿真的车辆数相关,p与区域内的节点层数相关,M与分布式应用模组的数量相关,因此具有多项式复杂度。
当车辆开始仿真,车辆移动驱使车辆不断切换与其连接的网关节点,产生了服务迁移需求,通过移动管理和服务迁移算法选择最佳的接入网关节点以获得最佳延迟代价并保证服务质量。在每次节点切换时,需要将分布式应用模块从原网关节点(迁出节点)迁移到新网关节点(迁入节点)这也意味着需要释放迁移节点中分布式应用模块占用的资源,并将迁移节点的资源分配给即将到来的分布式应用模块。Controller类中的移动管理和服务迁移算法实现了车辆在移动过程中切换网关节点和迁移模块的过程。该程序以车辆m和SimEvent触发的时间戳t为输入参数(第1行),其流程如下(为了方便表示,算法2使用Java中面向对象的思想进行展示)。
初始化:在该阶段,算法2执行了移动管理必要的初始化。LH和DP包含移动管理所需的必要计算函数,并且存储车辆移动轨迹的数据(第1、2行)。RF是一个参考对象,包含用于数据读取和移动管理的静态参数(第3行)。nextRTL是m的下一时间步下的轨迹数据,当模拟时间片切换时,DP会自动读取该数据(第5行)。P是上文提到的分布式应用模块部署策略,它记录模块实例和部署设备之间的映射关系,以确保移动管理前后的数据一致性,并避免模拟中出现异常(第5行)。pold和G记录当前m接入的网关节点(迁出节点)和所有网关节点的列表(第6、7行)。Dprev是上一次移动时m与pold之间的距离,该距离用于帮助m找到新接入的网关节点(迁入节点)(第8行)。
寻找迁入节点:算法初始化后,由于m的本次移动,需要开始寻找连接到m的迁入节点pnew。对G进行迭代以计算连接到每个网关和车辆的距离d(第9、10行)。将d与Dprev和网关节点的通信范围(为了简便计算,所有的网关节点的通信范围是相等的)进行比较,以寻找迁入节点pnew(第11~15行)。
模块迁移:如果pold≠pnew,则意味着应该执行模块迁移。首先,找到部署在pold上且属于m的分布式应用程序模块列表Lmi(第17行)。然后,确定pold和pnew之间的传输路径。它将找到一个直接或间接连接pold和pnew的公共节点a(第18行),从pold到a和a到pnew的多跳通信链路构建了应用模块的迁移路径。最后,迭代Lmi,pold发送需要迁移的应用模块并释放占用的资源,pnew則接收pold发送的应用模块并为其分配计算资源。同时,内置函数将计算并记录此次迁移成本(第19~22行)。
更新状态:应用模块迁移后,m接入到pnew(第23行)。
通知模拟引擎:经过以上4个阶段,这次m的移动性管理已经基本完成。如果车辆存在下一次的移动,将nextRTL和事件类别Tag以事件形式发送给底层引擎,以建立m的下一次移动管理和服务迁移(第26行)。
算法2 移动管理和服务迁移算法
算法分析:算法2是VECSim中移动管理和服务迁移算法。与iFogSim2中的同类算法相比,算法2解决了节点分配给迁出模块的资源没有释放的问题,在iFogSim2中由于迁出模块的资源没有释放,并且随着模拟的进行,来自其他车辆的分布式应用模块可能将继续迁入到同一节点中并占用资源。然而,节点未能释放迁出模块占用的资源,最终会导致节点没有可用资源分配的情况。通过完善服务实例和车载应用的对应关系,在车辆移动而产生的服务迁移时及时分配和回收服务实例所占据的计算节点资源,算法2有效解决了上述问题。算法2的第9~15行,存在O(G)次迭代,其中G表示所有网关节点数量。对于寻找公共节点a的第18行,本质是在查找两个叶子节点的最近共同祖先,因此,时间代价为O(|Paold|+|Panew|),其含义是从Pold到a的多跳通信链路(表示为|Paold|)和从Pnew到a的多跳通信链路(表示为|Panew|)距离之和。对于第19行需要迁移的模块迭代,其消耗是O(Lmi),Lmi是待迁移模块列表。由此可以得出,算法2以多项式时间代价执行移动管理和服务迁移算法。
2 仿真时间性能优化
2.1 仿真性能限制分析
在第1.3节中,已经详细阐述了CloudSim核心框架如何使用Future和Deferred队列来确保仿真事件的顺序执行。然而,这种控制流程对于仿真的时间性能并不是十分友好。在执行过程中,Future队列需要频繁执行删除操作,即删除已经分发给Deferred队列的SimEvent实例,并且需要插入执行时间不在当前时间片下的派生事件SimEvent实例。尽管,红黑树结构已经将对树插入、删除操作的时间复杂度控制在O(log n),然而,大量的插入和删除操作所带来的时间代价极为庞大。此外,CloudSim的仿真流程是串行的,这意味着必须等待大量的删除和插入操作完成后,仿真才会继续进行。根据实际观察和流程分析,在一次时间片下的仿真过程中,大约有80%的派生事件都需要被插入到Future队列中。值得注意的是,派生事件插入Future队列的这一过程并不会影响一次时间片下仿真的顺序执行。这在一定程度上对仿真执行效率产生了一定的影响。
2.2 时间性能优化设计
为了提高仿真的时间性能,VECSim设计了一种时间性能优化方法,在核心模块中引入了FutureManager。这一改进使得新的派生事件插入Future队列的操作可以并行进行。Future-Manager是Future类的高级封装,提供了Future类所有方法的高级形式,以确保在并发运行期间的数据同步。在Future-Manager类中,有两个缓冲区空间,用于记录需要插入到Future类或从Future类中删除的事件。此外,设计了两个子线程,分别是AddThread和DeleteThread,它们负责监视这两个缓冲区空间,通过判断缓存区是否已填满。一旦缓冲区填满,它们会执行向Future类插入事件或从Future类删除事件的操作。这一并行化的改进有助于提高仿真的执行效率,如图5所示。
3 仿真实验与结果分析
在本章中将采用一个常见的VEC案例来验证VECSim对VEC环境的支持。车载智能语音助手是一种常见的车载功能,其允许驾驶员或乘员以自然语言的方式与车载智能系统沟通,实现操作车辆的功能设备或控制车载应用[35]。本案例将使用1.1节提及的EUA数据集和车辆轨迹数据集以确保实验仿真的真实性和可靠性。案例实施后,本文对使用能耗和网络使用量进行了评估。能耗的计算是基于节点空闲和繁忙功率使用情况而确定的,网络使用量是基于模拟期间内数据在整体区域网络内传播的数据量来计算的。该实验仿真以相同的参数在iFogSim2上运行了这个案例,并将结果进行了比较。结果表明,在大规模的机动车轨迹数据集验证下VECSim具有良好的稳定性表现。
3.1 车载智能语音助手应用模型
车载智能语音助手通过理解自然语言形式的命令,而无须依赖预定义的关键词进行用户培训。然而,这种形式需要更多的计算资源来处理语音命令,而且语音指令处理在VEC场景下是一种可卸载的终端任务[36]。因此,考虑网关节点上放置语音命令处理模块来处理用户的语音命令,使用代理节点作为服务迁移的中继站是可行的方案。
车载智能语音助手被分为三个模块,为了可视化符合分布式应用程序的架构形式,使用有向无环图来表示车载智能语音助手的应用程序模型,如图6所示。其模块的组成如下。
a)收发模块:收发模块部署在车辆上,用于接收来自麦克风(传感器)的数字声音信号,该信号通过车辆的无线通信设备发送到位于RSU(网关节点)上的声音命令处理模块。同时,它还负责接收声音命令处理模块解析处理后的执行指令,这些执行指令由收发器模块接收,然后传输到车辆上的命令触发器(执行器),并执行相应的指令。
b)语音命令处理模块:语音命令处理模块部署在RSU上,语音命令处理模型是车载智能语音助手应用模型中的主要计算模块,它包括一个人工智能(AI)模型,该模型通过实现降噪、语音识别、自然语言处理和指令匹配,将语音命令转换为机器可理解的执行命令。此外,语音命令处理模块在转换过程中收集中间数据,中间数据经过数据脱敏后将转换为连续学习数据,使位于云节点上的语音识别优化模块能够通过不断优化AI模型来提高服务质量。
c)语音识别优化模块:语音识别优化单元接收来自不同RSU中的语音命令处理模块的数据。它通过持续学习技术对人工智能模型进行了周期性优化,以提高服务质量。它由于延迟不敏感,可以放置在云节点上。
3.2 仿真环境和参数设置
仿真环境包括两部分数据集的导入。EUA数据集用于标记网关节点和代理节点位置,依照第2.2节提到的基站划分方式,在墨尔本中央商務区设置了118个RSU(网关节点)。这些RSU被划分为12个区域,每个区域设置1个代理节点。
此外,代理节点负责云集群和所属区域内网关节点的通信与模块转发的中继站功能,共12个代理节点。此外,在墨尔本中央商务区设置云集群。RSU可以通过其块中的代理节点与云集群进行交互。在车辆轨迹数据集中,选择了100和340条车辆轨迹(仿真时长为5 790 s和11 640 s)来测试移动性对模块和服务迁移的影响。同样地,iFogSim2中使用了相同的参数设置,仿真的参数如表2和3所示。实验在一台操作系统为Ubuntu 20.04,配备16 GB RAM,AMD 5900x@3.70 GHz CPU的计算机上进行。
功率模型和能耗计算公式为
P=Idle+(Busy-Idle)×utilization(1)
E=P×(Tnow-Tlast)(2)
式(1)中:Idle表示为闲置功率,Busy表示为忙时功率,utilization为利用率;
式(2)中:P为(1)中的功率,(Tnow-Tlast)表示为以功率P持续的时间。
3.3 仿真结果分析
图7展示了显示两种车辆规模仿真实验下代理节点和网关节点的能耗对比。表4展示两种车辆规模实验下的网络使用量对比。
在模型设计环节,代理节点的主要职责是维护通信功能,负责所在区域内网关节点与云集群之间的通信,不涉及模组的部署任务和计算任务。代理节点在仿真期间以闲置功率运行,其能耗计算基于代理节点的运行时间和功耗。因此,代理节点的最低能耗可计算为333(W)×5790(s)=1928070(J)。这个值是每个代理节点的最低能耗。然而,在iFogSim2的模拟中,每个代理节点的能耗低于该值。这表明iFogSim2在代理节点方面的能耗模拟存在异常。同时,网关节点执行了语音指令处理模块的部署和计算任务以及模块的收发任务。因此,网关节点的能耗应该根据工作负载在忙时功率和闲置功率之间波动进行计算。然而,iFogSim2的统计结果表明,有30个网关节点的能耗为969 000(J),低于最低网关节点能耗的应计算值(170(W)×5790(s)=984300(J))。在VECSim的仿真中,代理节点和网关节点的能耗数值统计正常。经过检查iFogSim2和VECSim的执行日志,发现iFogSim2在仿真的4 551 s后不再执行任何操作,包括分布式应用模组部署、移动管理和服务迁移等操作,而VECSim则一直保持正常执行。这解释了表3中iFogSim2网络在100台车辆情况下使用的数据量低于VECSim统计数据的原因。
随着车辆数量的增加,在引入了340辆车辆的更大规模仿真中,笔者依然观察到了iFogSim2仿真结果中的能耗异常。在图7(c)中,iFogSim2模拟的代理节点的能耗为3 862 800(J),低于代理节点的最低能耗(333(W)×11640(s)=3876120(J))。同样,图7(d)中出现了异常现象,有109个网关节点的能耗为1 972 000.0(J),低于网关节点的最低能耗(170(W)×11640(s)=1977800(J))。值得注意的是,随着车辆规模的增加,仿真的持续时间和模块迁移次数也增加,导致网络使用量上升。然而,在车辆规模增大的情况下,iFogSim2的网络使用量统计出现下降的异常现象。此外,iFogSim2在运行日志文件中显示,仿真在经过6 511 s后不再执行任何操作,包括模组部署、移动管理和服务迁移等。相反,VECSim的实验结果仍然保持了原有设计的连续性和稳定性。在不同车辆规模的实验中,VECSim通过其分布式应用模块部署策略、移动管理和服务迁移表现出了良好的稳定性。
总的来说,VECSim相对于iFogSim2具有以下优势:VECSim提供了更准确的代理节点和网关节点的能耗模拟,可以更好地反映实际情况。VECSim在仿真中保持了模拟的连续性,不会在仿真的中途停止操作,确保了数据的准确性和完整性。其次,VECSim相对于iFogSim2在稳定性方面具有明显的优势,尤其在处理大规模车辆移动场景下,VECSim的仿真结果保持了一致性,未出现异常现象。这些优势使VECSim成为更可靠的仿真工具,用于研究移动边缘车联网环境中的能耗和性能表现,使其成为研究车载边缘计算网络性能和能耗的可信赖工具。
4 仿真时间性能优化实验和结果分析
在第3章中,为了提高仿真时间性能,VECSim对CloudSim核心进行了性能优化,实现了仿真过程中对Future队列插入和删除的并行操作。为了验证优化设计的有效性,本章设计了一个实验来对其进行验证。
4.1 实验环境和参数设置
在验证实验中,VECSim使用了第3.2节中仿真参数设置,车辆数为100台,实验在一台操作系统为Ubuntu 20.04,配备16 GB RAM,AMD 5900x@3.70 GHz CPU的计算机上进行。
4.2 结果分析
表5呈现了在使用FutureManager进行并行操作时,在相同仿真实验设置下的仿真执行时间对比。与串行操作相比,采用并行处理Future队列中事件的插入和删除操作,使得仿真事件的執行时间减少了5.3%。然而,需要指出的是,由于引入了多线程技术,FutureManager中的两个缓存区被视为临界资源。当缓存区已满,FutureManager需要执行插入和删除操作时,主线程上的核心模块无法同时访问缓存区,这仍然带来一定的时间开销。尽管存在一定的时间开销,这一结果证明了采用并行操作来处理Future队列中的事件插入和删除操作,依然可以有效地提升仿真工具的时间性能。这一改进对于减小仿真执行时间和提高工具的效率具有积极的影响,特别是在处理大规模仿真任务和复杂仿真场景时,将会更加显著地体现其优势。
5 结束语
本文基于iFogSim2改进并提出了VECSim仿真器,用于车载边缘计算的建模与仿真模拟。VECSim集成了来自真实世界的采样得到的车辆移动轨迹数据集并支持解析SUMO输出的FCD,与EUA数据集可以快速构建VEC实验场景。提出了适用于VEC特征的分布式应用模块部署策略与移动管理和服务迁移策略。对于CloudSim核心框架在处理仿真事件时的效率问题,VECSim引入了一种时间性能优化方法,对Future队列采取并行操作。实验仿真结果表明,与iFogSim2中同类策略相比,VECSim所提供的服务迁移策略在大规模高采样频率高速的车辆移动场景下具有良好的稳定性表现。时间性能优化方案使得VECSim仿真执行时间减少了5.3%。未来,VECSim将移植到Python平台上以实现VEC仿真与机器学习领域的结合与应用。
参考文献:
[1]李智勇,王琦,陈一凡,等. 车辆边缘计算环境下任务卸载研究综述 [J]. 计算机学报,2021,44(5): 963-982. (Li Zhiyong,Wang Qi,Chen Yifan,et al. A survey on task off-loading research in vehicular edge computing [J]. Chinese Journal of Computers,2021,44(5): 963-982.)
[2]Subbaraj S,Thiyagarajan R. Performance oriented task-resource mapping and scheduling in fog computing environment [J]. Cognitive Systems Research,2021,70: 40-50.
[3]Fellir F,El Attar A,Nafil K,et al. A multi-agent based model for task scheduling in cloud-fog computing platform [C]// Proc of IEEE International Conference on Informatics,IoT,and Enabling Technologies.Piscataway,NJ:IEEE Press,2020.
[4]韦睿,祝长鸿,王怡,等. 基于软件定义网络和移动边缘计算的车联网高效任务卸载方案 [J]. 计算机应用研究,2023,40(6): 1817-1824. (Wei Rui,Zhu Changhong,Wang Yi,et al. Efficient task offloading scheme of Internet of Vehicles based on software defined network and mobile edge computing [J]. Application Research of Computers,2023,40(6): 1817-1824.)
[5]邸剑,薛林,蔡震. 基于网联车多跳传输的移动边缘计算卸载 [J]. 计算机应用研究,2021,38(4): 1145-1148,1157. (Di Jian,Xue Lin,Cai Zhen. Mobile edge computing offloading based on multi-hop transmission of connected vehicles [J]. Application Research of Computers,2021,38(4): 1145-1148,1157.)
[6]Meneguette R,De Grande R,Ueyama J,et al. Vehicular edge computing: architecture,resource management,security,and challenges [J]. ACM Computing Surveys,2023,55(1): 1-46.
[7]Lera I,Guerrero C,Juiz C. YAFS: a simulator for IoT scenarios in fog computing [J]. IEEE Access,2019,7: 91745-91758.
[8]Amarasinghe G,De Assuno M D,Harwood A,et al. ECSNeT++: a simulator for distributed stream processing on edge and cloud environments [J]. Future Generation Computer Systems,2020,111: 401-418.
[9]Varga A,Wehrle K,Güne瘙塂 M,et al. OMNeT+ [M]// Modeling and Tools for Network Simulation. Berlin: Springer,2010: 35-59.
[10]Mészáros L,Varga A,Kirsche M. INET framework [M]// Recent Advances in Network Simulation,EAI/Springer Innovations in Communication and Computing. 2019: 55-106.
[11]Mass J,Srirama S N,Chang C. STEP-ONE: simulated testbed for edge-fog processes based on the opportunistic network environment simulator [J]. Journal of Systems and Software,2020,166: 110587.
[12]Kernen A,Ott J,Krkkinen T. The ONE simulator for DTN protocol evaluation [C]// Proc of the 2nd International ICST Conference on Simulation Tools and Techniques. 2009.
[13]Jalali K A Z,Mansouri N,Khalouie M. Task scheduling in fog environment—challenges,tools & methodologies: a review [J]. Compu-ter Science Review,2023,48: 100550.
[14]Calheiros R N,Ranjan R,Beloglazov A,et al. CloudSim: a toolkit for modeling and simulation of cloud computing environments and evaluation of resource provisioning algorithms [M]// Software: Practice and Experience.2011: 23-50.
[15]Kreutzer W,Hopkins J,Van Mierlo M. SimJava—a framework for modeling queueing networks in Java [C]// Proc of the 29th Confe-rence on Winter Simulation. 1997.
[16]Gupta H,Dastjerdi A V,Ghosh S K,et al. iFogSim: a toolkit for mo-deling and simulation of resource management techniques in the Internet of Things,edge and fog computing environments [M]// Software: Practice and Experience. [S.l.]: Wiley,2017: 1275-1296.
[17]Sonmez C,Ozgovde A,Ersoy C. EdgeCloudSim: an environment for performance evaluation of edge computing systems [C]// Proc of the 2nd International Conference on Fog and Mobile Edge Computing. 2017.
[18]Liu Xiao,Fan Lingmin,Xu Jia,et al. FogWorkflowSim: an automated simulation toolkit for workflow performance evaluation in fog computing [C]// Proc of the 34th IEEE/ACM International Conference on Automated Software Engineering. 2019.
[19]Chen Weiwei,Deelman E. WorkflowSim: a toolkit for simulating scientific workflows in distributed environments [C]// Proc of the 8th IEEE International Conference on E-Science. Piscataway,NJ:IEEE Press,2012.
[20]Qayyum T,Malik A W,Khan K M A,et al. FogNetSim+: a toolkit for modeling and simulation of distributed fog environment [J]. IEEE Access,2018,6: 63570-63583.
[21]Jha D,Alwasel K,Alshoshan A,et al. IoTSim-Edge: a simulation framework for modeling the behaviour of IoT and edge computing environments [EB/OL]. (2019). https://arxiv.org/abs/1910.03026.
[22]Puliafito C,Gonalves D M,Lopes M M,et al. MobFogSim: simulation of mobility and migration for fog computing [J]. Simulation Modelling Practice and Theory,2020,101: 102062.
[23]Salama M,Elkhatib Y,Blair G. IoTNetSim: a modelling and simulation platform for end-to-end IoT services and networking [C]// Proc of the 12th IEEE/ACM International Conference on Utility and Cloud Computing. 2019.
[24]Wei Junyong,Cao Suzhi,Pan Siyan,et al. SatEdgeSim: a toolkit for modeling and simulation of performance evaluation in satellite edge computing environments [C]// Proc of the 12th International Confe-rence on Communication Software and Networks. 2020.
[25]Luo Quyuan,Hu Shihong,Li Changle,et al. Resource scheduling in edge computing: a survey [J]. IEEE Communications Surveys & Tutorials,2021,23(4): 2131-2165.
[26]Lai P,He Qiang,Abdelrazek M,et al. Optimal edge user allocation in edge computing with variable sized vector bin packing [M]// Service-Oriented Computing,Lecture Notes in Computer Science. 2018: 230-245.
[27]Li Yuanzhe,Zhou Ao,Ma Xiao,et al. Profit-aware edge server placement [J]. IEEE Internet of Things Journal,2022,9(1): 55-67.
[28]Wang Shangguang,Guo Yan,Zhang Ning,et al. Delay-aware microservice coordination in mobile edge computing: a reinforcement learning approach [J]. IEEE Trans on Mobile Computing,2021,20(3): 939-951.
[29]Lopez P A,Wiessner E,Behrisch M,et al. Microscopic traffic simulation using SUMO [C]// Proc of the 21st International Conference on Intelligent Transportation Systems. 2018.
[30]Mahmud R,Pallewatta S,Goudarzi M,et al. IFogSim2: an extended iFogSim simulator for mobility,clustering,and microservice management in edge and fog computing environments [J]. Journal of Systems and Software,2022,190: 111351.
[31]Dean J,Ghemawat S. MapReduce: simplified data processing on large clusters [J]. Communications of the ACM,2008,51(1): 107-113.
[32]Yair G A,Lu Pengyuan,Li Hao,et al. OpenStreetMap,beyond just data: the academic track at state of the map 2022 [C]//Proc of Map. 2022.
[33]Liu Lei,Chen Chen,Pei Qingqi,et al. Vehicular edge computing and networking: a survey [J]. Mobile Networks and Applications,2021,26(3): 1145-1168.
[34]Martin R C. The open-closed principle [J]. More C+Gems,1996,19(96): 9.
[35]Murali P K,Kaboli M,Dahiya R. Intelligent in-vehicle interaction technologies [M]// Advanced Intelligent Systems. [S.l.]: Wiley,2022: 2100122.
[36]張依琳,梁玉珠,尹沐君,等. 移动边缘计算中计算卸载方案研究综述 [J]. 计算机学报,2021,44(12): 2406-2430. (Zhang Yilin,Liang Yuzhu,Yin Mujun,et al. Survey on the methods of computation offloading in mobile edge computing [J]. Chinese Journal of Computers,2021,44(12): 2406-2430.)