cloudsimplus / cloudsimplus

State-of-the-art Framework 🏗 for Cloud Computing ⛅️ Simulation: a modern, full-featured, easier-to-use, highly extensible 🧩, faster 🚀 and more accurate ☕️ Java 17+ tool for cloud computing research 🎓. Examples: https://github.com/cloudsimplus/cloudsimplus-examples

Home Page:https://cloudsimplus.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DatacenterBroker interface has to provide a method to define the policy used to select a VM to run each Cloudlet

manoelcampos opened this issue · comments

FEATURE

The DatacenterBroker interface is not well defined in order to enable implementing classes to define how a VM is selected to place each submitted Cloudlet. This is a problem came from CloudSim, that not even has a DatacenterBroker interface.

If the goal is to allow third-party developers to implement new DatacenterBrokers, the framework has to provide the necessary base interfaces and classes to allow that. Currently such extensibility is not being allowed, without changing core framework classes.

The protected createCloudletsInVms() method in DatacenterBrokerSimple class always select the first VM to each Cloudlet that was not manually bound to a given VM.

Detailed information about how the feature should work

DatacenterBroker interface has to provide one method to be implemented in order to specify the policy used to select a VM for a given Cloudlet. The DatacenterBrokerSimple.createCloudletsInVms() has to be refactored in order to move the VM selection code to that proposed method.

An example scenario where this feature should be used

This feature will allow implementing simulations that can give priorities to cloudlets to be assigned to VMs, according to the policy implemented by a custom DatacenterBroker. Different policies can asses even characteristics of VM and Cloudlets when assigning a Cloudlet to a VM, trying the best mapping possible. A Knapsack Problem approach could be implemented by a DatacenterBroker in order to pack the maximum number of cloudlets into the best VM, or assess mappings that will reduce overall task completion time for all Cloudlets, reduce the mean task completion the among Cloudlets, select VMs where the Cloudlet resource usage would reach a certain level (in cases where the cloudlet has dynamic UtilizationModel's), or several other scenarios.

A brief explanation of why you think this feature is useful

It will enable real extensibility to third-party developers to create custom implementations of a DatacenterBroker.

Examples Available

CloudletToVmMappingBestFit.java