Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Performance.xlsx
Binary file not shown.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# CloudSim: A Framework For Modeling And Simulation Of Cloud Computing Infrastructures And Services #

Modified version of CloudSim, By Sabir Mohammedi Taieb,

Added new power vm selection and allocation policies

Added new simulation metrics: Migraiton Time, Migration Energy.

Cloud computing is the leading approach for delivering reliable, secure, fault-tolerant, sustainable, and scalable computational services. Hence timely, repeatable, and controllable methodologies for performance evaluation of new cloud applications and policies before their actual development are reqruied. Because utilization of real testbeds limits the experiments to the scale of the testbed and makes the reproduction of results an extremely difficult undertaking, simulation may be used.

CloudSim goal is to provide a generalized and extensible simulation framework that enables modeling, simulation, and experimentation of emerging Cloud computing infrastructures and application services, allowing its users to focus on specific system design issues that they want to investigate, without getting concerned about the low level details related to Cloud-based infrastructures and services.
Expand Down
9 changes: 9 additions & 0 deletions modules/GUI/CSS/approach.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
.AnchorPane{
-fx-background-color: linear-gradient(#440979 50%,#8b00ff 100%);
}
.button{
-fx-background-color : black;
}
.button:hover{
-fx-background-color: linear-gradient(#440979 50%,#8b00ff 100%);
}
14 changes: 14 additions & 0 deletions modules/GUI/CSS/simulationconfig.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/*
* Empty Stylesheet file.
*/

.mainFxmlClass {
-fx-background-color: linear-gradient(#136f94 50%,#8b00ff 100%);
}

.button{
-fx-background-color : black;
}
.button:hover{
-fx-background-color: linear-gradient(#440979 50%,#8b00ff 100%);
}
18 changes: 18 additions & 0 deletions modules/GUI/CSS/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
.button{
-fx-background-color: black;
-fx-text-fill: white;
}

.button:hover
{
-fx-background-color: linear-gradient(#440979 40%, #8b00ff 100%);
}

.button:pressed
{
-fx-background-color: #300c4e;
}

.label{
-fx-text-fill: white;
}
23 changes: 23 additions & 0 deletions modules/GUI/cloudsimgui/AboutUsController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package GUI.cloudsimgui;

import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.Initializable;

/**
*
* @author sabir
*/
public class AboutUsController implements Initializable{

@Override
public void initialize(URL url, ResourceBundle rb) {

}

}
51 changes: 51 additions & 0 deletions modules/GUI/cloudsimgui/ApproachController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package GUI.cloudsimgui;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;

/**
*
* @author sabir
*/
public class ApproachController implements Initializable{

@FXML
private Button SelectionBtn;

@FXML
private Button AllocationBtn;

@FXML
private Button LowerThrBtn;

@Override
public void initialize(URL url, ResourceBundle rb) {

}

@FXML
public void gotoSelection() throws IOException{
}

@FXML
public void gotoAllocation() throws IOException{

}

@FXML
public void gotoLowerThr() throws IOException{

}
}
38 changes: 38 additions & 0 deletions modules/GUI/cloudsimgui/CloudSimGui.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@

package GUI.cloudsimgui;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;

/**
*
* @author sabir
*/
public class CloudSimGui extends Application {

@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("/GUI/fxml/FXMLDocument.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
scene.getStylesheets().add("/GUI/CSS/style.css");
stage.setTitle("CloudSim GUI");
stage.getIcons().add(new Image("/GUI/icons/MainIcon.png"));
stage.setResizable(false);
stage.setMaxWidth(1095);
stage.setMaxHeight(635);
stage.show();
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}

}
147 changes: 147 additions & 0 deletions modules/GUI/cloudsimgui/EsvBarChartController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
package GUI.cloudsimgui;

import java.net.URL;
import java.util.Arrays;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;

/**
* FXML Controller class
*
* @author Sabir Mohammedi Taieb
*/
public class EsvBarChartController implements Initializable {

/**
* Initializes the controller class.
*/

@FXML
private BarChart<String, Double> EsvBarChart;

@FXML
private CategoryAxis EsvX;

@FXML
private NumberAxis EsvY;

@Override
public void initialize(URL url, ResourceBundle rb) {
EsvX.setCategories(FXCollections.<String>observableArrayList(Arrays.asList("50/50","150/120","200/150","250/200","350/250","400/350","450/350","500/450",
"550/450","600/400","600/420","600/450")));

XYChart.Series set1 = new XYChart.Series<>();
set1.setName("NfIqrGpaMmt");
set1.getData().add(new XYChart.Data("50/50",SimulationConfigController.getEsvMatrix(0, 0)));
set1.getData().add(new XYChart.Data("150/120",SimulationConfigController.getEsvMatrix(1, 0)));
set1.getData().add(new XYChart.Data("200/150",SimulationConfigController.getEsvMatrix(2, 0)));
set1.getData().add(new XYChart.Data("250/200",SimulationConfigController.getEsvMatrix(3, 0)));
set1.getData().add(new XYChart.Data("350/250",SimulationConfigController.getEsvMatrix(4, 0)));
set1.getData().add(new XYChart.Data("400/350",SimulationConfigController.getEsvMatrix(5, 0)));
set1.getData().add(new XYChart.Data("450/350",SimulationConfigController.getEsvMatrix(6, 0)));
set1.getData().add(new XYChart.Data("500/450",SimulationConfigController.getEsvMatrix(7, 0)));
set1.getData().add(new XYChart.Data("550/450",SimulationConfigController.getEsvMatrix(8, 0)));
set1.getData().add(new XYChart.Data("600/400",SimulationConfigController.getEsvMatrix(9, 0)));
set1.getData().add(new XYChart.Data("600/420",SimulationConfigController.getEsvMatrix(10,0)));
set1.getData().add(new XYChart.Data("600/450",SimulationConfigController.getEsvMatrix(11, 0)));

XYChart.Series set2 = new XYChart.Series<>();
set2.setName("IqrMc");
set2.getData().add(new XYChart.Data("50/50",SimulationConfigController.getEsvMatrix(0, 1)));
set2.getData().add(new XYChart.Data("150/120",SimulationConfigController.getEsvMatrix(1, 1)));
set2.getData().add(new XYChart.Data("200/150",SimulationConfigController.getEsvMatrix(2, 1)));
set2.getData().add(new XYChart.Data("250/200",SimulationConfigController.getEsvMatrix(3, 1)));
set2.getData().add(new XYChart.Data("350/250",SimulationConfigController.getEsvMatrix(4, 1)));
set2.getData().add(new XYChart.Data("400/350",SimulationConfigController.getEsvMatrix(5, 1)));
set2.getData().add(new XYChart.Data("450/350",SimulationConfigController.getEsvMatrix(6, 1)));
set2.getData().add(new XYChart.Data("500/450",SimulationConfigController.getEsvMatrix(7, 1)));
set2.getData().add(new XYChart.Data("550/450",SimulationConfigController.getEsvMatrix(8, 1)));
set2.getData().add(new XYChart.Data("600/400",SimulationConfigController.getEsvMatrix(9, 1)));
set2.getData().add(new XYChart.Data("600/420",SimulationConfigController.getEsvMatrix(10,1)));
set2.getData().add(new XYChart.Data("600/450",SimulationConfigController.getEsvMatrix(11, 1)));

XYChart.Series set3 = new XYChart.Series<>();
set3.setName("LrMmt");
set3.getData().add(new XYChart.Data("50/50",SimulationConfigController.getEsvMatrix(0, 2)));
set3.getData().add(new XYChart.Data("150/120",SimulationConfigController.getEsvMatrix(1, 2)));
set3.getData().add(new XYChart.Data("200/150",SimulationConfigController.getEsvMatrix(2, 2)));
set3.getData().add(new XYChart.Data("250/200",SimulationConfigController.getEsvMatrix(3, 2)));
set3.getData().add(new XYChart.Data("350/250",SimulationConfigController.getEsvMatrix(4, 2)));
set3.getData().add(new XYChart.Data("400/350",SimulationConfigController.getEsvMatrix(5, 2)));
set3.getData().add(new XYChart.Data("450/350",SimulationConfigController.getEsvMatrix(6, 2)));
set3.getData().add(new XYChart.Data("500/450",SimulationConfigController.getEsvMatrix(7, 2)));
set3.getData().add(new XYChart.Data("550/450",SimulationConfigController.getEsvMatrix(8, 2)));
set3.getData().add(new XYChart.Data("600/400",SimulationConfigController.getEsvMatrix(9, 2)));
set3.getData().add(new XYChart.Data("600/420",SimulationConfigController.getEsvMatrix(10,2)));
set3.getData().add(new XYChart.Data("600/450",SimulationConfigController.getEsvMatrix(11, 2)));

XYChart.Series set4 = new XYChart.Series<>();
set4.setName("MadMu");
set4.getData().add(new XYChart.Data("50/50",SimulationConfigController.getEsvMatrix(0, 3)));
set4.getData().add(new XYChart.Data("150/120",SimulationConfigController.getEsvMatrix(1, 3)));
set4.getData().add(new XYChart.Data("200/150",SimulationConfigController.getEsvMatrix(2, 3)));
set4.getData().add(new XYChart.Data("250/200",SimulationConfigController.getEsvMatrix(3, 3)));
set4.getData().add(new XYChart.Data("350/250",SimulationConfigController.getEsvMatrix(4, 3)));
set4.getData().add(new XYChart.Data("400/350",SimulationConfigController.getEsvMatrix(5, 3)));
set4.getData().add(new XYChart.Data("450/350",SimulationConfigController.getEsvMatrix(6, 3)));
set4.getData().add(new XYChart.Data("500/450",SimulationConfigController.getEsvMatrix(7, 3)));
set4.getData().add(new XYChart.Data("550/450",SimulationConfigController.getEsvMatrix(8, 3)));
set4.getData().add(new XYChart.Data("600/400",SimulationConfigController.getEsvMatrix(9, 3)));
set4.getData().add(new XYChart.Data("600/420",SimulationConfigController.getEsvMatrix(10,3)));
set4.getData().add(new XYChart.Data("600/450",SimulationConfigController.getEsvMatrix(11, 3)));

XYChart.Series set5 = new XYChart.Series<>();
set5.setName("ThrRs");
set5.getData().add(new XYChart.Data("50/50",SimulationConfigController.getEsvMatrix(0, 4)));
set5.getData().add(new XYChart.Data("150/120",SimulationConfigController.getEsvMatrix(1, 4)));
set5.getData().add(new XYChart.Data("200/150",SimulationConfigController.getEsvMatrix(2, 4)));
set5.getData().add(new XYChart.Data("250/200",SimulationConfigController.getEsvMatrix(3, 4)));
set5.getData().add(new XYChart.Data("350/250",SimulationConfigController.getEsvMatrix(4, 4)));
set5.getData().add(new XYChart.Data("400/350",SimulationConfigController.getEsvMatrix(5, 4)));
set5.getData().add(new XYChart.Data("450/350",SimulationConfigController.getEsvMatrix(6, 4)));
set5.getData().add(new XYChart.Data("500/450",SimulationConfigController.getEsvMatrix(7, 4)));
set5.getData().add(new XYChart.Data("550/450",SimulationConfigController.getEsvMatrix(8, 4)));
set5.getData().add(new XYChart.Data("600/400",SimulationConfigController.getEsvMatrix(9, 4)));
set5.getData().add(new XYChart.Data("600/420",SimulationConfigController.getEsvMatrix(10,4)));
set5.getData().add(new XYChart.Data("600/450",SimulationConfigController.getEsvMatrix(11,4)));

XYChart.Series set6 = new XYChart.Series<>();
set6.setName("LrrMmt");
set6.getData().add(new XYChart.Data("50/50",SimulationConfigController.getEsvMatrix(0, 5)));
set6.getData().add(new XYChart.Data("150/120",SimulationConfigController.getEsvMatrix(1, 5)));
set6.getData().add(new XYChart.Data("200/150",SimulationConfigController.getEsvMatrix(2, 5)));
set6.getData().add(new XYChart.Data("250/200",SimulationConfigController.getEsvMatrix(3, 5)));
set6.getData().add(new XYChart.Data("350/250",SimulationConfigController.getEsvMatrix(4, 5)));
set6.getData().add(new XYChart.Data("400/350",SimulationConfigController.getEsvMatrix(5, 5)));
set6.getData().add(new XYChart.Data("450/350",SimulationConfigController.getEsvMatrix(6, 5)));
set6.getData().add(new XYChart.Data("500/450",SimulationConfigController.getEsvMatrix(7, 5)));
set6.getData().add(new XYChart.Data("550/450",SimulationConfigController.getEsvMatrix(8, 5)));
set6.getData().add(new XYChart.Data("600/400",SimulationConfigController.getEsvMatrix(9, 5)));
set6.getData().add(new XYChart.Data("600/420",SimulationConfigController.getEsvMatrix(10,5)));
set6.getData().add(new XYChart.Data("600/450",SimulationConfigController.getEsvMatrix(11, 5)));

XYChart.Series set7 = new XYChart.Series<>();
set7.setName("IqrMmt");
set7.getData().add(new XYChart.Data("50/50",SimulationConfigController.getEsvMatrix(0, 6)));
set7.getData().add(new XYChart.Data("150/120",SimulationConfigController.getEsvMatrix(1, 6)));
set7.getData().add(new XYChart.Data("200/150",SimulationConfigController.getEsvMatrix(2, 6)));
set7.getData().add(new XYChart.Data("250/200",SimulationConfigController.getEsvMatrix(3, 6)));
set7.getData().add(new XYChart.Data("350/250",SimulationConfigController.getEsvMatrix(4, 6)));
set7.getData().add(new XYChart.Data("400/350",SimulationConfigController.getEsvMatrix(5, 6)));
set7.getData().add(new XYChart.Data("450/350",SimulationConfigController.getEsvMatrix(6, 6)));
set7.getData().add(new XYChart.Data("500/450",SimulationConfigController.getEsvMatrix(7, 6)));
set7.getData().add(new XYChart.Data("550/450",SimulationConfigController.getEsvMatrix(8, 6)));
set7.getData().add(new XYChart.Data("600/400",SimulationConfigController.getEsvMatrix(9, 6)));
set7.getData().add(new XYChart.Data("600/420",SimulationConfigController.getEsvMatrix(10,6)));
set7.getData().add(new XYChart.Data("600/450",SimulationConfigController.getEsvMatrix(11, 6)));

EsvBarChart.getData().addAll(set1,set2,set3,set4,set5,set6,set7);
}

}
67 changes: 67 additions & 0 deletions modules/GUI/cloudsimgui/FXMLDocumentController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package GUI.cloudsimgui;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.stage.Stage;

/**
*
* @author sabir
*/
public class FXMLDocumentController implements Initializable {
@FXML
private Label label;

@FXML
private void goToSimulationConfig() throws IOException{
Parent root = FXMLLoader.load(getClass().getResource("/GUI/fxml/SimulationConfig.fxml"));
Stage window = new Stage();
Scene scene = new Scene(root);
scene.getStylesheets().add("/GUI/CSS/simulationconfig.css");
window.setScene(scene);
window.setTitle("Simulation Configuration");
window.getIcons().add(new Image("/GUI/icons/MainIcon.png"));
window.setResizable(false);
window.show();
}

@FXML
private void goToAbout() throws IOException{
Parent root = FXMLLoader.load(getClass().getResource("/GUI/fxml/AboutUs.fxml"));
Stage window = new Stage();
Scene scene = new Scene(root);
window.setScene(scene);
window.setTitle("About Us");
window.getIcons().add(new Image("/GUI/icons/MainIcon.png"));
window.setResizable(false);
window.show();
}


@FXML
private void goToApproach() throws IOException{
Parent root = FXMLLoader.load(getClass().getResource("/GUI/fxml/Approach.fxml"));
Stage window = new Stage();
Scene scene = new Scene(root);
scene.getStylesheets().add("/GUI/CSS/simulationconfig.css");
window.setScene(scene);
window.setTitle("Approach");
window.getIcons().add(new Image("/GUI/icons/MainIcon.png"));
window.setResizable(false);
window.show();
}

@Override
public void initialize(URL url, ResourceBundle rb) {
// TODO
}

}
Loading