Yes, I agree with you. But, the systems I use for Virtualization contains at least 64 CPUs and 64 Gb of RAM so I do not have problems with performance. Less than that, It becomes not suitable to run real time applications like RTP (audio and video). And I am sure with what I am doing.
Now, the problem starts with the Freepbx Distro (which I like and use it a lot with my system optimization and customization) consumes too much resources from the virtual machine (Java, Asterisk, HTTP, PHP, Mysql, recordings, transcoding ,etc.).
If you wish to get good and reliable results from your Freepbx virtual machine do not compromise with your resources. Assigning 8 CPUs and 8 Gb of RAM (not shared) will give you good results when running on virtual machines.
If you are using public clouds (amazon, azure, digital ocean etc.) make sure that you are using SSD hard disks to get even better results.
If you choose to compromise on your resources I would go on 4 CPUs and 4 Gb of RAM (no recordings, no transcoding). Less would get terrible results.
Furthermore, you have to make sure that your infrastructure is dedicated:
- separated internet lines
- separated switches
- separated infrastrucrute
If you are connecting your phones to your network with a separated VLAN (I never recommend that to my clients) make sure that you configure the QOS in the switches (Vlan priority).
If you are using NFS (or any other ip sharing protocol) for your recordings, use another physical ethernet port on your server and connect it to your storage network segment (a private network with a separated switch).
If your Freepbx will contain 20 extensions and less, I suggest to install the Freepbx on a small computer (Intel NUC or something similar). The results will be better than your virtual machine with the same configuration.
So, for conclusion, a voip network is very complicated and you have to consider with a lot of factors (including virtual machines). I believe that if you start your voip network design with the infrastructure, you will be able to grow and expand better without too much hassle.