Skip to content

03 — Host VM Sizing

Chosen SKU: Standard_E104ids_v5

PropertyValue
SKUStandard_E104ids_v5
vCPU104
RAM672 GB
Local NVMe~3.8 TB (ephemeral)
Temp diskIncluded in NVMe
NetworkUp to 100 Gbps
Max NICs8
Isolated hardwareYes — dedicated physical host
RegionEast US

Why This SKU

1. Isolated Hardware

The v5 series "ids" suffix means isolated, dedicated storage. More importantly, the Standard_E104ids_v5 is an isolated VM SKU — the VM runs on a physical host that is not shared with any other customer's workloads. This matters for the demo because:

  • Consistent performance: No noisy neighbor effects during a live demo with an audience
  • Full vCPU capacity guaranteed: Intel hyper-threading is stable and predictable
  • Nested virtualization works reliably: AMD and Intel isolated SKUs both support nested virtualization with consistent performance

2. vCPU Count (104 vCPUs)

Hyper-V requires over-commit headroom to handle nested VM startup and migration bursts. The nested load uses 70 vCPUs total, leaving 34 vCPUs for:

  • The host OS itself (~4 vCPUs typical under load)
  • Hyper-V hypervisor overhead
  • Burst headroom during live migration (VMs temporarily run on two nodes during migration)
  • GitHub Actions runner workload

3. RAM (672 GB)

The nested VMs consume 296 GB of RAM total. The remaining ~376 GB provides:

  • Host OS: ~8 GB baseline
  • Hyper-V Dynamic Memory overhead: ~20 GB (startup RAM buffers)
  • Multiple in-flight live migrations simultaneously
  • Workload VMs created during the demo itself
  • Safety margin so the host never pages

4. Local NVMe (~3.8 TB)

The host VM includes a local NVMe device that is ephemeral (lost on deallocate/redeploy). This is intentional for demo use:

  • Copy VHDXes from Azure Managed Disks or blob storage to NVMe at start of demo day for dramatically faster I/O
  • iSCSI traffic between hviscsi01 and the cluster nodes benefits from NVMe latency rather than Azure disk latency
  • Do not use NVMe for persistent configuration — store configuration in the VHDX files that live on attached managed disks

Nested VM Load Table

VMvCPURAMvSwitch NICs
hvdc0128 GB1 (Mgmt)
hviscsi01416 GB3 (Mgmt + 2× Storage)
hvnode011664 GB5 (Mgmt + Migration + 2× Storage + Heartbeat)
hvnode021664 GB5
hvnode031664 GB5
hvnode041664 GB5
hvwac01416 GB2 (Mgmt + External)
hvscvmm01832 GB2 (Mgmt + External)
Total82328 GB

Note: hvnode vCPU counts include headroom for nested guest VMs created during the demo. Guest VMs do NOT count against the 82 listed here.


vCPU Headroom Math

Host physical vCPUs:              104
Nested VM allocation:              82
Host OS + hypervisor overhead:     ~6
Available headroom:                16 vCPUs

Live migration overhead (peak):    ~8 vCPUs (two nodes simultaneously migrating)
Remaining after migration burst:    8 vCPUs

Demo guest VMs (workload):          8 vCPUs (4× 2-vCPU VMs typical)
Net headroom post-demo:             0 vCPUs — plan carefully

Important: Do not create more than 4 demo workload VMs (each ≤2 vCPU) during the demo session, or you risk vCPU contention. The DEMO-READY checkpoint should reflect a safe pre-created VM set.


RAM Headroom Math

Host physical RAM:                672 GB
Nested VM static allocation:      328 GB
Host OS baseline:                  ~8 GB
Hyper-V startup overhead:         ~20 GB
Total allocated:                  356 GB

Available headroom:               316 GB

Dynamic Memory buffers (10%):     ~33 GB
Live migration working set:       ~64 GB (one full node RAM in-flight)
Demo workload VMs:                ~32 GB (4× 8 GB VMs)
Net RAM headroom post-demo:       187 GB  ← comfortable margin

NVMe Performance Tip for Demo Day

The ephemeral NVMe provides significantly lower latency than Azure managed disks for VHDX I/O:

StorageTypical 4K Random Read IOPSLatency
Azure Premium SSD P30~5,000 IOPS~1–2 ms
Azure Ultra Disk~160,000 IOPS<1 ms
Local NVMe (E104ids_v5)~400,000+ IOPS~0.1 ms

How to Use NVMe on Demo Day

powershell
# On the host VM — copy VHDXes from managed disk to NVMe before demo
$nvmePath = "D:\HyperV"   # NVMe device typically appears as D:\ on this SKU
$managedDiskPath = "C:\HyperV"

# Create directory structure on NVMe
New-Item -ItemType Directory -Path "$nvmePath\VMs" -Force
New-Item -ItemType Directory -Path "$nvmePath\VHDs" -Force

# Move nested VM storage to NVMe (do this 30 min before demo)
$vms = Get-VM
foreach ($vm in $vms) {
    Move-VMStorage -VMName $vm.Name `
        -DestinationStoragePath "$nvmePath\VMs\$($vm.Name)"
}

Warning: NVMe content is lost if the VM is deallocated or the host OS crashes. Always maintain a backup copy on the attached managed disk. Run the DEMO-READY checkpoint creation script while VHDXes are still on managed disks.


Fallback SKUs

If Standard_E104ids_v5 is unavailable in East US (regional capacity constraints), the following alternatives are viable:

SKUvCPURAMNotes
Standard_E96ids_v596672 GBSlightly fewer vCPUs, same RAM. Reduce hvnode vCPU to 14 each.
Standard_E96as_v596672 GBAMD EPYC. No isolated hardware. Nested virt works but less consistent.
Standard_M128ms1283,892 GBExtreme RAM, higher cost. Use only if E-series unavailable.
Standard_D96as_v596384 GBLower RAM — reduce cluster nodes to 2 (hvnode01-02 only).

Adjusting for Fallback SKUs

If you must reduce the cluster to 2 nodes with a smaller SKU:

hvnode01: 16 vCPU / 64 GB  ← keep
hvnode02: 16 vCPU / 64 GB  ← keep
hvnode03: REMOVE
hvnode04: REMOVE

Cluster: hvlab-clus01 (2-node)
CSVs: reduce to 2 × 300 GB

The demo scenarios all work with a 2-node cluster. Live migration still demonstrates correctly between two nodes.


Cost Estimate

ResourceSKUApprox. Monthly Cost
Host VM (stopped/deallocated)Standard_E104ids_v5$0 (deallocated)
Host VM (running)Standard_E104ids_v5~$7,200/month
Managed Disk (OS)P10 128 GB~$20/month
Managed Disk (VHDX storage)P50 4 TB~$280/month
Cloud Witness storageStandard_LRS<$1/month

Recommendation: Deallocate the VM when not in active use. At ~$10/hour, leaving it running overnight adds ~$80. Run it only for preparation and the demo day itself. Total estimated lab cost for 2 weeks of prep: ~$400.

A Hybrid Solutions Cloud lab project.