Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Horizontal VM Scaling (Auto Up/Down Scaling) #41

manoelcampos opened this issue Dec 2, 2016 · 0 comments

Horizontal VM Scaling (Auto Up/Down Scaling) #41

manoelcampos opened this issue Dec 2, 2016 · 0 comments


Copy link

@manoelcampos manoelcampos commented Dec 2, 2016


Implement horizontal scaling of VMs by creating a VM snapshot to enable starting copies of such a VM from that snapshot when a given SLA metric is violated. This should be an auto scaling feature such as the AWS Auto Scaling.

Detailed information about how the feature should work

The horizontal scaling of VMs has to be performed, at least initially, considering the usage of some VM resource such as RAM, CPU or BW. As each Cloudlet has an UtilizationModel for each of these resources, to compute the total VM usage of a given resource it has to be just added up the utilization of all currently executing Cloudlets.

The horizontal auto scale mechanism has to be provided with a predicate that defines a lower utilization threshold (that may be composed of multiple conditions such as utilization of CPU and RAM) and a predicate that defines an upper utilization threshold, like it is used for PowerVmAllocationPolicyMigration.

The horizontal scale can act when dynamically created Cloudlets are submitted to the VM (see feature #43). By this way, Load Balancer defined inside the broker should use the upper utilization threshold to define when a new VM has to be created in order to balance the arrived Cloudlets between such VMs.

It has to use the lower utilization threshold to define when a VM has to be destroyed. An under utilised VM will be destroyed just after all Cloudlets have finished. The Load Balancer won't just place new Cloudlets on such a VM. At the current version, if a VM doesn't have Cloudlets anymore, it will just be destroyed when all VMs of the same broker finishes executing.

The Load Balancer has to be provided with a Supplier that knows how to create new VMs under request. The balancer has to maintain a map with the list of additional VMs that was created to balance the load of a given VM. By this way, there is not need to add a new attribute to relate a VM to another one.

When a VM is created from a snapshot, it must start with no running Cloudlets, simulating a cold boot. The Cloudlets that will execute inside such a new VM will be those ones dynamically created and submitted by the Load Balancer mechanism inside the Broker.

An example scenario where this feature should be used

It will enable starting new VMs in order to fulfil SLA requirements and balance workload.

A brief explanation of why you think this feature is useful

It will allow to evaluate how SLA is fulfilled based on different load balancing policies.

Included Examples

Related Issues

@manoelcampos manoelcampos added the feature label Dec 2, 2016
@manoelcampos manoelcampos self-assigned this Dec 2, 2016
@manoelcampos manoelcampos changed the title VM horizontal scaling VM horizontal scaling (Auto Up/Down Scaling) Dec 2, 2016
@manoelcampos manoelcampos changed the title VM horizontal scaling (Auto Up/Down Scaling) Horizontal VM Scaling (Auto Up/Down Scaling) Oct 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
1 participant
You can’t perform that action at this time.