At a small software development house, we virtualize our build servers (using VirtualBox) so that they can be easily backed up, snapshotted and the like. We've recently bought a new server using an AMD Epyc 7351P, which has 16 cores (32 with hyperthreading). We've found that assigning any given VM more than 4 CPU cores absolutely cripples performance: my assumption is that this is because the Epyc is actually a NUMA 4x4core architecture under the hood, so if you use more than 4 physical cores the guest starts thrashing memory.
Is there a way to make VirtualBox expose the NUMA configuration to the guest? If not, which other virtualisation solutions might work in this case? Ideally, I'd want to be able to fire up a VM using all of the physical cores without incurring too much of a performance penalty - you expect to lose some performance when virtualising, but a 20-core Virtualbox vm on this server runs at about 10% of the speed of a 4-core one, which is ridiculous.