Page 292 - 《软件学报》2021年第12期
P. 292

3956                                Journal of Software  软件学报 Vol.32, No.12, December 2021

             我们可以看到:位于杭州的 FDN 控制器的 CPU 资源利用率一直维持在稳定水平,其平均值为 8.87%.这说
         明我们的 FDN 控制器能够高效快速地对网络的信息进行收集,以及对任务所对应的容器编排策略进行快速的
         计算,同时保持较多的闲置资源,确保了 FDN 计算平台的稳定安全运行.

         5    容器编排模拟实验

         5.1   实验设定

             我们实现并模拟了基于有向无环图结构的启发式容器编排算法(Heu-Orche),并评估了它在不同任务规模、
         用户数量、网络拓扑和设备算力下的计算延迟性能.我们首先生成了不同规模的有向无环图计算任务,每个计
         算任务中包含了不同数量的子任务,且每个子任务均封装为一个容器并编排到机器进行计算.我们随机模拟了
         每个子任务的计算规模和计算量,以及子任务之间的数据依赖和通信时长等必要信息.我们为每个计算任务模
         拟了 100~1000 个子任务,将容器编排到对应的计算集群,评估算法对不同任务规模的编排效果.
             同时,为了评估不同的边缘计算网络环境,我们会改变网络的拓扑和规模,包括边缘计算集群的个数和集群
         的计算能力.在实验中,分布式边缘计算集群的数量会从 1 变化到 5,并随机分布在网络的不同位置.这些分布式
         边缘计算集群会根据控制器计算得到的容器编排策略,将容器部署到对应的机器,并根据容器的数据依赖关系
         开始并行计算,并最终将计算结果返回给用户.我们还会评估用户数对算法执行效率的影响,将用户数从 1 000
         个变化到 10 000 个.默认情况下,子任务的数量为 100 个,边缘计算集群的个数为 3 个,用户数量为 1 000 个.
             为了与其他编排算法进行对比,我们实现了在传统容器编排器中广泛采用的先来先服务算法(FCFS)和基
         于优先级(priority first)的编排算法   [6−9] .对于先来先服务算法,容器会根据先后顺序部署并运行在机器;而对于优
         先级编排算法,我们会根据子任务的规模顺序为容器进行优先级设定,并且让优先级更高的容器优先进行编排.
         另外,对于边缘计算的应用场景,我们开发了基于距离优先(distance first)的贪心编排策略,其中每个容器会被贪
         心地编排到距离最近的边缘计算集群.这种距离优先的调度策略广泛应用在边缘计算中                                [18] ,因此我们对其作了
         一定改进,设计了基于距离优先的容器编排策略.另外,我们还引入了最长剩余时间优先(longest remaining time
         first,简称 LRTF)算法.这是一种几年来广泛应用在容器编排的调度策略,容器会根据最长剩余时间进行抢占调
         度,以提高系统任务的计算延迟           [19] .我们将在同样的实验设定下,评估并比较这几种编排算法的计算延迟性能.
         在实验过程中,为了模拟更加真实的网络环境,我们为网络加入了 5ms 的网络抖动                          [20] ,并测试在该延迟抖动设定
         下的算法性能.

         5.2   实验结果
             1)  不同子任务与用户数量
             我们首先测试了 5 个算法在不同数量的子任务(100~1 000)下和不同用户数量下(从 1 000 个~10 000 个用
         户)的编排性能,实验结果如图 7 和图 8 所示.














             Fig.7    Computation latency with different workflows   Fig.8   Computation latency with different users
                 图 7   不同子任务数量下的任务计算延迟               图 8   不同用户数量下的任务计算延迟

             在图 7 中,总体上,随着子任务数量的增加,5 个算法随着子任务数量的增加,任务的计算延迟都呈现上升趋
   287   288   289   290   291   292   293   294   295   296   297