简介
本文主要介绍如何在使用openEuler操作系统的鲲鹏920系列处理器上使能Redis网络多路径及分域调度优化特性。
在互联网业务场景中,一台服务器上通常会部署多个容器业务,每个业务进程通过网络收发业务报文时,网卡中断处理的CPU核与业务进程所在CPU核大多数时候不在相同的NUMA节点,跨NUMA节点的内存访问会导致业务响应时延增加。
Redis网络多路径特性通过将网卡队列中断按照一定策略绑定到不同NUMA节点的CPU上,同时通过识别特定业务进程的流量特征,将指定业务进程的网络流量优先由当前业务进程所在NUMA上的网卡队列进行接收,从而实现业务进程网络请求与网络中断的亲和性。
此外,在互联网业务场景中,一台服务器上通常会部署多个Redis容器业务,经常会出现下面两种情况。第一种,容器内部跨Cluster共享数据,同一个容器内的业务分散运行在多个CPU Cluster上,Cluster间Cache同步和跨Cluster访问时延造成业务性能抖动;第二种,容器之间的资源竞争,多个容器业务的任务竞争Cache/内存带宽等资源,造成业务间的相互干扰和资源利用不均衡。在众核服务器上,上述两点影响严重影响容器间的性能隔离效果,导致容器间相互干扰,造成容器部署密度无法提升,影响CPU资源的使用率。
分域调度特性从任务组的视角优化调度选核和负载均衡,将有关联关系的任务聚合在虚拟的调度域上进行运行,从而提升任务运行时的CPU Cache局部性和降低不同任务之间相互干扰引发的Cache/内存带宽等硬件资源争抢,同时也可以用来缓解网络多路径使能后,线性度下降的问题。
网络多路径特性和分域调度特性是两个可以独立使能的特性,可以分开使用,也可以结合在一起使用。请根据不同的业务场景和需求做出选择。例如,如果需要将网卡队列中断绑定到NUMA上,可以使用Redis网络多路径特性;如果需要绑定到Cluster上,可以使用Redis分域调度特性;如果需要解决使能网络多路径后多实例线性度劣化问题,可以两者叠加使用。