Data | Source |
---|---|
AWS Spot Price History | AWS archive |
AWS On Demand Pricing | AWS On Demand Pricing Page |
Demand Data | Google Cluster Usage Trace |
Machine Configuration Data | Google Cloud Machine Types |
The above dataset is aggregated into a python dictionary which is of the format
KEY: VM Type
VALUE: LIST ->
- MIPS
- RAM
- Bandwidth
- On Demand Price
- LIST -> Spot Prices
- LIST -> Spot Scores
- Category of the VM
- LIST -> RAM distribution
Outlined below is a basic overview of the structure of the program.
Execution starts from this file. A datacenter is first created with appropriate characteristics. Then a datacenter broker is created, using the required VM allocation policy and cloudlet allocation policy. A list of hosts is then created and assigned to the datacenter. Finally a list of cloudlets is created and submitted to the broker for execution.
On receiving a list of cloudlets from the Main.py file, the broker chooses a VM from the configuration data available and provisions it in accordance with the cloudlet allocation policy and places the VM into a host according to the VM allocation policy.
This thread constantly monitors the VMs running, and is responsible for the following:
- Deprovisioning VM when corrsponding cloudlet has finished execution.
- In case of cloudlet migration, deletes the VM freed up and invokes broker to assign a new VM to the migrating cloudlet.
This thread constantly monitors the running cloudlet, and on every clock tick, does the following:
- Checks if cloudlet needs to migrate based on RAM utilisation or increase in spot price above the on demand price
- Migrates the cloudlet if required
- Inserts the end time for the cloudlet-vm combination into a list property of the cloudlet object
- Sets the previous allocated VM type of the cloudlet to the current VM type, to avoid possible infinite loops during migration
- Sets the migration event to RAM or SPOT_SCORE, depending on the event.
- Removes the cloudlet from its assigned VM
- This is detected by VmThread.py, which then assigns a new VM according to above description.
- Migrates the cloudlet if required
- If migration is not required, then decrements the length of the cloudlet according to the MIPS of the assigned VM.
The output of the program is printed to the console window and to the appropriate log files inside the log folder.