Unlike Hyper-V which uses a parent partition model, VMware ESXi operates as a Type-1 hypervisor running directly on hardware. The memory requirements differ significantly:
// Sample code to check memory usage in ESXi
esxcli system stats kernel get -d "System heap"
ESXi 7.0 and later versions typically require:
- Minimum: 4GB RAM for installation
- Recommended: 16GB RAM for production environments
- Additional 2-4GB per TB of host memory for system overhead
The exact overhead depends on configuration. Use this PowerCLI snippet to calculate:
Get-VMHost | Select Name,
@{N="PhysicalMemory(GB)";E={[math]::Round($_.MemoryTotalGB,2)}},
@{N="MemoryOverhead(GB)";E={[math]::Round(($_.ExtensionData.Hardware.MemorySize - $_.MemoryTotalGB)/1GB,2)}}
Special features increase memory needs:
# Enabling VSAN adds ~1GB overhead
esxcli system settings advanced set -o /VSAN/MemoryOverhead -i 1024
Additional overhead scenarios:
- vCenter integration: +500MB
- NSX: +2GB
- DRS/HAS: +200MB
For a host with 128GB RAM running 20 VMs:
Total RAM: 128GB
ESXi overhead: ~4GB (base) + 1.28GB (1%/TB) = 5.28GB
Feature overhead: 2.5GB (vSAN+vCenter+DRS)
Available for VMs: 128 - 8 = 120GB
Use this esxtop command to monitor in real-time:
esxtop -b -n 1 -d 5 > memory_stats.csv
Key metrics to watch:
- PMEM/MEMSZ: Service console memory
- VMKMEM/MEMSZ: VMkernel memory
- HEAP: System heap usage
html
Unlike Hyper-V which runs on Windows Server and requires memory for the parent partition, ESXi is a Type-1 bare-metal hypervisor with different memory management architecture. The minimum RAM requirement for ESXi 8.0 is 4GB, but real-world production environments require significantly more.
ESXi memory usage consists of:
- Service Console: ~300MB (management interface)
- VMkernel: Base 2GB + 0.02% of physical RAM
- VM overhead: Additional ~100MB per VM (varies by vHW version)
For a host with 128GB RAM running 20 VMs:
# ESXi 8.0 memory calculation formula
base_memory = 2048 # MB
vmkernel_overhead = 0.0002 * (128 * 1024) # 0.02% of physical RAM
vm_overhead = 20 * 100 # MB
total_overhead = base_memory + vmkernel_overhead + vm_overhead
print(f"Total ESXi overhead: {total_overhead}MB ({total_overhead/1024:.2f}GB)")
Production environments should maintain:
- Minimum 8GB for ESXi alone
- 10-15% headroom for vSphere services (HA, DRS, etc.)
- Additional buffers for memory ballooning and swap
Use esxtop command to view real memory utilization:
esxtop -b -n 1 | grep -E "PMEM|MEM"
Key metrics to watch:
- PSHARE: Memory shared between VMs
- MCTLSZ: Memory reserved by VMkernel
- VMKMEM: Total VMkernel memory usage
- Always allocate 8-10% of total RAM to ESXi (minimum 8GB)
- For memory-constrained hosts, disable unnecessary services:
esxcli system visorfs ramdisk set --size-min 0 --size-max 0
- Enable Memory Compression for better utilization