Pexip Infinity Server Design Guide: Software Version 23.1 Document Version 23.a March 2020
Pexip Infinity Server Design Guide: Software Version 23.1 Document Version 23.a March 2020
Document Version 23.a
March 2020
Pexip Infinity Server Design Guide
Contents
Introduction 4
Summary of recommendations 5
Terminology 5
Management Node 5
Recommended host server specifications 5
Conferencing Node 6
Recommended host server specifications 6
Transcoding Conferencing Nodes versus Proxying Edge Nodes 6
General deployment recommendations for Transcoding Conferencing Nodes 7
Reboot 22
Viewing updated capacity 22
Checking for warnings 23
BIOS settings 24
VMware and NUMA 24
Introduction
This document describes the recommended specifications and deployment for servers hosting the Pexip Infinity platform, which
apply to both on-premises hardware and cloud deployments. It starts with a Summary of recommendations and some Example
Conferencing Node server configurations, which are supplemented by further details and explanations in the following
Appendices:
l Appendix 1: Detailed server hardware requirements provides a more detailed breakdown of the minimum and recommended
hardware requirements for servers hosting the Management Node and Conferencing Nodes respectively.
l Appendix 2: Achieving high density deployments with NUMA provides details on NUMA architecture and how this impacts
server architecture and overall performance of Conferencing Nodes.
l Appendix 3: VMware NUMA affinity and hyperthreading is for administrators with advanced VMware knowledge. It explains
how to experiment with VMware NUMA affinity and make use of hyperthreading for Pexip Infinity Conferencing Node VMs, in
order to achieve up to 50% additional capacity.
l Appendix 4: Hyper-V NUMA affinity and hyperthreading is for administrators with advanced Hyper-V knowledge. It explains
how to experiment with Hyper-V NUMA affinity and make use of hyperthreading for Pexip Infinity Conferencing Node VMs, in
order to achieve up to 50% additional capacity.
Summary of recommendations
This section summarizes the terminology, recommended specifications and deployment guidelines for servers hosting the Pexip
Infinity platform. These apply to both on-premises hardware and cloud deployments.
Terminology
The table below provides descriptions for the terms used in this guide, in the context of a Pexip Infinity deployment.
Term Description
Processor The hardware within a computer that carries out the basic computing functions. It can consist of multiple cores.
Core One single physical processing unit. Intel Xeon E5 typically has 8 cores (10, 12 or more in newer versions)
RAM Also referred to as "memory modules". The hardware that stores data which is accessed by the processor core while
executing programs.
Virtual CPU The VM's understanding of how many CPU cores it requires. Each vCPU appears as a single CPU core to the guest
(vCPU) operating system.
When configuring a Conferencing Node, you are asked to enter the number of virtual CPUs to assign to it. We
recommend no more than one virtual CPU per physical core, unless you are making use of CPUs that support
hyperthreading.
NUMA node The combination of a processor (consisting of one or more cores) and its associated memory.
Management Node
* Sufficient for deployments of up to 30 Conferencing Nodes. For larger deployments, you will need to increase the amount of RAM
and number of cores. For guidance on Management Node sizing, consult your Pexip authorized support representative or your Pexip
Solution Architect.
Conferencing Node
Below are our general recommendations for Conferencing Node (Proxying Edge Nodes and Transcoding Conferencing Nodes) servers.
For some specific examples, see Example Conferencing Node server configurations.
Hyperthreading
l Hyperthreading (also referred to as Hyper-Threading Technology), if supported, should always be left enabled by default.
Network
l Although the Conferencing Node server will normally not use more than 1-2 Mbps per video call, we recommend 1 Gbps
network interface cards or switches to ensure free flow of traffic between Pexip Infinity nodes in the same datacenter. We do
not recommend 100 Mbps NIC.
l Redundancy: for hypervisors that support NIC Teaming (including VMware), you can configure two network interfaces for
redundancy, connected to redundant switches (if this is available in your datacenter).
Disk
l Although Pexip Infinity will work with SAS drives, we strongly recommend SSDs for both the Management Node and
Conferencing Nodes. General VM processes (such as snapshots and backups) and platform upgrades will be faster with SSDs.
l Management Node and Conferencing Node disks should be Thick Provisioned.
l Pexip Infinity can absorb and recover relatively gracefully from short bursts of I/O latency but sustained latency will create
problems.
l The Management Node requires a minimum of 800 IOPs (but we recommend providing more wherever possible).
l A Conferencing Node requires a minimum of 150 IOPs (but we recommend providing more wherever possible).
l Deployment on SAN/NAS storage should in most cases work well. Disk access is only required by the operating system and logs,
so a normal fair performance is expected.
l Redundancy: for RAID 1 mirroring for disk redundancy, remember to use a RAID controller supported by VMware or your
preferred hypervisor. The RAID controller must have an enabled cache. Most vendors can advise which of the RAID controllers
they provide are appropriate for your hypervisors.
Power
l Sufficient power to drive the CPUs. The server manufacturer will typically provide guidance on this.
l Redundancy: Dual PSUs.
CPU 2 x Intel Xeon Gold 6230N 2 x Intel Xeon Gold 6148 2 x Intel E5-2680v4
l 20 core l 20 core l 14 core
l 2.3 GHz l 2.4 GHz l 2.4 GHz
l 27.5 MB cache l 27.5 MB cache l 35 MB cache
RAM 12 x 8 GB (6 RAM modules per CPU) 12 x 8 GB (6 RAM modules per CPU) 8 x 8 GB (minimum 4 RAM modules per
CPU for max memory bandwidth)
Example 1U l Cisco UCS C220 M5 l Cisco UCS C220 M5 l Cisco UCS C220 M4
rack l Dell R640 l Dell R640 l Dell R430/R630
servers
l HPE ProLiant DL360 Gen10 l HPE ProLiant DL360 Gen10 l HPE ProLiant DL360 Gen9
l Lenovo ThinkSystem SR650 l Lenovo ThinkSystem SR630 l IBM x3550 M5
l Supermicro 6019P l Supermicro 6019P l Supermicro 6018R-WTR
RAM makeup Any All channels must be populated with a DIMM, see Memory
configuration below. (For example, E5-24xx supports 3
DIMMs per socket, E5-26xx supports 4 DIMMs per socket.)
Hardware allocation The host server must not be over-committed in terms of either RAM or CPU. In other words, the
Management Node and Conferencing Nodes each must have dedicated access to their own RAM and
CPU cores.
Although Pexip Infinity will work with SAS drives, we strongly recommend SSDs for both the
Management Node and Conferencing Nodes. General VM processes (such as snapshots and backups)
and platform upgrades will be faster with SSDs.
Operating System The Pexip Infinity VMs are delivered as VM images (.ova etc.) to be run directly on the hypervisor. No OS
should be installed.
* This does not include the processor and RAM requirements of the hypervisor.
† Sufficient for deployments of up to 30 Conferencing Nodes. For larger deployments, you will need to increase the amount of RAM and
number of cores. For guidance on Management Node sizing, consult your Pexip authorized support representative or your Pexip Solution
Architect.
‡ For VMware platforms, ESXi 6.x is required to make full use of the AVX2 instruction set. Note that AVX or later is required; older instruction
sets are not supported.
†† The servers hosting Proxying Edge Nodes do not require as high a specification as those servers hosting Transcoding Conferencing Nodes.
This is because proxying nodes are not as processor intensive as transcoding nodes. The minimum functional CPU instruction set for a
proxying node is AVX, which was first available in the Sandy Bridge generation. You still need multiple proxying nodes for resilience and
capacity. We recommend allocating 4 vCPU and 4 GB RAM (which must both be dedicated resource) to each Proxying Edge Node, with a
maximum of 8 vCPU and 8 GB RAM for large or busy deployments.
Capacity
The number of calls (or ports) that can be achieved per server in a Pexip Infinity deployment will depend on a number of things
including the specifications of the particular server and the bandwidth of each call.
As a general indication of capacity:
l When deployed on our recommended hardware (Intel Haswell, 10 cores, 2.3 GHz), Pexip Infinity can connect up to two High
Definition 720p30 calls per CPU core. This is based on 1.1 GHz per HD call plus 20% headroom. Capacity for higher speeds can
be linearly calculated based on these figures.
l The same recommended hardware can connect a higher number of lower-resolution calls per CPU core. For example, up to 20
audio-only AAC-LD calls at 64 kbps.
l Servers that are older, have slower processors, or have fewer CPUs, will have a lower overall capacity. Newer servers with faster
processors will have a greater capacity. Use of NUMA affinity and hyperthreading will also significantly increase capacity.
Performance considerations
The type of processors and Hypervisors used in your deployment will impact the levels of performance you can achieve. Some
known performance considerations are described below.
AMD processors
We have observed during internal testing that use of AMD processors results in a reduction of capacity (measured by ports per core)
of around 40% when compared to an identically configured Intel platform. This is because current AMD processors do not execute
advanced instruction sets at the same speed as Intel processors.
AMD processors older than 2012 may not perform sufficiently and are not recommended for use with the Pexip Infinity platform.
Memory configuration
Memory must be distributed on the different memory channels (i.e. 4 channels per socket on the Xeon E5-2600; 6 channels per
socket on the Xeon Gold 61xx series).
There must be an equal amount of memory per socket, and all sockets must have all memory channels populated (you do not need
to populate all slots in a channel, one DIMM per channel is sufficient). Do not, for example, use two large DIMMs rather than four
lower-capacity DIMMs — using only two per socket will result in half the memory bandwidth, since the memory interface is
designed to read up from four DIMMs at the same time in parallel.
Therefore for a dual socket E5-2600 you need 8 identical memory DIMMs.
Therefore for a dual socket Gold 61xx you need 12 or 24 identical memory DIMMs.
About NUMA
NUMA is an architecture that divides the computer into a number of nodes, each containing one or more processor cores and
associated memory. A core can access its local memory faster than it can access the rest of the memory on that machine. In other
words, it can access memory allocated to its own NUMA node faster than it can access memory allocated to another NUMA node on
the same machine.
The diagram (right) outlines the physical
components of a host server and shows the
relationship to each NUMA node.
l you only deploy Conferencing Nodes on servers with a large number of cores per processor
l the number of vCPUs used by each Conferencing Node is the same as (or less than) the number of cores/threads available on
each NUMA node of even your smallest hosts.
l The server/blade is used for Pexip Conferencing Node VMs only, and the server will have only one Pexip Conferencing Node VM
per CPU socket (or two VMs per server in a dual socket CPU e.g. E5-2600 generation).
l vMotion (VMware) or Live Migration (Hyper-V) is NOT used. (Using these may result in having two nodes both locked to a single
socket, meaning both will be attempting to access the same processor, with neither using the other processor.)
l You fully understand what you are doing, and you are happy to revert back to the standard settings, if requested by Pexip
support, to investigate any potential issues that may result.
Step-by-step guides
For instructions on how to achieve NUMA pinning (also known as NUMA affinity) for your particular hypervisor, see:
Prerequisites
You must be using the VMware vSphere Flash-based web client in order to perform this configuration.
VMware NUMA affinity for Pexip Conferencing Node VMs should only be used if the following conditions apply:
l The server/blade is used for Pexip Conferencing Node VMs only, and the server will have only one Pexip Conferencing Node VM
per CPU socket (or two VMs per server in a dual socket CPU e.g. E5-2600 generation).
l vMotion (VMware) or Live Migration (Hyper-V) is NOT used. (Using these may result in having two nodes both locked to a single
socket, meaning both will be attempting to access the same processor, with neither using the other processor.)
l You fully understand what you are doing, and you are happy to revert back to the standard settings, if requested by Pexip
support, to investigate any potential issues that may result.
Example server without NUMA affinity - allows for more mobility of VMs
Example server with NUMA affinity - taking advantage of hyperthreading to gain 30-50% more capacity per server
Overview of process
We will configure the two Conferencing Node VMs (in this example, an E5-2600 CPU with two sockets per server) with the following
advanced VMware parameters:
You must also double-check the flag below to ensure it matches the number of vCPUs in the Conferencing Node:
l numa.autosize.vcpu.maxPerVirtualNode
For example, it should be set to 24 if that was the number of vCPUs you assigned.
3. Right-click the first Conferencing Node VM in the inventory and select Edit Settings.
4. From the VM Options tab, expand the Advanced section and select Edit Configuration:
5. At the bottom of the window that appears, enter the following Names and corresponding Values for the first VM, which should
be locked to the first socket (numa0):
o cpuid.coresPerSocket = 1
o numa.vcpu.preferHT = TRUE
o numa.nodeAffinity = 0
It should now look like this in the bottom of the parameters list:
Now our conf-node_numa1 Virtual Machine is locked to numa1 (the second socket).
It is very important that you actually set numa.nodeAffinity to 1 and not 0 for the second node. If both are set to 0, you will
effectively only use numa node 0, and they will fight for these resources while leaving numa node 1 unused.
Increasing vCPUs
You must now increase the number of vCPUs assigned to your Conferencing Nodes, to make use of the hyperthreaded cores.
(Hyperthreading must always be enabled, and is generally enabled by default.)
With hyperthreading, each physical core has 2 logical processors , so the CPU has 24 logical processors (giving us a total of 48 with
both CPUs).
In this case 2 x 12 = 24 is the "magic number" we are looking for with our Conferencing Nodes - which is double the amount of
Cores per Socket.
Reboot
Finally, save and boot up your virtual machines. After about 5 minutes they should be booted, have performed their performance
sampling, and be available for calls.
An unsuccessful run, where VMware has split the Conferencing Node over multiple NUMA nodes, would return the following
warning in addition to the result of the performance sampling:
2015-04-06T17:42:17.084+00:00 softlayer-lon02-cnf02 2015-04-06 17:42:17,083 Level="WARNING" Name="administrator.system"
Message="Multiple numa nodes detected during sampling " Detail="We strongly recommend that a Pexip Infinity
Conferencing Node is deployed on a single NUMA node"
2015-04-06T17:42:17.087+00:00 softlayer-lon02-cnf02 2015-04-06 17:42:17,086 Level="INFO" Name="administrator.system"
Message="Performance sampling finished" Detail="HD=21 SD=42 Audio=168"
If you have followed the steps in this guide to set NUMA affinity correctly and you are getting the warning above, this could be due
to another VMware setting. From VMware, select the Conferencing Node and then select Edit Settings > Options > General >
Configuration Parameters...). The numa.autosize.vcpu.maxPerVirtualNode option should be set to your "magic number". For
example, 24 is our "magic number" - the number of logical processors, or vCPUs, assigned in our example.
If this option is set to anything lower, e.g. 8, 10 or 12, VMware will create two virtual NUMA nodes, even if locked on one socket.
BIOS settings
Ensure all BIOS settings pertaining to power saving are set to maximize performance rather than preserve energy. (Setting these to
an energy-preserving or balanced mode may impact transcoding capacity, thus reducing the total number of HD calls that can be
provided.) While this setting will use slightly more power, the alternative is to add another server in order to achieve the increase
in capacity, and that would in total consume more power than one server running in high performance mode.
The actual settings will depend on the hardware vendor; see BIOS performance settings for some examples.
A quick way to verify that BIOS has been set appropriately is to check the hardware's Power Management settings in VMware
(select the host then select Configure > Hardware > Power Management). In most cases, the ACPI C-states should not be exposed
to VMware when BIOS is correctly set to maximize performance.
If the ACPI C-states are showing in VMware (as shown below), the BIOS has most likely not been set to maximize performance :
When BIOS has been correctly set to maximize performance, it should in most cases look like this:
If your server is set to maximize performance, but VMware still shows ACPI C-states, change it to balanced (or similar), and then
change back to maximize performance. This issue has been observed with some Dell servers that were preconfigured with
maximize performance, but the setting did not take effect initially.
Prerequisites
NUMA affinity for Pexip Conferencing Node VMs should only be used if the following conditions apply:
l The server/blade is used for Pexip Conferencing Node VMs only, and the server will have only one Pexip Conferencing Node VM
per CPU socket (or two VMs per server in a dual socket CPU e.g. E5-2600 generation).
l vMotion (VMware) or Live Migration (Hyper-V) is NOT used. (Using these may result in having two nodes both locked to a single
socket, meaning both will be attempting to access the same processor, with neither using the other processor.)
l You fully understand what you are doing, and you are happy to revert back to the standard settings, if requested by Pexip
support, to investigate any potential issues that may result.
Example server without NUMA affinity - allows for more mobility of VMs
Example server with NUMA affinity - taking advantage of hyperthreading to gain 30-50% more capacity per server
Example hardware
In the example given below, we are using a SuperMicro SuperServer with dual Intel Xeon E5-2680-v3 processors, 64GB RAM, and 2
x 1TB hard drives.
On this server:
l we deploy one Conferencing Node VM per processor/socket, so two Conferencing Nodes in total
l we disable NUMA spanning, so each Conferencing Node VM runs on a single NUMA node/processor/socket
l each processor has 12 physical cores
l we use hyperthreading to deploy 2 vCPUs per physical core
l this gives us 24 vCPUs / 24 threads per Conferencing Node
l therefore we get 48vCPUs / 24 threads in total on the server.
1. From within Hyper-V Manager, right-click on the server and select Hyper-V Settings...:
2. From the Server section, select NUMA Spanning and disable Allow virtual machines to span physical NUMA nodes. This
ensures that all processing will remain on a single processor within the server:
1. From within Hyper-V, select the Conferencing Node VM, and then select Settings > Hardware > Processor > NUMA.
2. Confirm that only 1 NUMA node and 1 socket are in use by each Conferencing Node VM:
An unsuccessful run, where Hyper-V has split the Conferencing Node over multiple NUMA nodes, would return the following
warning in addition to the result of the performance sampling:
2015-04-06T17:42:17.084+00:00 softlayer-lon02-cnf02 2015-04-06 17:42:17,083 Level="WARNING" Name="administrator.system"
Message="Multiple numa nodes detected during sampling " Detail="We strongly recommend that a Pexip Infinity
Conferencing Node is deployed on a single NUMA node"
2015-04-06T17:42:17.087+00:00 softlayer-lon02-cnf02 2015-04-06 17:42:17,086 Level="INFO" Name="administrator.system"
Message="Performance sampling finished" Detail="HD=21 SD=42 Audio=168"
Moving VMs
When moving Conferencing Node VMs between hosts, you must ensure that the new host has at least the same number of cores.
You must also remember to disable NUMA spanning on the new host.
BIOS settings
Ensure all BIOS settings pertaining to power saving are set to maximize performance rather than preserve energy. (Setting these to
an energy-preserving or balanced mode may impact transcoding capacity, thus reducing the total number of HD calls that can be
provided.) While this setting will use slightly more power, the alternative is to add another server in order to achieve the increase
in capacity, and that would in total consume more than one server running in high performance mode.
The actual settings will depend on the hardware vendor; see BIOS performance settings for some examples.