As you may be aware, Microsoft offer Windows Hyper-V Server 2012 (and soon 2016) as a free hypervisor. I have been doing some testing to see the performance for Pexip Infinity.
So, here goes on setting up Pexip Infinity Conference Node with the free Microsoft Hyper-V 2012 (also tested with 2016 with the same results). This is assuming you have the management node already installed (example installation here).
I am using a SuperMicro SuperServer with a dual Intel Xeon E5-2680-v3 chipset with 64GB RAM and 2 x 1TB hard drives. An equivalent Dell server could be a R430 or R630, or a HP DL360 Gen9. The approximate list price of this server (using Dell as an example) is around £4,500/$6,500 for a redundant PSU, hardware RAID and multiple network cards. This is a 1U server.
Step One – Choosing a Deployment Type
Step Two – Define Processors
Here we need to define the number of virtual CPUs to assign per processor and the amount of memory. For Pexip Infinity, the requirement is 1GB RAM per virtual CPU.
Step Three – Configure Name and Network Details
Step Four – Download Conference Node
Now you will download the node locally to your machine, ready to import into Hyper-V Manager.
One you have downloaded the conference node, unzip it on your machine.
Step Five – Create a Share on Hyper-V Server
If you do not have a share on the server (or access to C$ say) you need to enable sharing. To do this, just head to Server Manager and select the server and right click and select Add Roles and Features. Then follow the steps to complete installing the role.
Step Six – Create a Shared Folder
Now you have your shared folder, copy all three folders from the unzipped file onto the new share.
Step Seven- Open Hyper-V Manager
Step Eight – Create a Network Switch
For simplicity in this example, I am just going to create an external interface so my LAN can talk to the Windows Hyper-V server NIC. So just click on Virtual Switch Manager in the right hand pane and select External and choose Create Virtual Switch.
Step Nine – Select Import Virtual Machine
Now that Hyper-V is ready, we can click on Import Virtual Machine.
Step Ten – Locate the folder share
Select the whole directory as seen below. Don’t be tempted to select Virtual Hard Disks or Virtual Machines folder.
Step Eleven – Confirm Machine
Step Twelve – Select Import Type
Here you need to select Restore the Virtual Machine (use the existing unique ID).
Step Thirteen – Choose Destination and Storage Folders
Here I have just selected the defaults
Step Fourteen – Select Network
Now you can select the network you created earlier.
Step Fifteen – Start the Import
Step Sixteen – Some VM Settings Required
Now, this is the important bit to get the best performance out of the server and CPUs. We need to disable NUMA spanning on the server first. Just right click on the server and select Hyper-V Settings
Now head to NUMA Spanning and untick Allow Virtual Machines to span physical NUMA nodes. This means all processing will remain on a single processor within the server.
Next we need to ensure the server has the correct settings too and does not span multiple CPUs (as there could be a bottleneck between them). Just make sure only 1 NUMA node and 1 socket are in use by each machine.
Step Seventeen – Start the Virtual Machine
One the settings have been changed, you can now go ahead and start it up
You can view the console of the virtual machine and see the status in the Pexip Infinity Management node under Status > Conference Nodes
Once the conference node is contactable you will see the last date and time and it will be in green, looking good. You will also be then able to hit the web server of the conference node.
Step Eighteen – Conference Node Performance Sampling
Every time a conference node is started up or rebooted, the management node will perform a sampling of the system to understand what capabilities the system has. As you can see here, this conference node is capable of 17 x 1080p calls, 33 x 720p calls, 74 x SD calls and/or 296 audio calls.
Step Nineteen – Viewing the Conference Node Performance Sampling
During the sampling, you could run Performance Monitor – from Server Manager, right click on the server and select Computer Management.
Then you need to select Performance > Monitoring Tools > Performance Monitor and then click the green plus button. Type in the server name and then locate Hyper-V Hypervisor Logical Processor and add them to the Added Counters. This will mean you will see each of the 48 threads of the processor.
Now that you are monitoring the processors, you can see the output of the workload. I have selected to highlight (button to the left of the red x – two along from the green plus) the first 24 processor threads (0-23). This means I can see them in the black highlight. This means that 24-47 are in colour and not in use. This means NUMA is working and the conference node is not spanning multiple CPUs.
Here you can see I’ve selected the 2nd lot of processor threads and they are idle whilst the active processor is being used during sampling.
Step Twenty – Setup another Node
As my server has two CPUs, I did the same again above in creating a new conference node and uploading to the server. I doubled checked the Hyper-V settings to ensure it was not spanning multiple CPUs.
Step Twenty One – The Final Results
And now for the good news. Two conference nodes on a 1U server/blade can achieve up to 66 ports of HD capacity. Just remember the price of the server above and also don’t forget the Hyper-V server is also free. Just need to add your PexJuice licensing.
If I was to host the management node on the same physical server, then you would lost 1-2 ports of capacity as the management node does not take up much resource.