What are the Common Utilization Model Available in CloudSim?
Share
Condition for Common Utilization Model Available in CloudSim
Description: In CloudSim, Utilization Models define how cloudlets (tasks) utilize various resources like CPU, memory, and bandwidth during their execution. The main purpose of these models is to simulate different resource usage behaviors.
UtilizationModelFull
UtilizationModelFull in CloudSim is one of the most commonly used Utilization Models. It represents a model in which a cloudlet (task) fully utilizes a specified resource for the entire duration of its execution. This is useful for scenarios where you need to simulate tasks that continuously use 100% of a particular resource, such as CPU or memory.
Example
import org.cloudbus.cloudsim.Cloudlet;
import org.cloudbus.cloudsim.UtilizationModelFull;
int cloudletId = 0;
long length = 10000; // The length of the cloudlet in Million Instructions (MI)
int pesNumber = 1; // Number of CPU cores required
long fileSize = 300; // File size in MB
long outputSize = 300; // Output size in MB
// Create a cloudlet with full utilization of CPU, RAM, and bandwidth
Cloudlet cloudlet = new Cloudlet(
cloudletId,
length,
pesNumber,
fileSize,
outputSize,
new UtilizationModelFull(), // CPU utilization model
new UtilizationModelFull(), // RAM utilization model
new UtilizationModelFull() // Bandwidth utilization model
);
cloudlet.setUserId(brokerId);
UtilizationModelNull
UtilizationModelNull is another utilization model provided by CloudSim that represents a scenario where a cloudlet (task) does not use any resources. It simulates a condition where the utilization of a given resource (e.g., CPU, RAM, bandwidth) is always zero during the entire execution of the cloudlet.
Example
import org.cloudbus.cloudsim.Cloudlet;
import org.cloudbus.cloudsim.UtilizationModelNull;
int cloudletId = 0;
long length = 10000; // The length of the cloudlet in Million Instructions (MI)
int pesNumber = 1; // Number of CPU cores required
long fileSize = 300; // File size in MB
long outputSize = 300; // Output size in MB
// Create a cloudlet with zero utilization for CPU, RAM, and bandwidth
Cloudlet cloudlet = new Cloudlet(
cloudletId,
length,
pesNumber,
fileSize,
outputSize,
new UtilizationModelNull(), // CPU utilization model
new UtilizationModelNull(), // RAM utilization model
new UtilizationModelNull() // Bandwidth utilization model
);
cloudlet.setUserId(brokerId);
UtilizationModelStochastic
UtilizationModelStochastic is a utilization model in CloudSim that simulates the usage of resources based on a stochastic (random) pattern. It provides more realistic modeling of resource usage by cloudlets, as it introduces variability in how resources are consumed during the cloudlets execution.
Example
import org.cloudbus.cloudsim.Cloudlet;
import org.cloudbus.cloudsim.UtilizationModelStochastic;
int cloudletId = 0;
long length = 10000; // The length of the cloudlet in Million Instructions (MI)
int pesNumber = 1; // Number of CPU cores required
long fileSize = 300; // File size in MB
long outputSize = 300; // Output size in MB
// Create a cloudlet with stochastic utilization for CPU
Cloudlet cloudlet = new Cloudlet(
cloudletId,
length,
pesNumber,
fileSize,
outputSize,
new UtilizationModelStochastic(), // CPU utilization model
new UtilizationModelStochastic(), // RAM utilization model
new UtilizationModelStochastic() // Bandwidth utilization model
);
cloudlet.setUserId(brokerId);
UtilizationModelPlanetLabInMemory
UtilizationModelPlanetLabInMemory is a specific utilization model in CloudSim that simulates resource usage based on real-world workload traces, specifically from the PlanetLab project. The PlanetLab dataset provides realistic utilization patterns for cloud simulation by recording the actual usage of resources over time from distributed systems.
Example
import org.cloudbus.cloudsim.UtilizationModelPlanetLabInMemory;
import org.cloudbus.cloudsim.Cloudlet;
import java.io.IOException;
// Load the PlanetLab trace data (assuming data is available as a file path)
String filePath = "path/to/planetlab_trace_data.txt";
try {
UtilizationModelPlanetLabInMemory utilizationModel = new UtilizationModelPlanetLabInMemory(filePath, 300.0);
int cloudletId = 0;
long length = 10000; // The length of the cloudlet in Million Instructions (MI)
int pesNumber = 1; // Number of CPU cores required
long fileSize = 300; // File size in MB
long outputSize = 300; // Output size in MB
// Create a cloudlet using the PlanetLab utilization model
Cloudlet cloudlet = new Cloudlet(
cloudletId,
length,
pesNumber,
fileSize,
outputSize,
utilizationModel, // CPU utilization model
new UtilizationModelPlanetLabInMemory(filePath, 300.0), // RAM utilization model
new UtilizationModelPlanetLabInMemory(filePath, 300.0) // Bandwidth utilization model
);
cloudlet.setUserId(brokerId);
} catch (IOException e) {
e.printStackTrace();
}