• 【理论】使用iFogSim进行模拟


    使用iFogSim进行模拟

    前置条件:需有iFogSim环境,和对iFogSim的基础概念有所了解。可阅读前两篇文章。

    1. 首先需要创建特定配置的物理组件,配置的参数包括ram,处理器性能(每秒百万指令),每百万之令运行的消耗,上行和下行带宽,根据分层等级划分的忙碌和空闲功耗。
    /* 创建雾设备接口 */
    private static FogDevice createFogDevice(String nodeName,
                                             long mips,
                                             int ram,
                                             long upBw,
                                             long downBw,
                                             int level,
                                             double ratePerMips,
                                             double busyPower,
                                             double idlePower)
    

    在创建底层级的雾设备时,关联的IoT设备(传感器和驱动器)也需要创建,代表着感应间隔的Transmit Distribution对象在创建IoT传感器时需要设置,此外传感器和驱动器的创建需要引用application id 和 broker id。

    /*创建传感器接口*/
    public Sensor(String name,
                  String tupleType,
                  int userId,
                  String appId,
                  Distribution transmitDistribution)
    
    /*创建驱动器接口*/
    public Actuator(String name,
                    int userId,
                    String appId,
                    String actuatorType)
    
    1. 第二步需要创建必须的逻辑组件AppModule, AppEdge和AppLoop。在创建AppModules时,其配置已经提供并且AppEdge对象包含了关于元组类型的信息,它们的方向,cpu和线路网长度伴随着资源的引用和目标模块。不同类型的元组基于AppEdge对象指定的规范进行创建。
    /*AppModule的创建接口*/
    public AppModule(int id,
                     String name,
                     String appId,
                     int userId,
                     double mips,
                     int ram,
                     long bw,
                     long size,
                     String vmm,
                     CloudletScheduler cloudletScheduler,
                     Map<Pair<String, String>, SelectivityModel> selectivityMap)
    
    /*AppEdge的创建接口*/
    public AppEdge(String source,
                   String destination,
                   double tupleCpuLength,
                   double tupleNwLength,
                   String tupleType,
                   int direction,
                   int edgeType)
    
    /*AppLoop的创建接口*/
    public AppLoop(List<String> modules)
    
    1. 最后管理组件(Module Mapping)被初始化出用来定以不同调度方式和AppModule的放置策略。用户在分配AppModules到雾设备时可以定义总消耗量,服务延迟,网络使用,操作损耗和设备差异并且可以相应的继承抽象的模块映射(Module Mapping)类。根据AppEdges的信息,一个AppModule需要分配指定的对应的元组类型并且能够满足可用的雾资源。一旦AppModule和雾设备完成映射,物理组件和逻辑组件的信息会被送往控制对象。随后控制对象将整个系统提交到CloudSim引擎作模拟。
    /*控制组件的创建接口*/
    public Controller(String name,
                      List<FogDevice> fogDevices,
                      List<Sensor> sensors,
                      List<Actuator> actuators)
    
  • 相关阅读:
    晚上打死个老鼠
    今早服务器出现的问题
    打球
    出于对Atlas自带AutoCompleteBehavior的不满,自定义了一个支持模版的AutoCompleteBehavior
    PetShop4.0项目分解
    WebSnapr-生成你的网站缩略图
    Lost HTML Intellisense within ASP.NET AJAX Controls
    调整调出输入法的顺序
    儿童网址大全
    gridview列 数字、货币和日期 显示格式
  • 原文地址:https://www.cnblogs.com/Pomelos/p/14878383.html
Copyright © 2020-2023  润新知