Calculating VM Savings

VMPower's goal is to save you cash on your cloud bill by optimizing the cost-per-hour of your Virtual Machines. You might have noticed the 'Monthly Savings' on the left side of the dashboard and wondered how we got to this number.

Monthly savings screenshot

We'll go over the details of where this number comes from and how you can checkout the details for yourself.

Pay As You Go Rates

Currently today, VMPower utilizes pay-as-you-go rates and doesn't pick up negotiated rates or rates based on monetary commitments. That means the prices on the AWS on-demand pricing page and Azure pricing calculator are the prices used.

You can always email us about a particular rate you want for your VMs and we'll be happy to apply that. In the future VM prices will be adjustable from the dashboard.

Calculating Hours

Because VMPower runs outside of the first party cloud provider, it is unable to know the true compute hours for the month (unless billing APIs are used and even then we would have to wait until the end of billing cycle).

Instead, VMPower watches your VMs for power state changes. These changes can either be external (for example, you power off a VM via the AWS CLI) or can be from VMPower via:

Regardless, every time a VM is powered on or off, it is impossible for VMPower to understand how long that VM will be in that state. Even for VM schedules, a schedule could be disabled at any point. To work-around this VMPower assumes that when a VM is powered on, it will be powered on until the end of the month. Similarly, when a vm is powered off, it will be assumed it will be off until end of month.

VMPower records these state changes with the associated hours and costs throughout the month.

Summing Up The $avings

You'll notice the new Savings Report page has a list of VMPower-detected VM state changes. As your VMs change state during the month, it impacts what the current savings situation of that VM is for the month.

Example: A Simple VM Schedule

Monthly savings screenshot

For example, we have a VM schedule which allocated and deallocated a VM with an hourly cost of $0.073. The hours field is the number of hours from the Date field to the end of the month. Depending if the VM state changed from on or off impacts if the savings field is negative or positive, respectively.

Let's say the above screenshot is the complete monthly power-state changes for the VM simpletranscription/ci-server. In this case the total savings would be calculated as:

SUMMED_CHANGES = ( -$22.19 + $22.12 + -$22.04 + $21.97 ) = -$0.14
MONTHLY_COST = 31 Days * 24 Hours/Day * $0.073/hour

Where SUMMED_CHANGES is the summation of all the Savings fields, MONTHLY_COST is the total compute cost of running the VM for a month and VM_MONTHLY_SAVINGS is the calculated savings for the instance simpletranscription/ci-server.

If the summation of your VM activity is negative, it represents a running cost of the VM for the month and therefore that value is added to the monthly cost to provide you the amount you didn't have to pay this month.

Conversely, if the summation of your VM activity is positive, it represents an amount that was saved and is simply added to your monthly savings.

Each of these VM savings values are summed and that is what you see on the dashboard.

As always you can reach out with any questions you might have!