Research breakthrough possible @S-Logix pro@slogix.in

Office Address

Social List

How to Calculate the Average Resources Utilized by Each Host in a Datacenter?

Average Resources Utilized by Each Host in a Datacenter

Rendition for Average Resources Utilized by Each Host in a Datacenter

  • Description:
    To calculate the average resource utilization for each host in a datacenter, track the usage of resources such as CPU, memory, bandwidth, and storage. Accumulate utilization data by monitoring resource usage as tasks are assigned to hosts, tracking both used and available resources. Once task assignments are complete, calculate the average utilization for each resource type by averaging the utilization values across all hosts or over a specific period. Finally, compute the overall average utilization by summing the utilization of each resource type across hosts and dividing by the total number of hosts.
Sample Code
  • import java.util.List;
    public class ResourceUtilization {
    // Method to calculate average resource utilization
    public static void calculateAverageResourceUtilization(List hostList) {
    int size = hostList.size(); // Get the size of the host list
    // Arrays to store the utilization values of CPU, bandwidth, and storage
    double[] avgCPU = new double[size];
    double[] avgBandwidth = new double[size];
    double[] avgStorage = new double[size];
    // Loop through each host in the datacenter
    for (int i = 0; i < size; i++) {
    Host host = hostList.get(i); // Get each host from the list
    double mips = host.getMips(); // Initial CPU capacity (in MIPS)
    long bandwidth = host.getBandwidth(); // Initial bandwidth (in Mbps)
    long storage = host.getStorage(); // Initial storage (in GB)
    // Get the available resources of each host after VM allocation
    double availableMips = host.getAvailableMips();
    long availableBandwidth = host.getAvailableBandwidth();
    long availableStorage = host.getAvailableStorage();
    // Calculate the utilization for each resource
    avgCPU[i] = ((mips - availableMips) / mips) * 100;
    avgBandwidth[i] = ((bandwidth - availableBandwidth) / (double)bandwidth) * 100; //
    Ensure proper division with casting
    avgStorage[i] = ((storage - availableStorage) / (double)storage) * 100; // Ensure proper
    division with casting
    // Print the results for each host
    System.out.printf("Host %d: CPU Utilization = %.2f%%, Bandwidth Utilization = %.2f%%,
    Storage Utilization = %.2f%%%n",
    host.getId(), avgCPU[i], avgBandwidth[i], avgStorage[i]);
    }
    // Calculate and print the overall average utilization for CPU, Bandwidth, and Storage
    double avgCPUUtilization = calculateAverage(avgCPU);
    double avgBandwidthUtilization = calculateAverage(avgBandwidth);
    double avgStorageUtilization = calculateAverage(avgStorage);
    System.out.printf("Average CPU Utilization = %.2f%%%n", avgCPUUtilization);
    System.out.printf("Average Bandwidth Utilization = %.2f%%%n", avgBandwidthUtilization);
    System.out.printf("Average Storage Utilization = %.2f%%%n", avgStorageUtilization);
    }
    // Method to calculate the average of an array of values
    private static double calculateAverage(double[] values) {
    double sum = 0;
    for (double value : values) {
    sum += value;
    }
    return sum / values.length;
    }
    // Host class representing a host in the datacenter (simplified version)
    static class Host {
    private int id;
    private double mips;
    private long bandwidth;
    private long storage;
    private double availableMips;
    private long availableBandwidth;
    private long availableStorage;
    public Host(int id, double mips, long bandwidth, long storage,
    double availableMips, long availableBandwidth, long availableStorage) {
    this.id = id;
    this.mips = mips;
    this.bandwidth = bandwidth;
    this.storage = storage;
    this.availableMips = availableMips;
    this.availableBandwidth = availableBandwidth;
    this.availableStorage = availableStorage;
    }
    public int getId() {
    return id;
    }
    public double getMips() {
    return mips;
    }
    public long getBandwidth() {
    return bandwidth;
    }
    public long getStorage() {
    return storage;
    }
    public double getAvailableMips() {
    return availableMips;
    }
    public long getAvailableBandwidth() {
    return availableBandwidth;
    }
    public long getAvailableStorage() {
    return availableStorage;
    }
    }
    // Main method to test the functionality
    public static void main(String[] args) {
    // Create a list of hosts for testing (using sample values for initial and available resources)
    List hostList = List.of(
    new Host(1, 1000, 10000, 50000, 800, 8000, 40000),
    new Host(2, 1500, 12000, 60000, 900, 9000, 45000),
    new Host(3, 2000, 15000, 70000, 1000, 10000, 50000)
    );
    // Calculate and print the average resource utilization for each host
    calculateAverageResourceUtilization(hostList);
    }
    }
ScreenShots
  • Average Resources Utilized by Each Host in a Datacenter1