Table of Contents
Why this page has no benchmark scores
The earlier version of this page reported a CPU score, 52,000 read and 44,000 write IOPS, 950 Mbps and a composite rank for "Azure VPS", framed as this site's own testing. None of it could be sourced, and a single number for "Azure" is not meaningful anyway: a B1s and a D2s v5 are different products with different guarantees, and a burstable VM's score depends on how many credits it had when the test started. What Microsoft publishes is more useful than a score: a baseline the VM will always deliver, a burst it can deliver while credits last, and hard caps on disk and network. Those are reproduced below with their sources, and the last section shows how to measure the specific VM you bought.
CPU: baselines, credits, processors, prices
From Microsoft's size documentation (Bv1, Basv2, Bsv2, Bpsv2, Dasv5, Dsv5) and the Retail Prices API for East US, Linux, pay-as-you-go, at 730 hours:
| Size | vCPU / memory | Baseline per vCPU | Credits earned per hour / max banked | Processor (docs) | Monthly, East US |
|---|---|---|---|---|---|
| B1ls (Bv1) | 1 / 0.5 GiB | 5% | 3 / 72 | Not named on the Bv1 page | $3.80 |
| B1s (Bv1) | 1 / 1 GiB | 10% | 6 / 144 | Not named on the Bv1 page | $7.59 |
| B1ms (Bv1) | 1 / 2 GiB | 20% | 12 / 288 | Not named on the Bv1 page | $15.11 |
| B2ats v2 (Basv2) | 2 / 1 GiB | 20% | 24 / 576 | AMD EPYC 7763v (Milan) | $6.86 |
| B2pts v2 (Bpsv2) | 2 / 1 GiB | 20% | 24 / 576 | Ampere Altra (Arm) | $6.13 |
| B2ts v2 (Bsv2) | 2 / 1 GiB | 20% | 24 / 576 | Intel Xeon 8473C or 8370C | $7.59 |
| B2als v2 (Basv2) | 2 / 4 GiB | 30% | 36 / 864 | AMD EPYC 7763v (Milan) | $27.45 |
| B2ls v2 (Bsv2) | 2 / 4 GiB | 30% | 36 / 864 | Intel Xeon 8473C or 8370C | $30.37 |
| B2as v2 (Basv2) | 2 / 8 GiB | 40% | 48 / 1,152 | AMD EPYC 7763v (Milan) | $54.90 |
| D2as v5 (Dasv5) | 2 / 8 GiB | No credit model | n/a | AMD EPYC 7763v (Milan) or 9004 (Genoa) | $62.78 |
| D2s v5 (Dsv5) | 2 / 8 GiB | No credit model | n/a | Intel Xeon 8473C or 8370C | $70.08 |
The rule, in Microsoft's words: B-series VMs "are the only VM type that use credits for CPU performance provisioning"; the VM "accumulates CPU credits when a workload is operating below the base CPU performance threshold and uses credits when running above the base CPU performance threshold until all of its credits are consumed. Upon consuming all the CPU credits, a B-series virtual machine is throttled back to its base CPU performance until it accumulates the credits to CPU burst again." Microsoft's credit-model page gives the accounting as a formula, credits banked per minute equal to ((base CPU performance times vCPUs) minus (percentage CPU times vCPUs)) divided by 100, which makes one credit one vCPU at 100 percent for one minute; so a B2als v2 earning 36 an hour can run one vCPU flat out for 36 minutes of every hour, or both vCPUs for 18, on top of its baseline, and can bank up to 864 minutes for a longer burst. A benchmark run on a fresh B-series VM with a full bank measures the burst; the same benchmark an hour later measures the baseline.
Disk: the VM cap and the disk cap
Azure documents two ceilings. The size tables give per-VM uncached limits: for B2ats v2, B2als v2 and B2ts v2, 3,750 IOPS and 85 MBps, bursting to 10,000 IOPS and 960 MBps; for D2s v5, the same 3,750 and 85 base figures. The managed-disk documentation gives per-disk limits by tier and size:
| Disk (32 GiB) | Base IOPS | Base throughput | Burst | Monthly, East US |
|---|---|---|---|---|
| Standard HDD S4 | Up to 500 | Up to 60 MB/s | not listed at this size | $1.54 |
| Standard SSD E4 | Up to 500 | Up to 100 MB/s | not listed at this size | $2.40 |
| Premium SSD P4 | 120 provisioned | 25 MB/s | 3,500 IOPS max burst | $5.28 |
The lower ceiling governs. A B2als v2 with the usual E4 OS disk can issue 3,750 IOPS but the disk serves up to 500, so the disk is the limit; a P4 is provisioned at 120 and bursts to 3,500. Larger Premium tiers raise the disk limit (a P30 at 1,024 GiB is 5,000 provisioned IOPS per the same table), and at that point the VM cap becomes the binding one. The 52,000 IOPS the old page reported would have exceeded both ceilings on any small size and could only have been a cache measurement; the disk performance page covers how to test a disk without measuring the cache.
Network caps and egress
The size tables list a maximum network bandwidth per VM: 6,250 Mbps for every B v2 size from B2ats v2 through B4als v2 (and their Intel and Arm twins), and 12,500 Mbps for a D2s v5. These are caps on the virtual NIC inside Azure; throughput to a user across the internet is bounded by everything between. What a small server pays for is egress: the Retail Prices API lists data transfer out from East US at $0 for the first 100 GB a month, then $0.087 per GB, so a server moving 1 TB a month pays about $80 in transfer on top of the VM, disk and IP. Inbound is free.
D and F sizes: no credits, higher price
If a workload runs the CPU steadily, the burst model works against you and the answer is a size without it. From the Retail Prices API, East US, Linux: D2ps v5 (2 vCPU Arm, 8 GiB) $0.077 an hour, $56.21 a month; F2s v2 (2 vCPU, 4 GiB) $0.0846, $61.76; D2as v5 (2 vCPU AMD, 8 GiB) $0.086, $62.78; D2s v5 (2 vCPU Intel, 8 GiB) $0.096, $70.08. The Dsv5 documentation lists the same Sapphire Rapids and Ice Lake processors as Bsv2 "in a hyper threaded configuration"; the difference from a B size is not the chip but the entitlement to all of it, all the time. For 2 vCPU and 4 to 8 GiB, that entitlement costs roughly $30 to $43 a month more than the B equivalent, before the same disk, IP and egress lines.
Measuring the VM you bought
The only benchmark that describes your server is one you run on it, and on a B-series VM it must be run twice: once with a full credit bank and once after the bank is spent, because those are the two speeds you will live with. Microsoft exposes the credit balance as the CPU Credits Remaining metric in the portal; note it before each run.
# Ubuntu/Debian: tools
apt install -y sysbench fio
# CPU: 60 seconds, all vCPUs. Run with a full credit bank, then again after
# a sustained load (e.g. a 90-minute stress run) has drained the bank.
sysbench cpu --threads=$(nproc) --time=60 run
# Disk: 4K random read on the OS disk, direct I/O, file larger than RAM,
# queue depth 32; compare the IOPS line with the E4/P4 caps above.
cd /var/tmp && fio --name=randread --filename=fio.test --size=4G --rw=randread --bs=4k \
--ioengine=libaio --iodepth=32 --direct=1 --runtime=30 --time_based --group_reporting
rm -f /var/tmp/fio.test
# Memory bandwidth (rough): sysbench memory --time=30 run
Read the results against the published caps: a 4K random read at or near 500 IOPS on an E4 is the disk cap working as documented, not a slow host; a CPU score that halves between the two runs is the credit model working as documented. Compare against your application's needs, not against another provider's number, because the other provider's number was almost certainly measured on a different size, a different disk tier and a full credit bank.
What the fixed-price hosts publish instead
Azure's advantage on this page is that it publishes ceilings; most VPS hosts publish none. Vultr, Linode, DigitalOcean, InterServer, OVHcloud, Contabo and Hostwinds state a storage type (NVMe, SSD, RAID-10) and a port speed, and their acceptable-use terms govern sustained CPU rather than a percentage; none publishes per-plan IOPS. Google Cloud publishes disk figures per GiB (the disk page reproduces them) and AWS publishes T-family baselines identical in structure to Azure's (the Lightsail vs EC2 page has them). For price at the same sizes, the Azure alternatives page sets B2als v2 against nine fixed-price hosts.
What this page could not verify
- Bv1 network bandwidth per size and Bv1 host processor models: the Bv1 page lists NIC counts and a bandwidth table this page did not parse in full, and does not name a processor.
- Prices outside East US: the API is per region.
- Which host a given VM lands on within a family: the docs list possible processors, not a guarantee.
- Any measured figure: none, by design.