VMware configuration suggestions for Windows with Livewire or AoIP

Updated by Bryan Jones

Scope

This information is the result of some VMware ESXi testing done to achieve a reliable stream of audio where the virtual machine OS is a Windows machine running on VMware ESXi and our Z/IPStream X/2 streaming software is used.

Telos is providing this information to you with the hope that you will find it helpful in your configuration. Telos makes no warranty either express or implied, including warranties related to function or fitness for a particular purpose. Also, we are not able to provide support for any VMware product directly.

This is also not a step-by-step guide for using VMware ESXi. We assume you have some knowledge of creating and editing virtual machine instances.


Versions used

For purposes of this article, the following VMware ESXi versions are used;

In this configuration, we have a Windows 10 virtual machine installed on our host. I believe the specific version is not relevant; however, the specific version in this case is;

The hardware used in this example is;

This particular virtual server is hosting a total of six virtual machines.

Description

The key to producing reliable multicast networked audio (AoIP) in ANY computer environment is controlling latency (more accurately, jitter in the latency). That is the DIFFERENCE in timing from the processing of one packet to the next. That jitter (timing difference) has to stay below whatever the threshold is to deliver audio reliably. For example, the Windows audio buffer is 30ms total. Audio is fed to the buffer in 5ms packets. If the jitter is above 25ms, then the buffer will be depleted (underruns), and you get a drop in your audio. No one thing affects PC jitter, but installing Windows on a virtual machine of any kind, where the resources are shared, makes it much more difficult.

On virtual platforms (of any brand), the virtual machine host manages the guest machines' access to the hardware. In other words, if you have a system with dual (or more) physical CPU cores, the host is free to move you from core one on CPU-1 to core 3 on CPU-2, as an example. This crossing of physical barriers generally creates latency that normal computer processes could tolerate but is not tolerated by the movement of real-time multicast audio.

Configuration considerations

CPU Configuration

This will be the most critical part of your configuration and the only place where we are making changes from the default. You will almost always need your virtual machine to have more than one CPU. What those are called will vary from vendor to vendor. In VMware, these are referred to as sockets. In the case of the Z/IPStream X/2 software, the near-real-time nature of the direct AoIP interface requires the allocation of one thread specifically for the creation of these streams.

In our example, we allocated 8 CPU cores, and 4 cores per CPU giving us two "sockets" as shown here;

Although my configuration did not require it, the Scheduling Affinity can be used to "fix" the cores assigned to this virtual machine to specific logical processors. The system "should" balance these settings on its own. You can monitor the individual PCPU (Physical CPU) from the Monitor option under the host.

CPU Latency Sensitivity

Depending on the configuration and utilization of your machine, you may need to set the CPU Latency Sensitivity. This is not a topic we can cover here but it's important to understand the implications of this. Typically, setting a system for sensitivity to latency requires the reservation of a certain amount of CPU and Memory. Depending on the resources available, you should consider what can be set aside (reserved) without negatively impacting other virtual machines.

For our configuration, we set Latency Sensitivity to High.

We reserved our allocated Memory.

And reserved our CPU at 16000 MHz.


Final Thoughts

Your system is likely to be VASTLY different than what is used here. Both in the hardware used for the Host and the virtual machines configured. We are not VMware "partners" and don't have support resources available to us. Everything shared here was learned by researching VMware forums, Google, YouTube, etc. For this reason, we are not able to provide you with direct support or answer questions about your specific setup. So, respectfully, please don't ask.

In fact, if you have insights, please feel free to share them and we'll update this document.

If you have further questions on this topic or have ideas about improving this document please contact us


How did we do?