VNF workload placement for optimal performance

This section provides recommendations on where to place VNFs and how to tune platform to get optimal performance from workload.

Hypervisor (ESXi)

  • Setting ring size to 2048 for rx descriptor and tx descriptor of Physical NIC.
    NOTE:

    A descriptor provides information on a packet such as, where a packet is stored or the length of the packet, and so on. Rx descriptor stores the descriptor value about the packets received into the NIC port. Tx descriptor stores the descriptor value about the packets that are transmitted out of the NIC port.

    To set the values for rx and tx ring buffer size, do the following:
    1. Log in to the ESXi host (Resource Pod) and run the following commands:
      nsxdp-cli ens uplink ring set -r 2048 --uplink <vmnic>
      nsxdp-cli ens uplink ring set -t 2048 --uplink <vmnic>
      
      NOTE:

      The Telco Blueprint has been validated with ring buffer size of 2048. However, you can change the ring buffer size based on the packet drops seen at the rx or the tx interface of ESXi host or VM.

      For example, if a packet drop is seen at rx interface of vmnic, you can increase the rx ring size to reduce the packet drop.

  • Ensure to create VNF on the NUMA where NIC is connected.

  • Assign the number of logical cores to the N-VDS Enhanced depending on the traffic volumes that you are expecting, server NIC speed, and the traffic characteristics of the VNF.
    NOTE:

    It is recommended to assign a minimum of two logical cores per VNIC (one for tx queue and one for rx queue) on the VM.

  • Enable the load balancer. Enabling the load balancer allows for dynamic allocation of the CPU cores.

    To enable the load balancer, login to ESXi host (Resource Pod), and run the following command:
    nsxdp-cli ens lb set --enable

VNF

  • Ensure that the version of the virtual machine hardware is latest.

    To see the VM version, right-click the selected VM. The version is available in the compatibility field.

  • Set sched.cpu.latencySensitivity = High for data plane intensive workloads.

  • Use larger buffer sizes for better performance.

    To set and choose a specific buffer size, run the following command:
    ethtool -G <vnic> rx 1200 tx 1200
    While the validated and recommended value is 1200, the minimum and maximum buffer size depends on the NIC type.
  • Disable distributed firewall.

  • Recommend the following settings:

    To change the CPU and memory configurations, do the following:
    1. Right-click the VM and then select Edit Settings > Virtual Hardware.

    2. For CPU Configuration, set the values as follows:

      Shares

      High

      Reservation

      8576 MHz

      Limit

      Unlimited

    3. For Memory Configuration, set the values as follows:

      Shares

      High

      Reservation

      Maximum Necessary

      Limit

      Unlimited

    4. For Other Configuration, set the values as follows:

      Virtual NIC Adapter Type

      VMXNET3

      NUMA Affinity

      0

      Latency Sensitivity

      High

SR-IOV

Update the Ring size of vNICs to 4096 for rx (receive ring buffer size) and tx (transmitted ring buffer size).

For more detailed information on VNF workloads, see Tuning VMware vCloud NFV for Data Plane Intensive Workloads Technical White Paper