fuck my life, this is so bad
This commit is contained in:
parent
17fabc368e
commit
8d8bbbf0ae
6
.idea/vcs.xml
Normal file
6
.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -743,7 +743,7 @@ public class FogDevice extends PowerDatacenter {
|
|||||||
processCloudletSubmit(ev, false);
|
processCloudletSubmit(ev, false);
|
||||||
updateAllocatedMips(moduleName);
|
updateAllocatedMips(moduleName);
|
||||||
/*for(Vm vm : getHost().getVmList()){
|
/*for(Vm vm : getHost().getVmList()){
|
||||||
Logger.error(getName(), "MIPS allocated to "+((AppModule)vm).getName()+" = "+getHost().getTotalAllocatedMipsForVm(vm));
|
Log.printLine("MIPS allocated to "+((AppModule)vm).getName()+" = "+getHost().getTotalAllocatedMipsForVm(vm));
|
||||||
}*/
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ import java.util.*;
|
|||||||
|
|
||||||
public class Birbnetes {
|
public class Birbnetes {
|
||||||
static int numOfFogDevices = 2;
|
static int numOfFogDevices = 2;
|
||||||
static int numOfClientsPerFogDevice = 10;
|
static int numOfClientsPerFogDevice = 1;
|
||||||
static List<FogDevice> fogDevices = new ArrayList<>();
|
static List<FogDevice> fogDevices = new ArrayList<>();
|
||||||
static Map<String, Integer> getIdByName = new HashMap<>();
|
static Map<String, Integer> getIdByName = new HashMap<>();
|
||||||
static List<Sensor> sensors = new ArrayList<>();
|
static List<Sensor> sensors = new ArrayList<>();
|
||||||
@ -117,7 +117,7 @@ public class Birbnetes {
|
|||||||
"OutputData");
|
"OutputData");
|
||||||
actuators.add(actuator);
|
actuators.add(actuator);
|
||||||
sensor.setGatewayDeviceId(lowLevelFogDevice.getId());
|
sensor.setGatewayDeviceId(lowLevelFogDevice.getId());
|
||||||
sensor.setLatency(6.0);
|
sensor.setLatency(10.0);
|
||||||
actuator.setGatewayDeviceId(lowLevelFogDevice.getId());
|
actuator.setGatewayDeviceId(lowLevelFogDevice.getId());
|
||||||
actuator.setLatency(1.0);
|
actuator.setLatency(1.0);
|
||||||
return lowLevelFogDevice;
|
return lowLevelFogDevice;
|
||||||
@ -156,7 +156,7 @@ public class Birbnetes {
|
|||||||
Log.printLine("Starting Birbnetes...");
|
Log.printLine("Starting Birbnetes...");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Log.disable();
|
//Log.disable();
|
||||||
int num_user = 1; // number of cloud users
|
int num_user = 1; // number of cloud users
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
|
||||||
|
260
src/org/fog/test/perfeval/Birbnetes_copyofdcnsfog.java
Normal file
260
src/org/fog/test/perfeval/Birbnetes_copyofdcnsfog.java
Normal file
@ -0,0 +1,260 @@
|
|||||||
|
package org.fog.test.perfeval;
|
||||||
|
|
||||||
|
import org.cloudbus.cloudsim.Host;
|
||||||
|
import org.cloudbus.cloudsim.Log;
|
||||||
|
import org.cloudbus.cloudsim.Pe;
|
||||||
|
import org.cloudbus.cloudsim.Storage;
|
||||||
|
import org.cloudbus.cloudsim.core.CloudSim;
|
||||||
|
import org.cloudbus.cloudsim.power.PowerHost;
|
||||||
|
import org.cloudbus.cloudsim.provisioners.RamProvisionerSimple;
|
||||||
|
import org.cloudbus.cloudsim.sdn.overbooking.BwProvisionerOverbooking;
|
||||||
|
import org.cloudbus.cloudsim.sdn.overbooking.PeProvisionerOverbooking;
|
||||||
|
import org.fog.application.AppEdge;
|
||||||
|
import org.fog.application.AppLoop;
|
||||||
|
import org.fog.application.Application;
|
||||||
|
import org.fog.application.selectivity.FractionalSelectivity;
|
||||||
|
import org.fog.entities.*;
|
||||||
|
import org.fog.placement.Controller;
|
||||||
|
import org.fog.placement.ModuleMapping;
|
||||||
|
import org.fog.placement.ModulePlacementEdgewards;
|
||||||
|
import org.fog.placement.ModulePlacementMapping;
|
||||||
|
import org.fog.policy.AppModuleAllocationPolicy;
|
||||||
|
import org.fog.scheduler.StreamOperatorScheduler;
|
||||||
|
import org.fog.utils.FogLinearPowerModel;
|
||||||
|
import org.fog.utils.FogUtils;
|
||||||
|
import org.fog.utils.TimeKeeper;
|
||||||
|
import org.fog.utils.distribution.DeterministicDistribution;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simulation setup for case study 2 - Intelligent Surveillance
|
||||||
|
* @author Harshit Gupta
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class Birbnetes_copyofdcnsfog {
|
||||||
|
static List<FogDevice> fogDevices = new ArrayList<FogDevice>();
|
||||||
|
static List<Sensor> sensors = new ArrayList<Sensor>();
|
||||||
|
static List<Actuator> actuators = new ArrayList<Actuator>();
|
||||||
|
static int numOfAreas = 1;
|
||||||
|
static int numOfCamerasPerArea = 4;
|
||||||
|
|
||||||
|
private static boolean CLOUD = false;
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
|
||||||
|
Log.printLine("Starting DCNS...");
|
||||||
|
|
||||||
|
try {
|
||||||
|
Log.disable();
|
||||||
|
int num_user = 1; // number of cloud users
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
boolean trace_flag = false; // mean trace events
|
||||||
|
|
||||||
|
CloudSim.init(num_user, calendar, trace_flag);
|
||||||
|
|
||||||
|
String appId = "dcns"; // identifier of the application
|
||||||
|
|
||||||
|
FogBroker broker = new FogBroker("broker");
|
||||||
|
|
||||||
|
Application application = createApplication(appId, broker.getId());
|
||||||
|
application.setUserId(broker.getId());
|
||||||
|
|
||||||
|
createFogDevices(broker.getId(), appId);
|
||||||
|
|
||||||
|
Controller controller = null;
|
||||||
|
|
||||||
|
ModuleMapping moduleMapping = ModuleMapping.createModuleMapping(); // initializing a module mapping
|
||||||
|
for(FogDevice device : fogDevices){
|
||||||
|
if(device.getName().startsWith("m")){ // names of all Smart Cameras start with 'm'
|
||||||
|
moduleMapping.addModuleToDevice("motion_detector", device.getName()); // fixing 1 instance of the Motion Detector module to each Smart Camera
|
||||||
|
}
|
||||||
|
}
|
||||||
|
moduleMapping.addModuleToDevice("user_interface", "cloud"); // fixing instances of User Interface module in the Cloud
|
||||||
|
if(CLOUD){
|
||||||
|
// if the mode of deployment is cloud-based
|
||||||
|
moduleMapping.addModuleToDevice("object_detector", "cloud"); // placing all instances of Object Detector module in the Cloud
|
||||||
|
moduleMapping.addModuleToDevice("object_tracker", "cloud"); // placing all instances of Object Tracker module in the Cloud
|
||||||
|
}
|
||||||
|
|
||||||
|
controller = new Controller("master-controller", fogDevices, sensors,
|
||||||
|
actuators);
|
||||||
|
|
||||||
|
controller.submitApplication(application,
|
||||||
|
(CLOUD)?(new ModulePlacementMapping(fogDevices, application, moduleMapping))
|
||||||
|
:(new ModulePlacementEdgewards(fogDevices, sensors, actuators, application, moduleMapping)));
|
||||||
|
|
||||||
|
TimeKeeper.getInstance().setSimulationStartTime(Calendar.getInstance().getTimeInMillis());
|
||||||
|
|
||||||
|
CloudSim.startSimulation();
|
||||||
|
|
||||||
|
CloudSim.stopSimulation();
|
||||||
|
|
||||||
|
Log.printLine("VRGame finished!");
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
Log.printLine("Unwanted errors happen");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates the fog devices in the physical topology of the simulation.
|
||||||
|
* @param userId
|
||||||
|
* @param appId
|
||||||
|
*/
|
||||||
|
private static void createFogDevices(int userId, String appId) {
|
||||||
|
FogDevice cloud = createFogDevice("cloud", 44800, 40000, 100, 10000, 0, 0.01, 16*103, 16*83.25);
|
||||||
|
cloud.setParentId(-1);
|
||||||
|
fogDevices.add(cloud);
|
||||||
|
FogDevice proxy = createFogDevice("proxy-server", 2800, 4000, 10000, 10000, 1, 0.0, 107.339, 83.4333);
|
||||||
|
proxy.setParentId(cloud.getId());
|
||||||
|
proxy.setUplinkLatency(100); // latency of connection between proxy server and cloud is 100 ms
|
||||||
|
fogDevices.add(proxy);
|
||||||
|
for(int i=0;i<numOfAreas;i++){
|
||||||
|
addArea(i+"", userId, appId, proxy.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static FogDevice addArea(String id, int userId, String appId, int parentId){
|
||||||
|
FogDevice router = createFogDevice("d-"+id, 2800, 4000, 10000, 10000, 1, 0.0, 107.339, 83.4333);
|
||||||
|
fogDevices.add(router);
|
||||||
|
router.setUplinkLatency(2); // latency of connection between router and proxy server is 2 ms
|
||||||
|
for(int i=0;i<numOfCamerasPerArea;i++){
|
||||||
|
String mobileId = id+"-"+i;
|
||||||
|
FogDevice camera = addCamera(mobileId, userId, appId, router.getId()); // adding a smart camera to the physical topology. Smart cameras have been modeled as fog devices as well.
|
||||||
|
camera.setUplinkLatency(2); // latency of connection between camera and router is 2 ms
|
||||||
|
fogDevices.add(camera);
|
||||||
|
}
|
||||||
|
router.setParentId(parentId);
|
||||||
|
return router;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static FogDevice addCamera(String id, int userId, String appId, int parentId){
|
||||||
|
FogDevice camera = createFogDevice("m-"+id, 500, 1000, 10000, 10000, 3, 0, 87.53, 82.44);
|
||||||
|
camera.setParentId(parentId);
|
||||||
|
Sensor sensor = new Sensor("s-"+id, "CAMERA", userId, appId, new DeterministicDistribution(5)); // inter-transmission time of camera (sensor) follows a deterministic distribution
|
||||||
|
sensors.add(sensor);
|
||||||
|
Actuator ptz = new Actuator("ptz-"+id, userId, appId, "PTZ_CONTROL");
|
||||||
|
actuators.add(ptz);
|
||||||
|
sensor.setGatewayDeviceId(camera.getId());
|
||||||
|
sensor.setLatency(1.0); // latency of connection between camera (sensor) and the parent Smart Camera is 1 ms
|
||||||
|
ptz.setGatewayDeviceId(camera.getId());
|
||||||
|
ptz.setLatency(1.0); // latency of connection between PTZ Control and the parent Smart Camera is 1 ms
|
||||||
|
return camera;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a vanilla fog device
|
||||||
|
* @param nodeName name of the device to be used in simulation
|
||||||
|
* @param mips MIPS
|
||||||
|
* @param ram RAM
|
||||||
|
* @param upBw uplink bandwidth
|
||||||
|
* @param downBw downlink bandwidth
|
||||||
|
* @param level hierarchy level of the device
|
||||||
|
* @param ratePerMips cost rate per MIPS used
|
||||||
|
* @param busyPower
|
||||||
|
* @param idlePower
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private static FogDevice createFogDevice(String nodeName, long mips,
|
||||||
|
int ram, long upBw, long downBw, int level, double ratePerMips, double busyPower, double idlePower) {
|
||||||
|
|
||||||
|
List<Pe> peList = new ArrayList<Pe>();
|
||||||
|
|
||||||
|
// 3. Create PEs and add these into a list.
|
||||||
|
peList.add(new Pe(0, new PeProvisionerOverbooking(mips))); // need to store Pe id and MIPS Rating
|
||||||
|
|
||||||
|
int hostId = FogUtils.generateEntityId();
|
||||||
|
long storage = 1000000; // host storage
|
||||||
|
int bw = 10000;
|
||||||
|
|
||||||
|
PowerHost host = new PowerHost(
|
||||||
|
hostId,
|
||||||
|
new RamProvisionerSimple(ram),
|
||||||
|
new BwProvisionerOverbooking(bw),
|
||||||
|
storage,
|
||||||
|
peList,
|
||||||
|
new StreamOperatorScheduler(peList),
|
||||||
|
new FogLinearPowerModel(busyPower, idlePower)
|
||||||
|
);
|
||||||
|
|
||||||
|
List<Host> hostList = new ArrayList<Host>();
|
||||||
|
hostList.add(host);
|
||||||
|
|
||||||
|
String arch = "x86"; // system architecture
|
||||||
|
String os = "Linux"; // operating system
|
||||||
|
String vmm = "Xen";
|
||||||
|
double time_zone = 10.0; // time zone this resource located
|
||||||
|
double cost = 3.0; // the cost of using processing in this resource
|
||||||
|
double costPerMem = 0.05; // the cost of using memory in this resource
|
||||||
|
double costPerStorage = 0.001; // the cost of using storage in this
|
||||||
|
// resource
|
||||||
|
double costPerBw = 0.0; // the cost of using bw in this resource
|
||||||
|
LinkedList<Storage> storageList = new LinkedList<Storage>(); // we are not adding SAN
|
||||||
|
// devices by now
|
||||||
|
|
||||||
|
FogDeviceCharacteristics characteristics = new FogDeviceCharacteristics(
|
||||||
|
arch, os, vmm, host, time_zone, cost, costPerMem,
|
||||||
|
costPerStorage, costPerBw);
|
||||||
|
|
||||||
|
FogDevice fogdevice = null;
|
||||||
|
try {
|
||||||
|
fogdevice = new FogDevice(nodeName, characteristics,
|
||||||
|
new AppModuleAllocationPolicy(hostList), storageList, 10, upBw, downBw, 0, ratePerMips);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
fogdevice.setLevel(level);
|
||||||
|
return fogdevice;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function to create the Intelligent Surveillance application in the DDF model.
|
||||||
|
* @param appId unique identifier of the application
|
||||||
|
* @param userId identifier of the user of the application
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@SuppressWarnings({"serial" })
|
||||||
|
private static Application createApplication(String appId, int userId){
|
||||||
|
|
||||||
|
Application application = Application.createApplication(appId, userId);
|
||||||
|
/*
|
||||||
|
* Adding modules (vertices) to the application model (directed graph)
|
||||||
|
*/
|
||||||
|
application.addAppModule("object_detector", 10);
|
||||||
|
application.addAppModule("motion_detector", 10);
|
||||||
|
application.addAppModule("object_tracker", 10);
|
||||||
|
application.addAppModule("user_interface", 10);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Connecting the application modules (vertices) in the application model (directed graph) with edges
|
||||||
|
*/
|
||||||
|
application.addAppEdge("CAMERA", "motion_detector", 1000, 20000, "CAMERA", Tuple.UP, AppEdge.SENSOR); // adding edge from CAMERA (sensor) to Motion Detector module carrying tuples of type CAMERA
|
||||||
|
application.addAppEdge("motion_detector", "object_detector", 2000, 2000, "MOTION_VIDEO_STREAM", Tuple.UP, AppEdge.MODULE); // adding edge from Motion Detector to Object Detector module carrying tuples of type MOTION_VIDEO_STREAM
|
||||||
|
application.addAppEdge("object_detector", "user_interface", 500, 2000, "DETECTED_OBJECT", Tuple.UP, AppEdge.MODULE); // adding edge from Object Detector to User Interface module carrying tuples of type DETECTED_OBJECT
|
||||||
|
application.addAppEdge("object_detector", "object_tracker", 1000, 100, "OBJECT_LOCATION", Tuple.UP, AppEdge.MODULE); // adding edge from Object Detector to Object Tracker module carrying tuples of type OBJECT_LOCATION
|
||||||
|
application.addAppEdge("object_tracker", "PTZ_CONTROL", 100, 28, 100, "PTZ_PARAMS", Tuple.DOWN, AppEdge.ACTUATOR); // adding edge from Object Tracker to PTZ CONTROL (actuator) carrying tuples of type PTZ_PARAMS
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Defining the input-output relationships (represented by selectivity) of the application modules.
|
||||||
|
*/
|
||||||
|
application.addTupleMapping("motion_detector", "CAMERA", "MOTION_VIDEO_STREAM", new FractionalSelectivity(1.0)); // 1.0 tuples of type MOTION_VIDEO_STREAM are emitted by Motion Detector module per incoming tuple of type CAMERA
|
||||||
|
application.addTupleMapping("object_detector", "MOTION_VIDEO_STREAM", "OBJECT_LOCATION", new FractionalSelectivity(1.0)); // 1.0 tuples of type OBJECT_LOCATION are emitted by Object Detector module per incoming tuple of type MOTION_VIDEO_STREAM
|
||||||
|
application.addTupleMapping("object_detector", "MOTION_VIDEO_STREAM", "DETECTED_OBJECT", new FractionalSelectivity(0.05)); // 0.05 tuples of type MOTION_VIDEO_STREAM are emitted by Object Detector module per incoming tuple of type MOTION_VIDEO_STREAM
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Defining application loops (maybe incomplete loops) to monitor the latency of.
|
||||||
|
* Here, we add two loops for monitoring : Motion Detector -> Object Detector -> Object Tracker and Object Tracker -> PTZ Control
|
||||||
|
*/
|
||||||
|
final AppLoop loop1 = new AppLoop(new ArrayList<String>(){{add("motion_detector");add("object_detector");add("object_tracker");}});
|
||||||
|
final AppLoop loop2 = new AppLoop(new ArrayList<String>(){{add("object_tracker");add("PTZ_CONTROL");}});
|
||||||
|
List<AppLoop> loops = new ArrayList<AppLoop>(){{add(loop1);add(loop2);}};
|
||||||
|
|
||||||
|
application.setLoops(loops);
|
||||||
|
return application;
|
||||||
|
}
|
||||||
|
}
|
@ -228,6 +228,7 @@ public class TestApplication {
|
|||||||
moduleAddMips.put("mainModule", getvalue(0, 500));
|
moduleAddMips.put("mainModule", getvalue(0, 500));
|
||||||
deadlineInfo.put(id, moduleDeadline);
|
deadlineInfo.put(id, moduleDeadline);
|
||||||
additionalMipsInfo.put(id,moduleAddMips);
|
additionalMipsInfo.put(id,moduleAddMips);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
final AppLoop loop1 = new AppLoop(new ArrayList<String>(){{add("IoTSensor");add("clientModule");add("mainModule");add("clientModule");add("IoTActuator");}});
|
final AppLoop loop1 = new AppLoop(new ArrayList<String>(){{add("IoTSensor");add("clientModule");add("mainModule");add("clientModule");add("IoTActuator");}});
|
||||||
|
@ -57,7 +57,7 @@ public class VRGameFog {
|
|||||||
Log.printLine("Starting VRGame...");
|
Log.printLine("Starting VRGame...");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Log.disable();
|
//Log.disable();
|
||||||
int num_user = 1; // number of cloud users
|
int num_user = 1; // number of cloud users
|
||||||
Calendar calendar = Calendar.getInstance();
|
Calendar calendar = Calendar.getInstance();
|
||||||
boolean trace_flag = false; // mean trace events
|
boolean trace_flag = false; // mean trace events
|
||||||
|
Loading…
Reference in New Issue
Block a user