How to: Schedule Azure VMs to Resize

Azure VMs can be resized to use more CPU cores, memory or now even GPUs. As you may already know, Azure has auto-scale which helps with horizontally scaling virtual machines to adapt to changing computational demand by adding or subtracting VMs from a cluster. You can also achieve this with Azure VM Scalesets.

However, to vertically scale a VM, you need to resize. This could be helpful for applications such as rendering tasks or continuous integration. It would be great if Azure VMs could be resized automatically during certain times of the week, allowing you to vertically scale VM resources during peak hours and descale them during off hours.

You could do this with Azure run book automation however you'll need to understand your applicable VM sizes for your datacenter and current VM size type. Alternatively you can do this with a 3rd party service called VMPower. They have a credit card free trial you can try yourself.

I found their blog post here which outlines the 6 step process of scheduling batches of Azure VMs to resize up or down. The service automatically calculates allowable VM sizes and the cost increase or savings of potential new VM sizes based on your datacenter. It will also show you the number of cores, memory and IOps of each possible size. It is actually very similar to my other post on how to use their service to power on or off Azure VMs.

What do you think? Can automating VM resizing save your organization its Azure bill? Is this better than using runbooks?