Programmable Voice

  1. Home
  2. Docs
  3. Programmable Voice
  4. HMP Elements
  5. Running Inside of a Virtual Machine

Running Inside of a Virtual Machine


HMP Elements is very flexible and supports running within a virtual machine. However, VoIP is very sensitive to small delays, and these delays can result in jitter, or poor audio quality if the system is not configured appropriately. The purpose of this article is to discuss how to get the most reliable performance out of a virtual machine using that runs HMP Elements.

Performance Considerations

Physical Cores vs Logical Cores

When configuring a Virtual Machine, you must assign a certain amount of processing power to your virtual machine. It’s important to understand what else is going on in that hardware. Hypervisors such as VMWare, and Hyper-V use the concept of logical cores to adjust the amount of processing power that a particular virtual machine has. When considering physical cores vs logical cores, you should have a ratio that you plan on keeping in mind for performance.

For example, if you have a quad core system, and have 8VM’s and assign each 2 logical cores that means that you have a 1 to 4 physical to logical core ratio. This can work well for more traditional workloads where work can be less CPU intensive or comes in batches. However, depending on how you use HMP Elements the CPU load can be constant. If you were to run HMP Elements on each of those 8 VM’s with 500 ports, you would almost certainly see jitter because essentially each machine is only getting the equivalent processing time of half of a core. However, if you run more traditional workloads (lots of idle time) on the other 7 VM’s, you may not have any issues running 500 ports on the VM that you are using for HMP Elements.

If you are using anything other than a 1 to 1 physical to logical core ratio, you must be very aware of the other workloads that are on the same physical hardware.


Use a 1 to 1 physical to logical core ratio or be very aware of the workload that the other virtual machines have on the host machine.


HMP Elements, Voice Elements, and your related application will consume the same amount of memory as you would on a physical machine. It’s important to make sure that you allocate the appropriate amount of memory to your virtual machine. If you don’t allocate enough memory to your virtual machine and it begins using virtual memory (i.e. the hard disk) you will likely see various issues. Typically, we recommend a minimum of 4GB of memory for 100 ports or less. However, if you have other applications running on your VM, you may consider adding additional memory. While total memory usage for 500 ports of Voice Elements Platform may only be around 2GB, we would always recommend more than 4GB to account for the memory requirements of other applications and the OS.


Use at least 4GB of memory for any HMP Elements instance (except for instances of less than 8 ports or less). For larger instances use 6-8GB of memory.


Often we recommend PCAP mode to customers that are looking to run high port densities (more than 500). This is because it uses much less CPU processing time. You can read more about this using this link: HMP Elements – Running in PCAP mode. During testing we determined that PCAP mode was not compatible with Server 2012 as it would cause random crashes. We have yet to see these issues with Windows Server 2008 R2, but we are hesitant to recommend using it in a virtual machine.


Turn off PCAP mode for Server 2012. Run at your own risk on Server 2008R2. PCAP mode is off by default.

NIC Considerations

In the past we had seen jitter caused when sharing a NIC between virtual machines. This was caused because the NIC can only send packets from one virtual machine at a time, if there were other virtual machines sending requests to the NIC at the same time it caused a delay in the packets being sent by HMP Elements resulting in jitter.

In recent tests we have been unable to reproduce these issues. However, we still recommend dedicating a NIC to each virtual machine, until we are certain that we cannot reproduce these results.


Dedicate a NIC to each virtual machine running HMP Elements. This recommendation will be updated after further testing.

Test Results

Xeon E2670

Specs of the Host Hardware: Xeon e5670 (8 core @ 2.6ghz) 32 GB memory

Each VM was provisioned with the following: 4 virtual processors 7GB of memory

On this test we had two identical servers ran 4 virtual machines that were running Windows Server 2012, each running 500 ports. Total CPU utilization for the server was between 60-70%, so there is likely headroom for an additional VM.

Below are the specifics of the configuration:

HMP Elements Voice Elements Non-PCAP mode 500 ports Windows Server 2012

We ran each system for 16 hours, each virtual machine dialed a separate virtual machine on the separate server. There was no discernible jitter during normal operation.

Memory usage stayed under 3.5GB during the duration of testing. CPU Usage on each guest VM ranged from about 70-90% during testing.

Xeon 1230v2

Specs of the host hardware: Xeon e31230v2 (4 core @ 3.3ghz) 16GB memory Intel Pro 1000 PT dual port NIC

Specs of the virtual machine: 2 virtual cores 6GB Memory 600 ports PCAP mode

We ran these virtual machines back to back dialing each other. CPU usage (in the VM) was in the 50-70% range which indicates that we could either add more ports to each VM, or add more VMs. There was no jitter during testing.

Amazon Web Services

Instance Type: M1 Medium 2 ECU’s 1 Core 3.7GB of Memory Windows Server 2008

On this test we sent faxes between two servers running HMP Elements. We used 50 ports for sending faxes constantly and CPU usage always remained under 50%. Fax ports use significantly more CPU time than regular voice ports. We estimate that you could run at least 150-200 ports (possibly more) on a similar configuration.

Was this article helpful to you? Yes 13 No