- https://github.com/Cloudslab/iFogSim
- iFogSim 基于 CloudSim,扩展了基本的 CloudSim 类的抽象,提供了模拟具有大量雾节点和物联网设备(如传感器、执行器)的定制雾计算环境。iFogSim 的核心执行思想:**
Sense - Process - Actuate
**- iFogSim 可以实现对端到端延迟、网络拥塞、能耗、执行成本和 QoS 的评估
- iFogSim 主要有三个基本组件构成:
physical components
、logical components
、management components
A multi-swarm based approach with cooperative learning strategy for composite SaaS placement
- 场景:中心云端,没有涉及边缘云端
- 问题描述:给定一个数据中心(云端)以及一个 SaaS 应用程序,将 SaaS 应用程序的不同组件放置在数据中心的不同服务器上,来达到性能最优(应用执行时间最小且服务水平保持在一个合理的等级)。
- 算法:
regrouping algorithm
用于子种群中的服务器之间协作进化,cooperative learning strategy
用于不同子种群中的服务器之间交换信息,来达到放置最优。
IoT Application Modules Placement and Dynamic Task Processing in Edge-Cloud Computing
场景:云边协同,复杂且延迟敏感度低的任务卸载到中心云端进行处理,简单且延迟敏感度高的任务卸载到边缘云端进行处理
这篇论文考虑了两个问题:
- 物联网设备提交的任务应该交由哪个应用模块来执行 -> 动态的启发式任务处理算法
- 应用模块应该部署在哪个机器上 -> 改进的离散粒子群优化算法
- 考虑的因素是延迟和能耗
这篇论文通过使用 “矩阵” 的方式来描述应用程序模块和雾设备之间的放置关系。
差分数组
- 差分数组是一种用于高效处理数据序列上一段区间内每个元素增减同一个值的技术。它常用于数组和列表数据结构中,可以让区间修改的操作时间复杂度降低到O(1),查询操作的时间复杂度为O(n)。
Fork/Join线程池
- Fork/Join:线程池的实现,体现是分治思想,适用于能够进行任务拆分的 CPU 密集型运算,用于并行计算。
任务拆分:将一个大任务拆分为算法上相同的小任务,直至不能拆分可以直接求解。跟递归相关的一些计算,如归并排序、斐波那契数列都可以用分治思想进行求解。
Fork/Join 在分治的基础上加入了多线程,把每个任务的分解和合并交给不同的线程来完成,提升了运算效率。
ForkJoin 使用
ForkJoinPool
来启动,ForkJoinPool
是一个特殊的线程池,默认会创建与 CPU 核心数大小相同的线程池。如果要得到任务的返回值,那么任务就继承
RecursiveTask
,否则可以选择继承RecursiveAction
。