intel / haxm

Intel® Hardware Accelerated Execution Manager (Intel® HAXM)
BSD 3-Clause "New" or "Revised" License
3.22k stars 875 forks source link

Support more than 16 vCPUs #195

Open mmisono opened 5 years ago

mmisono commented 5 years ago

Currently, HAXM supports max 16 vCPUs per VM.

Considering recent multi-core CPUs (e.g., Xeon scalable processor), I think the current limit is small. KVM supports max 288 vCPUs.

It seems on NetBSD, HAX_MAX_VMS * HAX_MAX_VCPUS pseudo devices are created at the module initialization, but on other platforms, a pseudo device is created when creating a vCPU (i.e., in the hax_vcpu_create_host()). So I think except for NetBSD, increasing HAX_MAX_VCPUS has no side effects.

QEMU uses the HAX_MAX_VCPUS. This is my patch for the QEMU to allocate the hax_vcpu_state as much as necessary (I tested this on the Linux host / Linux guest). I'm not sure other software using HAXM. Is there anything to consider?

hyuan3 commented 5 years ago

Do you test on Windows host? I checked Windows HAXM codes. It also has limitation that HAX_MAX_VCPUS is defined to 16. Besides the limitation, vpid is a two bytes structure. High byte represents vm_id. So can't allocate vcpu for a VM more than 255.

mmisono commented 5 years ago

@hyuan3 Hi, I don't have a Windows test environment and I tested my patch only on Linux.