birbnetes basics added
This commit is contained in:
		
							
								
								
									
										1
									
								
								scripts/birbnetes/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								scripts/birbnetes/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
output
 | 
			
		||||
							
								
								
									
										4
									
								
								scripts/birbnetes/compile.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								scripts/birbnetes/compile.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
rm -rf ../../bin
 | 
			
		||||
mkdir ../../bin
 | 
			
		||||
javac -classpath "../../lib/cloudsim-4.0.jar:../../lib/commons-math3-3.6.1.jar:../../lib/colt.jar" -sourcepath ../../src ../../src/edu/boun/edgecloudsim/applications/birbnetes/MainApp.java -d ../../bin
 | 
			
		||||
							
								
								
									
										18
									
								
								scripts/birbnetes/config/applications.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								scripts/birbnetes/config/applications.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
<?xml version="1.0"?>
 | 
			
		||||
<applications>
 | 
			
		||||
	<application name="BIRBNETES">
 | 
			
		||||
		<usage_percentage>100</usage_percentage>
 | 
			
		||||
		<prob_cloud_selection>1</prob_cloud_selection>
 | 
			
		||||
		<poisson_interarrival>7</poisson_interarrival>
 | 
			
		||||
		<delay_sensitivity>0</delay_sensitivity>
 | 
			
		||||
		<active_period>2</active_period>
 | 
			
		||||
		<idle_period>20</idle_period>
 | 
			
		||||
		<data_upload>88</data_upload>
 | 
			
		||||
		<data_download>2</data_download>
 | 
			
		||||
		<task_length>750</task_length>
 | 
			
		||||
		<required_core>1</required_core>
 | 
			
		||||
		<vm_utilization_on_edge>4</vm_utilization_on_edge>
 | 
			
		||||
		<vm_utilization_on_cloud>20</vm_utilization_on_cloud>
 | 
			
		||||
		<vm_utilization_on_mobile>5</vm_utilization_on_mobile>
 | 
			
		||||
	</application>
 | 
			
		||||
</applications>
 | 
			
		||||
							
								
								
									
										42
									
								
								scripts/birbnetes/config/default_config.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								scripts/birbnetes/config/default_config.properties
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
#default config file
 | 
			
		||||
simulation_time=30
 | 
			
		||||
warm_up_period=3
 | 
			
		||||
vm_load_check_interval=0.1
 | 
			
		||||
location_check_interval=0.1
 | 
			
		||||
file_log_enabled=true
 | 
			
		||||
deep_file_log_enabled=false
 | 
			
		||||
 | 
			
		||||
min_number_of_mobile_devices=100
 | 
			
		||||
max_number_of_mobile_devices=1000
 | 
			
		||||
mobile_device_counter_size=100
 | 
			
		||||
 | 
			
		||||
wan_propagation_delay=0.1
 | 
			
		||||
lan_internal_delay=0.005
 | 
			
		||||
wlan_bandwidth=200
 | 
			
		||||
wan_bandwidth=15
 | 
			
		||||
gsm_bandwidth=0
 | 
			
		||||
 | 
			
		||||
#all the host on cloud runs on a single datacenter
 | 
			
		||||
number_of_host_on_cloud_datacenter=1
 | 
			
		||||
number_of_vm_on_cloud_host=4
 | 
			
		||||
core_for_cloud_vm=4
 | 
			
		||||
mips_for_cloud_vm=10000
 | 
			
		||||
ram_for_cloud_vm=32000
 | 
			
		||||
storage_for_cloud_vm=1000000
 | 
			
		||||
 | 
			
		||||
#mobile devices has no processing unit in this scenario
 | 
			
		||||
core_for_mobile_vm=4
 | 
			
		||||
mips_for_mobile_vm=1000
 | 
			
		||||
ram_for_mobile_vm=4000
 | 
			
		||||
storage_for_mobile_vm=16000
 | 
			
		||||
 | 
			
		||||
#use ',' for multiple values
 | 
			
		||||
orchestrator_policies=NEXT_FIT
 | 
			
		||||
 | 
			
		||||
#use ',' for multiple values
 | 
			
		||||
simulation_scenarios=SINGLE_TIER,TWO_TIER,TWO_TIER_WITH_EO
 | 
			
		||||
 | 
			
		||||
#mean waiting time in seconds
 | 
			
		||||
attractiveness_L1_mean_waiting_time=500
 | 
			
		||||
attractiveness_L2_mean_waiting_time=300
 | 
			
		||||
attractiveness_L3_mean_waiting_time=120
 | 
			
		||||
							
								
								
									
										71
									
								
								scripts/birbnetes/config/edge_devices.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								scripts/birbnetes/config/edge_devices.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,71 @@
 | 
			
		||||
<?xml version="1.0"?>
 | 
			
		||||
<edge_devices>
 | 
			
		||||
	<datacenter arch="x86" os="Linux" vmm="Xen">
 | 
			
		||||
		<costPerBw>0.1</costPerBw>
 | 
			
		||||
		<costPerSec>3.0</costPerSec>
 | 
			
		||||
		<costPerMem>0.05</costPerMem>
 | 
			
		||||
		<costPerStorage>0.1</costPerStorage>
 | 
			
		||||
		<location>
 | 
			
		||||
			<x_pos>1</x_pos>
 | 
			
		||||
			<y_pos>1</y_pos>
 | 
			
		||||
			<wlan_id>0</wlan_id>
 | 
			
		||||
			<attractiveness>0</attractiveness>
 | 
			
		||||
		</location>
 | 
			
		||||
		<hosts>
 | 
			
		||||
			<host>
 | 
			
		||||
				<core>8</core>
 | 
			
		||||
				<mips>4000</mips>
 | 
			
		||||
				<ram>8000</ram>
 | 
			
		||||
				<storage>200000</storage>
 | 
			
		||||
				<VMs>
 | 
			
		||||
					<VM vmm="Xen">
 | 
			
		||||
						<core>2</core>
 | 
			
		||||
						<mips>1000</mips>
 | 
			
		||||
						<ram>2000</ram>
 | 
			
		||||
						<storage>50000</storage>
 | 
			
		||||
					</VM>
 | 
			
		||||
					<VM vmm="Xen">
 | 
			
		||||
						<core>2</core>
 | 
			
		||||
						<mips>1000</mips>
 | 
			
		||||
						<ram>2000</ram>
 | 
			
		||||
						<storage>50000</storage>
 | 
			
		||||
					</VM>
 | 
			
		||||
				</VMs>
 | 
			
		||||
			</host>
 | 
			
		||||
		</hosts>
 | 
			
		||||
	</datacenter>
 | 
			
		||||
	<datacenter arch="x86" os="Linux" vmm="Xen">
 | 
			
		||||
		<costPerBw>0.1</costPerBw>
 | 
			
		||||
		<costPerSec>3.0</costPerSec>
 | 
			
		||||
		<costPerMem>0.05</costPerMem>
 | 
			
		||||
		<costPerStorage>0.1</costPerStorage>
 | 
			
		||||
		<location>
 | 
			
		||||
			<x_pos>2</x_pos>
 | 
			
		||||
			<y_pos>2</y_pos>
 | 
			
		||||
			<wlan_id>1</wlan_id>
 | 
			
		||||
			<attractiveness>0</attractiveness>
 | 
			
		||||
		</location>
 | 
			
		||||
		<hosts>
 | 
			
		||||
			<host>
 | 
			
		||||
				<core>8</core>
 | 
			
		||||
				<mips>4000</mips>
 | 
			
		||||
				<ram>8000</ram>
 | 
			
		||||
				<storage>200000</storage>
 | 
			
		||||
				<VMs>
 | 
			
		||||
					<VM vmm="Xen">
 | 
			
		||||
						<core>2</core>
 | 
			
		||||
						<mips>1000</mips>
 | 
			
		||||
						<ram>2000</ram>
 | 
			
		||||
						<storage>50000</storage>
 | 
			
		||||
					</VM>
 | 
			
		||||
					<VM vmm="Xen">
 | 
			
		||||
						<core>2</core>
 | 
			
		||||
						<mips>1000</mips>
 | 
			
		||||
						<ram>2000</ram>
 | 
			
		||||
						<storage>50000</storage>
 | 
			
		||||
					</VM>
 | 
			
		||||
				</VMs>
 | 
			
		||||
			</host>
 | 
			
		||||
		</hosts>
 | 
			
		||||
	</datacenter>
 | 
			
		||||
</edge_devices>
 | 
			
		||||
							
								
								
									
										53
									
								
								scripts/birbnetes/matlab/getConfiguration.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								scripts/birbnetes/matlab/getConfiguration.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
%--------------------------------------------------------------
 | 
			
		||||
%description
 | 
			
		||||
% returns a value according to the given argumentssss
 | 
			
		||||
%--------------------------------------------------------------
 | 
			
		||||
function [ret_val] = getConfiguration(argType)
 | 
			
		||||
    if(argType == 1)
 | 
			
		||||
        ret_val = 'D:\sim_results';
 | 
			
		||||
    elseif(argType == 2)
 | 
			
		||||
        ret_val = 1; %Number of iterations
 | 
			
		||||
    elseif(argType == 3)
 | 
			
		||||
        ret_val = 100; %min number of mobile device
 | 
			
		||||
    elseif(argType == 4)
 | 
			
		||||
        ret_val = 100; %step size of mobile device count
 | 
			
		||||
    elseif(argType == 5)
 | 
			
		||||
        ret_val =1000; %max number of mobile device
 | 
			
		||||
    elseif(argType == 6)
 | 
			
		||||
        ret_val = 1; %xTickLabelCoefficient
 | 
			
		||||
    elseif(argType == 7)
 | 
			
		||||
        ret_val = {'SINGLE_TIER','TWO_TIER','TWO_TIER_WITH_EO'};
 | 
			
		||||
    elseif(argType == 8)
 | 
			
		||||
        ret_val = {'1-tier','2-tier','2-tier with EO'};
 | 
			
		||||
    elseif(argType == 9)
 | 
			
		||||
        ret_val=[10 3 12 12]; %position of figure
 | 
			
		||||
    elseif(argType == 10)
 | 
			
		||||
        ret_val = 'Number of Mobile Devices'; %Common text for x axis
 | 
			
		||||
    elseif(argType == 11)
 | 
			
		||||
        ret_val = 1; %return 1 if you want to save figure as pdf
 | 
			
		||||
    elseif(argType == 12)
 | 
			
		||||
        ret_val = 0; %return 1 if you want to plot errors
 | 
			
		||||
    elseif(argType == 20)
 | 
			
		||||
        ret_val=1; %return 1 if graph is plotted colerful
 | 
			
		||||
    elseif(argType == 21)
 | 
			
		||||
        ret_val=[0.55 0 0]; %color of first line
 | 
			
		||||
    elseif(argType == 22)
 | 
			
		||||
        ret_val=[0 0.15 0.6]; %color of second line
 | 
			
		||||
    elseif(argType == 23)
 | 
			
		||||
        ret_val=[0 0.23 0]; %color of third line
 | 
			
		||||
    elseif(argType == 24)
 | 
			
		||||
        ret_val=[0.6 0 0.6]; %color of fourth line
 | 
			
		||||
    elseif(argType == 25)
 | 
			
		||||
        ret_val=[0.08 0.08 0.08]; %color of fifth line
 | 
			
		||||
    elseif(argType == 26)
 | 
			
		||||
        ret_val=[0 0.8 0.8]; %color of sixth line
 | 
			
		||||
    elseif(argType == 27)
 | 
			
		||||
        ret_val=[0.8 0.4 0]; %color of seventh line
 | 
			
		||||
    elseif(argType == 28)
 | 
			
		||||
        ret_val=[0.8 0.8 0]; %color of eighth line
 | 
			
		||||
    elseif(argType == 40)
 | 
			
		||||
        ret_val={'-k*','-ko','-ks','-kv','-kp','-kd','-kx','-kh'}; %line style (marker) of the colerless line
 | 
			
		||||
    elseif(argType == 50)
 | 
			
		||||
        ret_val={':k*',':ko',':ks',':kv',':kp',':kd',':kx',':kh'}; %line style (marker) of the colerfull line
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										21
									
								
								scripts/birbnetes/matlab/plotAvgFailedTask.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								scripts/birbnetes/matlab/plotAvgFailedTask.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
function [] = plotAvgFailedTask()
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(1, 2, 'Failed Tasks (%)', 'ALL_APPS', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(1, 2, {'Failed Tasks for';'Augmented Reality App (%)'}, 'AUGMENTED_REALITY', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(1, 2, 'Failed Tasks for Health App (%)', 'HEALTH_APP', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(1, 2, {'Failed Tasks for';'Infotainment App (%)'}, 'INFOTAINMENT_APP', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(1, 2, 'Failed Tasks for Heavy Comp. App (%)', 'HEAVY_COMP_APP', 'percentage_for_all');
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(2, 2, 'Failed Tasks on Edge (%)', 'ALL_APPS', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(2, 2, {'Failed Tasks on Edge';'for Augmented Reality App (%)'}, 'AUGMENTED_REALITY', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(2, 2, 'Failed Tasks on Edge for Health App (%)', 'HEALTH_APP', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(2, 2, 'Failed Tasks on Edge for Infotainment App (%)', 'INFOTAINMENT_APP', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(2, 2, 'Failed Tasks on Edge for Heavy Comp. App (%)', 'HEAVY_COMP_APP', 'percentage_for_all');
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(3, 2, 'Failed Tasks on Cloud (%)', 'ALL_APPS', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(3, 2, {'Failed Tasks on Cloud for';'Augmented Reality App (%)'}, 'AUGMENTED_REALITY', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(3, 2, 'Failed Tasks on Cloud for Health App (%)', 'HEALTH_APP', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(3, 2, 'Failed Tasks on Cloud for Infotainment App (%)', 'INFOTAINMENT_APP', 'percentage_for_all');
 | 
			
		||||
    plotGenericResult(3, 2, 'Failed Tasks on Cloud for Heavy Comp. App (%)', 'HEAVY_COMP_APP', 'percentage_for_all');
 | 
			
		||||
    
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										21
									
								
								scripts/birbnetes/matlab/plotAvgNetworkDelay.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								scripts/birbnetes/matlab/plotAvgNetworkDelay.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
function [] = plotAvgNetworkDelay()
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(1, 7, 'Average Network Delay (sec)', 'ALL_APPS', '');
 | 
			
		||||
    plotGenericResult(1, 7, {'Average Network Delay';'for Augmented Reality App (sec)'}, 'AUGMENTED_REALITY', '');
 | 
			
		||||
    plotGenericResult(1, 7, 'Average Network Delay for Health App (sec)', 'HEALTH_APP', '');
 | 
			
		||||
    plotGenericResult(1, 7, {'Average Network Delay';'for Infotainment App (sec)'}, 'INFOTAINMENT_APP', '');
 | 
			
		||||
    plotGenericResult(1, 7, {'Average Network Delay';'for Heavy Comp. App (sec)'}, 'HEAVY_COMP_APP', '');
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(5, 1, 'Average WLAN Delay (sec)', 'ALL_APPS', '');
 | 
			
		||||
    plotGenericResult(5, 1, {'Average WLAN Delay';'for Augmented Reality App (sec)'}, 'AUGMENTED_REALITY', '');
 | 
			
		||||
    plotGenericResult(5, 1, 'Average WLAN Delay for Health App (sec)', 'HEALTH_APP', '');
 | 
			
		||||
    plotGenericResult(5, 1, {'Average WLAN Delay';'for Infotainment App (sec)'}, 'INFOTAINMENT_APP', '');
 | 
			
		||||
    plotGenericResult(5, 1, {'Average WLAN Delay';'for Heavy Comp. App %(sec)'}, 'HEAVY_COMP_APP', '');
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(5, 3, 'Average WAN Delay (sec)', 'ALL_APPS', '');
 | 
			
		||||
    plotGenericResult(5, 3, {'Average WAN Delay';'for Augmented Reality App (sec)'}, 'AUGMENTED_REALITY', '');
 | 
			
		||||
    plotGenericResult(5, 3, 'Average WAN Delay for Health App (sec)', 'HEALTH_APP', '');
 | 
			
		||||
    plotGenericResult(5, 3, {'Average WAN Delay';'for Infotainment App (sec)'}, 'INFOTAINMENT_APP', '');
 | 
			
		||||
    plotGenericResult(5, 3, {'Average WAN Delay';'for Heavy Comp. App (sec)'}, 'HEAVY_COMP_APP', '');
 | 
			
		||||
    
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										21
									
								
								scripts/birbnetes/matlab/plotAvgProcessingTime.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								scripts/birbnetes/matlab/plotAvgProcessingTime.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
function [] = plotAvgProcessingTime()
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(1, 6, 'Processing Time (sec)', 'ALL_APPS', '');
 | 
			
		||||
    plotGenericResult(1, 6, 'Processing Time for Augmented Reality App (sec)', 'AUGMENTED_REALITY', '');
 | 
			
		||||
    plotGenericResult(1, 6, 'Processing Time for Health App (sec)', 'HEALTH_APP', '');
 | 
			
		||||
    plotGenericResult(1, 6, 'Processing Time for Infotainment App (sec)', 'INFOTAINMENT_APP', '');
 | 
			
		||||
    plotGenericResult(1, 6, 'Processing Time for Heavy Comp. App (sec)', 'HEAVY_COMP_APP', '');
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(2, 6, 'Processing Time on Edge (sec)', 'ALL_APPS', '');
 | 
			
		||||
    plotGenericResult(2, 6, {'Processing Time on Edge';'for Augmented Reality App (sec)'}, 'AUGMENTED_REALITY', '');
 | 
			
		||||
    plotGenericResult(2, 6, {'Processing Time on Edge';'for Health App (sec)'}, 'HEALTH_APP', '');
 | 
			
		||||
    plotGenericResult(2, 6, {'Processing Time on Edge';'for Infotainment App (sec)'}, 'INFOTAINMENT_APP', '');
 | 
			
		||||
    plotGenericResult(2, 6, {'Processing Time on Edge';'for Heavy Computation App (sec)'}, 'HEAVY_COMP_APP', '');
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(3, 6, 'Processing Time on Cloud (sec)', 'ALL_APPS', '');
 | 
			
		||||
    plotGenericResult(3, 6, {'Processing Time on Cloud';'for Augmented Reality App (sec)'}, 'AUGMENTED_REALITY', '');
 | 
			
		||||
    plotGenericResult(3, 6, {'Processing Time on Cloud';'for Health App (sec)'}, 'HEALTH_APP', '');
 | 
			
		||||
    plotGenericResult(3, 6, {'Processing Time on Cloud';'for Infotainment App (sec)'}, 'INFOTAINMENT_APP', '');
 | 
			
		||||
    plotGenericResult(3, 6, {'Processing Time on Cloud';'for Heavy Computation App (sec)'}, 'HEAVY_COMP_APP', '');
 | 
			
		||||
    
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										21
									
								
								scripts/birbnetes/matlab/plotAvgServiceTime.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								scripts/birbnetes/matlab/plotAvgServiceTime.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
function [] = plotAvgServiceTime()
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(1, 5, 'Service Time (sec)', 'ALL_APPS', '');
 | 
			
		||||
    plotGenericResult(1, 5, {'Service Time for';'Augmented Reality App (sec)'}, 'AUGMENTED_REALITY', '');
 | 
			
		||||
    plotGenericResult(1, 5, 'Service Time for Health App (sec)', 'HEALTH_APP', '');
 | 
			
		||||
    plotGenericResult(1, 5, 'Service Time for Infotainment App (sec)', 'INFOTAINMENT_APP', '');
 | 
			
		||||
    plotGenericResult(1, 5, {'Service Time for';'Compute Intensive App (sec)'}, 'HEAVY_COMP_APP', '');
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(2, 5, 'Service Time on Edge (sec)', 'ALL_APPS', '');
 | 
			
		||||
    plotGenericResult(2, 5, {'Service Time on Edge';'for Augmented Reality App (sec)'}, 'AUGMENTED_REALITY', '');
 | 
			
		||||
    plotGenericResult(2, 5, 'Service Time on Edge for Health App (sec)', 'HEALTH_APP', '');
 | 
			
		||||
    plotGenericResult(2, 5, {'Service Time on Edge';'for Infotainment App (sec)'}, 'INFOTAINMENT_APP', '');
 | 
			
		||||
    plotGenericResult(2, 5, {'Service Time on Edge';'for Heavy Comp. App (sec)'}, 'HEAVY_COMP_APP', '');
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(3, 5, 'Service Time on Cloud (sec)', 'ALL_APPS', '');
 | 
			
		||||
    plotGenericResult(3, 5, {'Service Time on Cloud';'for Augmented Reality App (sec)'}, 'AUGMENTED_REALITY', '');
 | 
			
		||||
    plotGenericResult(3, 5, 'Service Time on Cloud for Health App (sec)', 'HEALTH_APP', '');
 | 
			
		||||
    plotGenericResult(3, 5, {'Service Time on Cloud';'for Infotainment App (sec)'}, 'INFOTAINMENT_APP', '');
 | 
			
		||||
    plotGenericResult(3, 5, {'Service Time on Cloud';'for Heavy Comp. App (sec)'}, 'HEAVY_COMP_APP', '');
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										9
									
								
								scripts/birbnetes/matlab/plotAvgVmUtilization.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								scripts/birbnetes/matlab/plotAvgVmUtilization.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
function [] = plotAvgVmUtilization()
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(2, 8, 'Average VM Utilization (%)', 'ALL_APPS', '');
 | 
			
		||||
    plotGenericResult(2, 8, {'Average VM Utilization';'for Augmented Reality App (%)'}, 'AUGMENTED_REALITY', '');
 | 
			
		||||
    plotGenericResult(2, 8, 'Average VM Utilization for Health App (%)', 'HEALTH_APP', '');
 | 
			
		||||
    plotGenericResult(2, 8, 'Average VM Utilization for Infotainment App (%)', 'INFOTAINMENT_APP', '');
 | 
			
		||||
    plotGenericResult(2, 8, 'Average VM Utilization for Heavy Comp. App (%)', 'HEAVY_COMP_APP', '');
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										149
									
								
								scripts/birbnetes/matlab/plotGenericResult.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										149
									
								
								scripts/birbnetes/matlab/plotGenericResult.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,149 @@
 | 
			
		||||
function [] = plotGenericResult(rowOfset, columnOfset, yLabel, appType, calculatePercentage)
 | 
			
		||||
    folderPath = getConfiguration(1);
 | 
			
		||||
    numOfSimulations = getConfiguration(2);
 | 
			
		||||
    startOfMobileDeviceLoop = getConfiguration(3);
 | 
			
		||||
    stepOfMobileDeviceLoop = getConfiguration(4);
 | 
			
		||||
    endOfMobileDeviceLoop = getConfiguration(5);
 | 
			
		||||
    xTickLabelCoefficient = getConfiguration(6);
 | 
			
		||||
    
 | 
			
		||||
    scenarioType = getConfiguration(7);
 | 
			
		||||
    legends = getConfiguration(8);
 | 
			
		||||
    numOfMobileDevices = (endOfMobileDeviceLoop - startOfMobileDeviceLoop)/stepOfMobileDeviceLoop + 1;
 | 
			
		||||
 | 
			
		||||
    pos=getConfiguration(9);
 | 
			
		||||
    
 | 
			
		||||
    all_results = zeros(numOfSimulations, size(scenarioType,2), numOfMobileDevices);
 | 
			
		||||
    min_results = zeros(size(scenarioType,2), numOfMobileDevices);
 | 
			
		||||
    max_results = zeros(size(scenarioType,2), numOfMobileDevices);
 | 
			
		||||
    
 | 
			
		||||
    for s=1:numOfSimulations
 | 
			
		||||
        for i=1:size(scenarioType,2)
 | 
			
		||||
            for j=1:numOfMobileDevices
 | 
			
		||||
                try
 | 
			
		||||
                    mobileDeviceNumber = startOfMobileDeviceLoop + stepOfMobileDeviceLoop * (j-1);
 | 
			
		||||
                    filePath = strcat(folderPath,'\ite',int2str(s),'\SIMRESULT_',char(scenarioType(i)),'_NEXT_FIT_',int2str(mobileDeviceNumber),'DEVICES_',appType,'_GENERIC.log');
 | 
			
		||||
 | 
			
		||||
                    readData = dlmread(filePath,';',rowOfset,0);
 | 
			
		||||
                    value = readData(1,columnOfset);
 | 
			
		||||
                    if(strcmp(calculatePercentage,'percentage_for_all'))
 | 
			
		||||
                        readData = dlmread(filePath,';',1,0);
 | 
			
		||||
                		totalTask = readData(1,1)+readData(1,2);
 | 
			
		||||
                        value = (100 * value) / totalTask;
 | 
			
		||||
                    elseif(strcmp(calculatePercentage,'percentage_for_completed'))
 | 
			
		||||
                        readData = dlmread(filePath,';',1,0);
 | 
			
		||||
                		totalTask = readData(1,1);
 | 
			
		||||
                        value = (100 * value) / totalTask;
 | 
			
		||||
                    elseif(strcmp(calculatePercentage,'percentage_for_failed'))
 | 
			
		||||
                        readData = dlmread(filePath,';',1,0);
 | 
			
		||||
                		totalTask = readData(1,2);
 | 
			
		||||
                        value = (100 * value) / totalTask;
 | 
			
		||||
                    end
 | 
			
		||||
 | 
			
		||||
                    all_results(s,i,j) = value;
 | 
			
		||||
                catch err
 | 
			
		||||
                    error(err)
 | 
			
		||||
                end
 | 
			
		||||
            end
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    if(numOfSimulations == 1)
 | 
			
		||||
        results = all_results;
 | 
			
		||||
    else
 | 
			
		||||
        results = mean(all_results); %still 3d matrix but 1xMxN format
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    results = squeeze(results); %remove singleton dimensions
 | 
			
		||||
    
 | 
			
		||||
    for i=1:size(scenarioType,2)
 | 
			
		||||
        for j=1:numOfMobileDevices
 | 
			
		||||
            x=all_results(:,i,j);                    % Create Data
 | 
			
		||||
            SEM = std(x)/sqrt(length(x));            % Standard Error
 | 
			
		||||
            ts = tinv([0.05  0.95],length(x)-1);   % T-Score
 | 
			
		||||
            CI = mean(x) + ts*SEM;                   % Confidence Intervals
 | 
			
		||||
 | 
			
		||||
            if(CI(1) < 0)
 | 
			
		||||
                CI(1) = 0;
 | 
			
		||||
            end
 | 
			
		||||
 | 
			
		||||
            if(CI(2) < 0)
 | 
			
		||||
                CI(2) = 0;
 | 
			
		||||
            end
 | 
			
		||||
 | 
			
		||||
            min_results(i,j) = results(i,j) - CI(1);
 | 
			
		||||
            max_results(i,j) = CI(2) - results(i,j);
 | 
			
		||||
        end
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    types = zeros(1,numOfMobileDevices);
 | 
			
		||||
    for i=1:numOfMobileDevices
 | 
			
		||||
        types(i)=startOfMobileDeviceLoop+((i-1)*stepOfMobileDeviceLoop);
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    hFig = figure;
 | 
			
		||||
    set(hFig, 'Units','centimeters');
 | 
			
		||||
    set(hFig, 'Position',pos);
 | 
			
		||||
    set(0,'DefaultAxesFontName','Times New Roman');
 | 
			
		||||
    set(0,'DefaultTextFontName','Times New Roman');
 | 
			
		||||
    set(0,'DefaultAxesFontSize',10);
 | 
			
		||||
    set(0,'DefaultTextFontSize',12);
 | 
			
		||||
    if(getConfiguration(20) == 1)
 | 
			
		||||
        for i=1:1:numOfMobileDevices
 | 
			
		||||
            xIndex=startOfMobileDeviceLoop+((i-1)*stepOfMobileDeviceLoop);
 | 
			
		||||
            
 | 
			
		||||
            markers = getConfiguration(50);
 | 
			
		||||
            for j=1:size(scenarioType,2)
 | 
			
		||||
                plot(xIndex, results(j,i),char(markers(j)),'MarkerFaceColor',getConfiguration(20+j),'color',getConfiguration(20+j));
 | 
			
		||||
                hold on;
 | 
			
		||||
            end
 | 
			
		||||
        end
 | 
			
		||||
        
 | 
			
		||||
        for j=1:size(scenarioType,2)
 | 
			
		||||
            if(getConfiguration(12) == 1)
 | 
			
		||||
                errorbar(types, results(j,:), min_results(j,:),max_results(j,:),':k','color',getConfiguration(20+j),'LineWidth',1.5);
 | 
			
		||||
            else
 | 
			
		||||
                plot(types, results(j,:),':k','color',getConfiguration(20+j),'LineWidth',1.5);
 | 
			
		||||
            end
 | 
			
		||||
            hold on;
 | 
			
		||||
        end
 | 
			
		||||
    
 | 
			
		||||
        set(gca,'color','none');
 | 
			
		||||
    else
 | 
			
		||||
        markers = getConfiguration(40);
 | 
			
		||||
        for j=1:size(scenarioType,2)
 | 
			
		||||
            if(getConfiguration(12) == 1)
 | 
			
		||||
                errorbar(types, results(j,:),min_results(j,:),max_results(j,:),char(markers(j)),'MarkerFaceColor','w','LineWidth',1.2);
 | 
			
		||||
            else
 | 
			
		||||
               plot(types, results(j,:),char(markers(j)),'MarkerFaceColor','w','LineWidth',1.2);
 | 
			
		||||
            end
 | 
			
		||||
            hold on;
 | 
			
		||||
        end
 | 
			
		||||
        
 | 
			
		||||
    end
 | 
			
		||||
    
 | 
			
		||||
    lgnd = legend(legends,'Location','NorthWest');
 | 
			
		||||
    if(getConfiguration(20) == 1)
 | 
			
		||||
        set(lgnd,'color','none');
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    hold off;
 | 
			
		||||
    axis square
 | 
			
		||||
    xlabel(getConfiguration(10));
 | 
			
		||||
    set(gca,'XTick', (startOfMobileDeviceLoop*xTickLabelCoefficient):(stepOfMobileDeviceLoop*xTickLabelCoefficient):endOfMobileDeviceLoop);
 | 
			
		||||
    set(gca,'XTickLabel', (startOfMobileDeviceLoop*xTickLabelCoefficient):(stepOfMobileDeviceLoop*xTickLabelCoefficient):endOfMobileDeviceLoop);
 | 
			
		||||
    ylabel(yLabel);
 | 
			
		||||
    set(gca,'XLim',[startOfMobileDeviceLoop-5 endOfMobileDeviceLoop+5]);
 | 
			
		||||
    
 | 
			
		||||
    set(get(gca,'Xlabel'),'FontSize',12)
 | 
			
		||||
    set(get(gca,'Ylabel'),'FontSize',12)
 | 
			
		||||
    set(lgnd,'FontSize',11)
 | 
			
		||||
    
 | 
			
		||||
    if(getConfiguration(11) == 1)
 | 
			
		||||
        set(hFig, 'PaperUnits', 'centimeters');
 | 
			
		||||
        set(hFig, 'PaperPositionMode', 'manual');
 | 
			
		||||
        set(hFig, 'PaperPosition',[0 0 pos(3) pos(4)]);
 | 
			
		||||
        set(gcf, 'PaperSize', [pos(3) pos(4)]); %Keep the same paper size
 | 
			
		||||
        filename = strcat(folderPath,'\',int2str(rowOfset),'_',int2str(columnOfset),'_',appType);
 | 
			
		||||
        saveas(gcf, filename, 'pdf');
 | 
			
		||||
    end
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										27
									
								
								scripts/birbnetes/matlab/plotTaskFailureReason.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								scripts/birbnetes/matlab/plotTaskFailureReason.m
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
function [] = plotTaskFailureReason()
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(1, 10, 'Failed Task due to VM Capacity (%)', 'ALL_APPS', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(1, 10, {'Failed Task due to VM Capacity';'for Augmented Reality App (%)'}, 'AUGMENTED_REALITY', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(1, 10, {'Failed Task due to VM Capacity';'for Health App (%)'}, 'HEALTH_APP', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(1, 10, {'Failed Task due to VM Capacity';'for Infotainment App (%)'}, 'INFOTAINMENT_APP', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(1, 10, {'Failed Task due to VM Capacity';'for Heavy Computation App (%)'}, 'HEAVY_COMP_APP', 'percentage_for_failed');
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(1, 11, 'Failed Task due to Mobility (%)', 'ALL_APPS', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(1, 11, {'Failed Task due to Mobility';'for Augmented Reality App (%)'}, 'AUGMENTED_REALITY', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(1, 11, {'Failed Task due to Mobility';'for Health App (%)'}, 'HEALTH_APP', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(1, 11, {'Failed Task due to Mobility';'for Infotainment App (%)'}, 'INFOTAINMENT_APP', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(1, 11, {'Failed Task due to Mobility';'for Heavy Computation App (%)'}, 'HEAVY_COMP_APP', 'percentage_for_failed');
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(5, 5, 'Failed Tasks due to WLAN failure (%)', 'ALL_APPS', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(5, 5, {'Failed Tasks due to WLAN failure';'for Augmented Reality App (%)'}, 'AUGMENTED_REALITY', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(5, 5, {'Failed Tasks due to WLAN failure';'for Health App (%)'}, 'HEALTH_APP', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(5, 5, {'Failed Tasks due to WLAN failure';'for Infotainment App (%)'}, 'INFOTAINMENT_APP', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(5, 5, {'Failed Tasks due to WLAN failure';'for Heavy Comp. App (%)'}, 'HEAVY_COMP_APP', 'percentage_for_failed');
 | 
			
		||||
 | 
			
		||||
    plotGenericResult(5, 7, 'Failed Tasks due to WAN failure (%)', 'ALL_APPS', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(5, 7, {'Failed Tasks due to WAN failure';'for Augmented Reality App (%)'}, 'AUGMENTED_REALITY', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(5, 7, {'Failed Tasks due to WAN failure';'for Health App (%)'}, 'HEALTH_APP', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(5, 7, {'Failed Tasks due to WAN failure';'for Infotainment App (%)'}, 'INFOTAINMENT_APP', 'percentage_for_failed');
 | 
			
		||||
    plotGenericResult(5, 7, {'Failed Tasks due to WAN failure';'for Heavy Comp. App (%)'}, 'HEAVY_COMP_APP', 'percentage_for_failed');
 | 
			
		||||
 | 
			
		||||
end
 | 
			
		||||
							
								
								
									
										59
									
								
								scripts/birbnetes/run_scenarios.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								scripts/birbnetes/run_scenarios.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
if [ "$#" -ne 2 ]; then
 | 
			
		||||
	echo "Missing arguments! Please provide number of parallel processes and number of iterations."
 | 
			
		||||
	echo "Usage: '$0 4 10'"
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
re='^[0-9]+$'
 | 
			
		||||
if ! [[ $1 =~ $re ]] ; then
 | 
			
		||||
	echo "$1 is not an integer! Please provide number of parallel processes."
 | 
			
		||||
	echo "Usage: '$0 4 10'"
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if ! [[ $2 =~ $re ]] ; then
 | 
			
		||||
	echo "$1 is not an integer! Please provide number of iterations."
 | 
			
		||||
	echo "Usage: '$0 4 10'"
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
script_root_path="$(dirname "$(readlink -f "$0")")"
 | 
			
		||||
root_out_folder=${script_root_path}/output
 | 
			
		||||
num_of_processes=$1
 | 
			
		||||
iterationNumber=$2
 | 
			
		||||
process_counter=0
 | 
			
		||||
 | 
			
		||||
date=$(date '+%d-%m-%Y_%H-%M')
 | 
			
		||||
simulation_out_folder=${root_out_folder}/${date}
 | 
			
		||||
mkdir -p $simulation_out_folder
 | 
			
		||||
 | 
			
		||||
simulations=$(cat ${script_root_path}/simulation.list)
 | 
			
		||||
 | 
			
		||||
rm -rf ${script_root_path}/tmp_runner*
 | 
			
		||||
		
 | 
			
		||||
for sim_args in $simulations
 | 
			
		||||
do
 | 
			
		||||
	scenario_name=$(echo $sim_args | cut -d ';' -f1)
 | 
			
		||||
	edge_devices_file=$(echo $sim_args | cut -d ';' -f2)
 | 
			
		||||
	applications_file=$(echo $sim_args | cut -d ';' -f3)
 | 
			
		||||
	for (( i=1; i<=$iterationNumber; i++ ))
 | 
			
		||||
	do
 | 
			
		||||
		process_id=$(($process_counter % $num_of_processes))
 | 
			
		||||
		process_counter=$(($process_counter + 1))
 | 
			
		||||
		
 | 
			
		||||
		echo "${script_root_path}/runner.sh $simulation_out_folder $scenario_name $edge_devices_file $applications_file ${i}" >> "${simulation_out_folder}/tmp_runner${process_id}.sh"
 | 
			
		||||
	done
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
#num_of_cores=$(grep -c ^processor /proc/cpuinfo)
 | 
			
		||||
 | 
			
		||||
for (( i=0; i<$num_of_processes; i++ ))
 | 
			
		||||
do
 | 
			
		||||
	chmod +x ${simulation_out_folder}/tmp_runner${i}.sh
 | 
			
		||||
	${simulation_out_folder}/tmp_runner${i}.sh &
 | 
			
		||||
 | 
			
		||||
# 	pid=$!
 | 
			
		||||
#	cpu=$(($i % $num_of_cores))
 | 
			
		||||
# 	taskset -cp $cpu,$cpu $pid
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										18
									
								
								scripts/birbnetes/runner.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								scripts/birbnetes/runner.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
script_root_path="$(dirname "$(readlink -f "$0")")"
 | 
			
		||||
simulation_out_folder=$1
 | 
			
		||||
scenario_name=$2
 | 
			
		||||
edge_devices_file=$3
 | 
			
		||||
applications_file=$4
 | 
			
		||||
iteration_number=$5
 | 
			
		||||
 | 
			
		||||
scenario_out_folder=${simulation_out_folder}/${scenario_name}/ite${iteration_number}
 | 
			
		||||
scenario_conf_file=${script_root_path}/config/${scenario_name}.properties
 | 
			
		||||
scenario_edge_devices_file=${script_root_path}/config/${edge_devices_file}
 | 
			
		||||
scenario_applications_file=${script_root_path}/config/${applications_file}
 | 
			
		||||
 | 
			
		||||
mkdir -p $scenario_out_folder
 | 
			
		||||
java -classpath '../../bin:../../lib/cloudsim-4.0.jar:../../lib/commons-math3-3.6.1.jar:../../lib/colt.jar' edu.boun.edgecloudsim.applications.birbnetes.MainApp $scenario_conf_file $scenario_edge_devices_file $scenario_applications_file $scenario_out_folder $iteration_number > ${scenario_out_folder}.log
 | 
			
		||||
tar -czf ${scenario_out_folder}.tar.gz -C $simulation_out_folder/${scenario_name} ite${iteration_number}
 | 
			
		||||
rm -rf $scenario_out_folder
 | 
			
		||||
							
								
								
									
										1
									
								
								scripts/birbnetes/simulation.list
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								scripts/birbnetes/simulation.list
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
default_config;edge_devices.xml;applications.xml
 | 
			
		||||
		Reference in New Issue
	
	Block a user