Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 

Optimizing DPDK vRouter Performance Through Full CPU Partitioning and Isolation

 

Contrail Networking Release 2003 supports full CPU partitioning. CPU isolation is an RHEL method to partition and isolate the CPU cores on a compute node from the symmetric multiprocessing (SMP) balancing and scheduler algorithms. The full CPU isolation feature optimizes the performance of DPDK vRouter when deployed with the DPDK settings recommended for RHOSP.

CPU isolation helps isolate forwarding cores, VNF cores, and service cores so that VNF threads and service threads do not send processing requests to forwarding cores. By applying CPU isolation, you can allocate dedicated forwarding cores to the DPDK VM and ensure that other processes do not send processing requests to the cores allocated to DPDK vRouter, which in turn improves the performance of vRouter to a large extent.

For CPU isolation and partitioning, RedHat recommends two methods. The first method is by using a utility called tuned, which partitions the CPU to virtual network functions (VNFs) and isolates these cores from the host OS. The tuned method removes isolated CPUs from the common CPU list that is used to process all tasks and perform CPU isolation after the system boot, by using the systemd process.

The second is isolcpus, a kernel parameter that keeps CPUs away from the Linux scheduler. Similar to tuned, the isolcpus method also removes isolated CPUs from the common CPU list that is used to process all tasks, and performs CPU isolation at system startup. To enable isolcpus, you need to modify the GRUB configuration in /etc/default/grub so that a new set of isolated CPU is considered. The node needs to be restarted for the changes to take effect.

To enable CPU isolation using tuned, configure the ContrailDpdkParameters in /tripleo-heat-templates/environments/contrail/contrail-services.yaml for RHOSP and SERVICE_CORE_MASK and DPDK_CTRL_THREAD_MASK parameters in /vrouter/agent-dpdk/entrypoint.sh file for Contrail Ansible Deployer.

In contrail-services.yaml

In entrypoint.sh

To configure isolcpus, modify the following parameters in GRUB:

The isolcpu tuning needs to be done for VNFs (VM) as well. This is to ensure that the VM can protect and isolate the Poll Mode Driver (PMD) thread cores from CPU usage by other processes. On Centos and RHEL, CPU tuning is done by using the utilities isolcpu and tuned.