Rate This Document
Findability
Accuracy
Completeness
Readability

Feature Description

This document describes how to set up the environment and enable the Redis network multipathing and domain-based scheduling optimization on the openEuler OS running on Kunpeng 920 series processors. It also provides guidance on performance testing and troubleshooting.

In Internet service deployments, a single server typically hosts multiple containerized services. When a service process handles network traffic, the CPU core processing NIC interrupts often resides on a different NUMA node than the service process itself, resulting in increased response latency due to cross-NUMA memory access.

The Redis network multipathing feature addresses this by strategically binding NIC queues to CPUs across different NUMA nodes. By analyzing traffic patterns of specific service processes, it ensures that network traffic of each process is preferentially handled by NIC queues on its local NUMA node, thereby establishing affinity between service processes and their network interrupts.

In addition, when multiple Redis containerized services are deployed on a server, the following two situations often occur: First, data is shared across clusters inside a container. Services in a container run on multiple CPU clusters. Cache synchronization across clusters and cross-cluster access latency cause service performance jitter. Second, tasks of multiple container services compete for resources such as cache and memory bandwidth, causing inter-service interference and unbalanced resource utilization. The preceding two situations severely affect performance isolation between containers. As a result, containers interfere with each other, compromising container deployment density and CPU resource usage.

The domain-based scheduling feature optimizes core selection and load balancing by aggregating related tasks into virtual scheduling domains for execution. This improves CPU cache locality during task running and reduces contention for hardware resources (such as cache and memory bandwidth) caused by cross-task interference. In addition, this feature mitigates linearity decrease that may occur when the network multipathing feature is enabled.

Network multipathing and domain-based scheduling are two features that can be used separately or together, depending on service scenarios and requirements. For example, if you want to bind NIC queue interrupts to NUMA nodes, use the Redis network multipathing feature. If you want to bind the interrupts to clusters, use the Redis domain-based scheduling feature. If you want to solve the problem of linearity decrease that may occur when network multipathing is enabled, use the two features together.

Constraints

Only the network multipathing feature requires that NICs support the Flow Director (FDIR) function. For details, see How Do I Check Whether a NIC Supports the FDIR Function?.

Application Scenarios

  • The network multipathing feature is applicable to physical machines or containers with high service network loads. It enables NUMA affinity scheduling between service processes and their network interrupts, improving memory access efficiency and service performance by more than 20%.
  • The domain-based scheduling feature applies to single-instance scenarios, multi-instance scenarios without CPU affinity configuration, and scenarios where resources are shared. It implements NUMA-level and cluster-level affinity scheduling of service processes through virtualization domains. This feature can be used together with the network multipathing feature to improve performance by more than 10%.