If you're running virtual machines on Apple Silicon, you've probably hit a wall you didn't know existed. Apple's M-series chips have an undocumented limit of 2 VMs running simultaneously, and exceeding it can cause kernel panics and system instability.
This isn't just an annoyance for tinkerers. Developers who need to test across multiple environments or run containerized workloads are directly impacted. The limit applies whether you're using Parallels, VMware, or open source solutions like UTM.
The technical reason comes down to how Apple Silicon handles virtualization. The chips use a hardware-accelerated hypervisor framework that's tightly integrated with macOS, but Apple imposed this 2 VM ceiling without documenting it publicly. Cross that threshold and you're asking for trouble.
There's a workaround, though it's not officially supported. By using CPU pinning to assign specific cores to each VM, you can run more than 2 instances without triggering the limit. The technique involves configuring your virtualization software to restrict each VM to particular CPU cores, essentially working around Apple's resource allocation logic.
This matters because Apple Silicon is increasingly common in professional development environments. If your workflow depends on spinning up multiple test environments or running several containerized services locally, you need to know about this limitation before you hit it in production.
The broader context here is that Apple's virtualization story on ARM is still maturing. While the performance is impressive, these kinds of undocumented restrictions show that the platform isn't quite at feature parity with x86 virtualization yet. Developers need to plan accordingly.