edpm-ansible variables for SR-IOV and OVS-DPDK
Use edpm-ansible variables to optimize CPU and memory performance for OVS-DPDK and SR-IOV workloads on Red Hat OpenStack Services on OpenShift (RHOSO) data plane nodes.
Always pair CPU sibling threads, or logical CPUs, together in the physical core when allocating CPU cores.
Use the variables to align your hardware configuration with host, guest instance, and OVS-DPDK process needs.
Data plane (EDPM) Ansible variables Copy linkLink copied!
You can use a set of Ansible variables to optimize CPU and memory parameters for performance on data plane nodes with OVS-DPDK and SR-IOV.
You can use the following Ansible roles variables in a custom resource (CR).
- edpm_ovs_dpdk
- Enables you to add, modify, and delete OVS-DPDK configurations, by using values defined in the OVS-DPDK
edpmAnsible variables. - edpm_ovs_dpdk_pmd_core_list
- Provides the CPU cores that are used for the DPDK poll mode drivers (PMD). Choose CPU cores that are associated with the local NUMA nodes of the DPDK interfaces.
- edpm_ovs_dpdk_enable_tso
- Enables (
true) or disables (false) the TCP segmentation offloading (TSO) for DPDK feature. The default isfalse. - edpm_tuned_profile
- Name of the custom TuneD profile. The default value is
throughput-performance. - edpm_tuned_isolated_cores
- A set of CPU cores isolated from the host processes.
- edpm_ovs_dpdk_socket_memory
-
Specifies the amount of memory in MB to pre-allocate from the hugepage pool, per NUMA node.
dpm_ovs_dpdk_socket_memoryis theother_config:dpdk-socket-memvalue in OVS:- Provide as a comma-separated list.
- For a NUMA node without a DPDK NIC, use the static value of 1024MB (1GB).
- Calculate the edpm_ovs_dpdk_socket_memory value from the MTU value of each NIC on the NUMA node. The following equation approximates the value:
MEMORY_REQD_PER_MTU = (ROUNDUP_PER_MTU + 800) * (4096 * 64) Bytes800is the overhead value.4096 * 64is the number of packets in the mempool.
- Add the
MEMORY_REQD_PER_MTUfor each of the MTU values set on the NUMA node and add another512MBas buffer. Round the value up to a multiple of1024.
- edpm_ovs_dpdk_memory_channels
-
Maps memory channels in the CPU per NUMA node. edpm_ovs_dpdk_memory_channels is the other_config:dpdk-extra="-n <value>" value in OVS:
- Use
dmidecode -t memoryor your hardware manual to determine the number of memory channels available. - Use
ls /sys/devices/system/node/node* -dto determine the number of NUMA nodes. - Divide the number of memory channels available by the number of NUMA nodes.
- Use
- edpm_ovs_dpdk_vhost_postcopy_support
- Enable or disable OVS-DPDK vhost post-copy support. Setting this to
trueenables post-copy support for all vhost user client ports. - edpm_nova_libvirt_qemu_group
- Set
edpm_nova_libvirt_qemu_grouptohugetlbfs`so that the `ovs-vswitchdandqemuprocesses can access the shared huge pages and UNIX socket that configures thevirtio-net device. This value is role-specific and should be applied to any role leveraging OVS-DPDK. - edpm_ovn_bridge_mappings
-
List of bridge and DPDK ports mappings.
Example:
edpm_ovn_bridge_mappings: - "datacentre:br-ex" - edpm_kernel_args
- Provides multiple kernel arguments to
/etc/default/grubfor the compute nodes at boot time.
Configuration map parameters Copy linkLink copied!
You can set various parameters in the ConfigMap section of a custom resource (CR) to configure the CPU and memory for optimum performance on data plane nodes for OVS-DPDK and SR-IOV.
- cpu_shared_set
- List or range of host CPU cores used to determine the host CPUs that instance emulator threads should be offloaded to for instances configured with the share emulator thread policy (
hw::emulator_threads_policy=share). - cpu_dedicated_set
-
A comma-separated list or range of physical host CPU numbers to which processes for pinned instance CPUs can be scheduled.
- Exclude all cores from the
edpm_ovs_dpdk_pmd_core_list. - Include all remaining cores.
- Pair the sibling threads together.
- Exclude all cores from the
- reserved_host_memory_mb
- Reserves memory in MB for tasks on the host. Use the static value of
4096MB.