TIPS Will IPBX 2021-D on Proxmox benefit from more cores / more memory?

AndyInNYC

Active Member
Joined
May 23, 2013
Messages
828
Reaction score
133
I've installed the 1-minute 2021-D image using the default settings. Will the performance benefit from giving the pbx more cores/threads and/or more memory?
 
Under heavy load or with lots of transcoding, absolutely.
 
I think the host storage is a big factor also. I know a guy who runs some really old (15 year old Dells?) servers with cheap 7200 RPM HDDs. As time goes by, it seems even Linux is become more resource intensive. I keep telling him to upgrade to SSDs to get better performance and more life out of those servers.

Case in point. Trying out the Sangoma's FreePBX 17 installer script on one my computers with SATAIII SSD took 20 minutes inside VirtualBox with the host having Core i7 7th gen processor.

He ran it on one of his old servers with those 7200 RPM HDDs inside Proxmox, and took somewhere around two hours to install
 
@AndyInNYC : As long as the PBX is not trans/re-encoding the media layer, increasing the number of cores or the amount of RAM will have minimal effect. But there are other things in Proxmox that you have to be careful about when it comes to (any version of) IncrediblePBX.
For instance, these are the memory and CPU settings for my home PBX on a very modest Proxmox server:
1739469991435.png
As you can see I allocated only 1+1/4 GiB of RAM. The PBX also has 2GiB of swap space on a consumer grade SSD which hardly gets used.
With some applications memory ballooning doesn't work as the signalling between the host and the VM is not optimal. To be safe I don't use it.
When it comes to CPU cores, 2 actual cores are a must. But, if on your host the core count includes also the threads go for an odd number of allocation like 3, because with 2 there is a high probability that you are going to get actually 1 core with 2 threads. That entirely depends on your Proxmox/KVM host. Then you can limit the core utilization with cpulimit. In my case I am allocating 2 actual cores (there is no threading on my host CPU) to ensure that multiple task threads run simultaneously (without time slicing), yet I limit the overall CPU load factor to 1+1/4 CPU load. That's something that Proxmox (actually QEMU/KVM underneath) handles very well.
The next thing you need to be careful about with the CPU settings is the CPU model selection:
1739473083828.png
Just make sure that the CPU type is set to 'host' rather than any specific CPU model. This is to avoid QEMU kicking in to emulate the 'missing' target CPU mnemonics (which might or not be overbearing). Otherwise the overhead would take a significant toll on your performance. Unfortunately for some obscure reasons Proxmox doesn't default to 'host' as it should.
Now, for PBX's storage I have the following:
1739472893744.png
The best performance you get on a low-end Proxmox host (like mine) is with an NVME type storage set in a 'directory' type storage resource. That also allows you to run snapshots at will.
'writethrough' caching protects better against unforeseen failures (especially power outage in case you have no UPS attached to your Proxmox box) as opposed to for instance 'writeback' which is a tad faster but much riskier. To limit wear and tear on the NVME make sure that the 'ssd' mode is enabled.
'iothread=1' is a tremendous help in low-end servers as it separates the input/output actions into a centralized io thread separate from the main application thread and doing so it prevents the main application thread from being tied-up while data is written to or read from storage. You will get noticeably better responsiveness of the desktop if you run a GUI on the PBX OS for instance.
For your actual use conditions you can monitor the CPU and RAM pressure through the Proxmox console and fine tune your CPU and RAM settings.
Ideally you will see a CPU load of 1 to 2% at rest and an additional 1 to 2% per call. The memory use should be in the 50% range and Proxmox will dynamically adjust it and keep it optimal through the virtual machine's memory allocation calls. If it goes much higher then allocate more memory. If it falls way too low then reduce the amount allocated to avoid resource waste. But as I said don't activate ballooning with the PBX.
 
Last edited:
Get 3CX - Absolutely Free!

Link up your team and customers Phone System Live Chat Video Conferencing

Hosted or Self-managed. Up to 10 users free forever. No credit card. Try risk free.

3CX
A 3CX Account with that email already exists. You will be redirected to the Customer Portal to sign in or reset your password if you've forgotten it.
Back
Top