RocksDB Proxy (Kvrocks) Network Multipathing
Application scenario: On a NUMA multi-socket server, the default irqbalance daemon process usually allocates network interrupts to a specific NUMA node. As a result, Kvrocks instances on other nodes need to access the receive buffer across nodes when processing network requests. This leads to bandwidth contention of QuickPath Interconnect (QPI)/Ultra Path Interconnect (UPI) links and cache coherence protocol overheads, which can decrease the overall server throughput.
Technical principle: The interrupt request (IRQ) numbers of multiple NIC queues are evenly allocated to all NUMA nodes so that the CPU cores on each NUMA node can process the network interrupts of the local node. This effectively reduces the communication overhead of network traffic across NUMA nodes and CPUs on a server in multi-instance deployment scenarios. This mechanism also includes an adaptive optimization policy that can dynamically adjust resource distribution based on the system load and network traffic characteristics.
Performance metric: The performance in YCSB workloada and workloadc scenarios is improved by 5% on average.
