One of the most common complaints about Azure Virtual Machine (VM) pricing is that it’s too expensive for small workloads. For custom web applications you could share an App Service Plan, which is great if the app can be hosted within Azure App Service. However, if your workload needs a full VM, then there wasn’t really a great option unless you were willing to share a VM with multiple applications. This can pose many management difficulties. Thankfully, Microsoft has been listening to feedback of wanting an even more cost effective and affordable cloud for smaller workloads too. The Azure B-Series VM sizes are the answer to this, and instead being “just cheaper VMs” they offer an innovative advancement to Infrastructure as a Service (IaaS).
Burstable VMs
It’s been assumed for a long time that eventually the older VM instance sizes like the old A-Series would eventually just become cheaper, or possibly a new VM Series would be introduced based on some kind of cheaper CPU hardware. Instead, Microsoft has introduced the new B-Series that, stated simply, offers partial or fractions of a CPU to be allocated. That simple definition isn’t the entirety of how the new “burstable” B-Series VM sizes are implemented.
Many smaller workloads do NOT utilize the full CPUs allocated. These workloads are generally over provisioned and waste money. These are workloads like web server, small databases, as well as development, test or QA environments. Previously there weren’t any great hosting options if these required a dedicated VM.
These types of smaller workloads are great candidates for what Microsoft is referring to as “burstable” workloads. These will use a fraction of the CPU allocation most of the time, with only infrequent bursts of using 100% CPU for only a short time when necessary. It’s generally overboard to provision and pay for 100% CPU when it’s rarely utilized.
“Burstable” VMs will use a fraction of the allocated CPU power, then burst to use 100% infrequently for short periods of time.
Azure B-Series VM Sizes
As an answer to solve the hosting problem of “burstable” workloads, Microsoft has introduced the B-Series VM sizes. This essentially takes the ideas of “consumption plan” pricing from Serverless compute with Azure Functions and merges it with Virtual Machines (VMs). This allows for a form of “pay for what you use” to apply to partial CPU Cores in addition to full VM instances together in a way that really can help save hosting costs in a much more extreme way.
As a result, the B-Series VMs enable a far cheaper hosting option for lightweight VM workloads. The following screenshot from the Azure Portal shows the estimated cost per month in USD for the 6 B-Series sizes currently in Preview (at the time of writing this article.)
That’s right, a dedicated Azure VM for less than $5/mo!
Credit Banking and Bursting to 100%
The B-Series VMs work much differently than the other VM Series. You pay for a baseline of vCPU performance utilization with the number of vCPU cores allocated. Then you will accumulate and bank a number of credits during the time when you only need that baseline vCPU utilization percentage. Then when the VM needs to burst to 100% it can do so when necessary and spend the banked credits to do so.
The B1S VM size has 1 vCPU allocated with a baseline CPU performance of 10%. This means that generally the VM can use up to 10% CPU utilization of that single vCPU. Then, the B1S VM will bank 6 credits per hour up to a maximum of 144 credits that can be banked when utilizing less than the base performance. Then when the VM needs more than 10% CPU it can burst up to use more CPU performance and spend the banked credits to do so.
Looking at the math of the B1S VM size, it’ll be able to accumulate up to 144 credits in a 24 hour period at the rate of 6 per hour. This means that the B1S VM size will be able to burst to 100% CPU performance utilization once every 24 hours.
The B8ms VM Size has 8 vCPU’s allocated with a baseline CPU performance of 135%. This means the baseline allows for the utilization of 1 vCPu at 100% and a second at 35%, essentially. Then the B8ms can bank credits at 81 per hour. After credits have been banked, the B8ms size can then burst to 100% of it’s 8 vCPU’s once per day; that’s a total CPU performance utilization of 800% in burstable capacity!
Here’s a list of the 6 B-Series VM sizes available currently in the Preview:
Size | vCPU | Baseline Perf | Burstable Perf | Credits Banked / hr | Max Banked Credits |
---|---|---|---|---|---|
Standard_B1s | 1 | 10% | 100% | 6 | 144 |
Standard_B1ms | 1 | 20% | 100% | 12 | 288 |
Standard_B2s | 2 | 40% | 200% | 24 | 576 |
Standard_B2ms | 2 | 60% | 200% | 36 | 864 |
Standard_B4ms | 4 | 90% | 400% | 54 | 1296 |
Standard_B8ms | 8 | 135% | 800% | 81 | 1944 |
The new B-Series is as cheap as less than $5 USD per month for the smallest size; the Standard B1s. This offers a dedicated Azure VM for you to use for small, lightweight workloads. Although, the Standard B8ms offers 8 “burstable” vCPU cores for approximately $139 USD per month offering a baseline of 135%. This means the B8ms at its base is similar to other Single vCPU Core VM sizes, but it has the additional capability to burst to 800% vCPU performance utilization and use all 8 Cores at 100% each for short periods.
This is really a great innovation to VM hosting in the Microsoft Azure cloud. It will certainly enable many more usage scenarios, as well as new utilizations for old workloads that have generally been over provisioned before the introduction of the B-Series VM sizes.
When you say it can burst up to 100% once per day…. For how long is that? 1 minute? 1 hour?
Also at what rate are credits burnt up and do you burn them quicker when using 100% than say 50% CPU?
I was trying to simplify the explanation. Basically, you can accrue credits up to the max that can be accrued in a 24 hour period. So if you keep “spending” them to burst each day, then you can essentially do it “once per day.” MS hasn’t really said how “spending” credits works, or how accruing at a slower rate works either. We’ll have to wait until Ignite 2017 likely to hear more on how the accruing and spending of credits really works, and for how long you can burst up to 100% vCPU utilization.
1 minute at 100% CPU costs 1 credit. 1 minute at 50% CPU costs 0.5 credit.
it is not declared how the credits are spent.
“once per day” is a very strange definition. Does it mean “100% of cpu for one second?” or for a hour? or “one credit is one second of cpu burst?”
Based on my preliminary testing, a new B1S VM has 144 credits starting off. 1 credit is burned at a rate of 1 minute at 100% CPU. How credits are banked is complicated, but the specifics are here; https://docs.microsoft.com/en-us/azure/virtual-machines/linux/b-series-burstable
Is this statement correct? “This means that the B1S VM size will be able to burst to 100% CPU performance utilization once every 24 hours”
Surely it can burst to 100% depending on available credits?
Yes it would be on available credits. I was trying to simplify the explanation since you can only only accumulate up to 24 hours of credits at a time.
I have a preview instance B8MS set to auto-stop and start. The available CPU credits build up each day but are wiped out when the machine is de-allocated. If the machine was left running this wouldn’t happen (or would it?). Why aren’t the credits built up retained across restarts?
You are correct. The credits only build up when the VM is running.
B4MS with 4vCPUs + 16GB Estimate 154.01/month
D4S_V3 with 4vCPUs + 16GB Estimate 163.68/month
Why would I choose the b-series. Doesn’t seem like enough savings to deal with the potential oddities that “might” happen with bursting…
It feels like I should just go with the D4S_V3…
Am I missing something?
If you have a variable and/or intermittent workload then the burstable B-series makes sense. If you have a consistent workload with consistent load, then a standard VM is more appropriate. The B-series enables a cheaper option if you don’t need to reserve a full VM 100% of the time; essentially. It really depends on what you’re running. For example, if you normally only use 10 or 20% of the VM resources, but occasionally need to burst to 90 or 100% for relatively short periods, then the B-series would likely fit your workload well. If you consistently need only 10 or 20% of the VM resources, and never burst higher than 30%, then a smaller VM would fit you better. Hope this helps. 🙂
Thanks for your response. I get that the B-Series is bursting and charges are based on cpu utilization over time. Why doesn’t the cost estimator in Azure reflect what you ware saying? There is only about a 10$/month price difference show in the estimator. Is it because the estimator is “assuming” a high level of processor utilization? If that’s so, the estimator should be adjusted to show estimated cost based on percent of utilization. Maybe each B series VM needs three estimates ;listed (30,60, 100)… Looking at the estimator, the $10 “estimated” savings of the B-Series doesn’t match the marketing of the B-Series… Just say’n… Maybe I’m not understanding something about the estimator.
I’m not sure where you are getting your prices from but if you look at https://azure.microsoft.com/en-gb/pricing/details/virtual-machines/windows/ then the
b4MS is £125 a month for Pay as you Go (down to £61 a month for 3 yr reserved)
D4s v3 is £230 a month for pay as you go (down to £157 a month for 3 yr reserved)
Thats a sizeable price difference.
Keep in mind the Azure VM pricing does vary some from region to region.
Hi,
I agree with John.
I do not see any benefit.
I pay just 10$ less per month, and I’ll be limited to 90% of the CPUs… but I can have 400% on burst when I have accumulated enough credit.
for 10$ I have this 400% all the time. no constraint.
I really dont understand where the advantage is. for me there is more constraint and risk for a tiny cost advantage.
and what’s the impact if finally my workload is too big for a longer period of time?
Does my VM will be slow down?
The Burstable VMs in Azure have a very special use case where you need to instantly scale up to use more resources where waiting for autoscale to add additional resources / VMs would be too slow. Most workloads are best to just use a “normal” VM instance size with clear dedicated resources. It’s nice that B-Series VMs offer a more flexible pricing model when it fits, but most uses don’t really benefit from it entirely.
Thanks again for your reply. The pricing I listed is what shows in the Azure Resource Manager portal when using the ARM portal to create a new VM. I guess I’m just going to stick with the D-Series until the value proposition of the B-Series is clearer in comparison.