1.RSS(Receive Side Scaling)
RSS(Receive Side Scaling)也叫多队列接收,可以硬件级别实现使用多核处理接收网络数据。可用于缓解因单个CPU过载,导致的接收中断处理瓶颈,并减少网络延迟。
可以通过/proc/interrupts确定网络接口卡是否支持RSS。也可以在加载网络驱动程序后,通过“ls -1 /sys/devices/*/*/device_pci_address/msi_irq” 的输出来查看。(需要网卡硬件及驱动同时支持)
默认情况下,RSS是启用的。RSS的队列数量通常在/sys/class/net/device/queues/rx queue/中配置,其中device是网络设备的名称(例如eth1),rx queue是相应接收队列的名称。
在配置RSS时,RedHat建议将队列数量限制为每个物理CPU核心一个队列。启用RSS后,会根据每个CPU使用情况来分配数据的处理。也可以使用ethtool --show-rxfh-indir和--set-rxfh-indir参数来修改使用的权重。
irqbalance守护进程可以与RSS一起使用,它将减少跨节点内存传输和缓存线跳转的可能性。如果开启了irqbalance和RSS,通过irqbalance将与网络设备相关的中断定向到适当的RSS队列,可以实现最低的延迟。
2.Receive-Side Scaling (RSS)
RPS与RSS类似,用于将数据包定向到特定的CPU进行处理。RPS是在软件级别实现的,有助于避免单队列网卡成为网络流量的瓶颈。
与RSS相比,RPS有几个优势:
RPS由于是基于软件的,所有网卡都可以使用;
在处理新协议时,更容易增加软件过滤器;
RPS不增加网络设备的硬件中断率。注意:RPS它引入了处理器间的中断(软中断);
RPS是在/sys/class/net/device/queues/rx-queue/rps_cpus文件中配置接收队列,其中device是网络设备的名称(如eth0),rx-queue是相应接收队列的名称(如rx-0)。
rps_cpus文件默认值为0,也就是禁用RPS,这样CPU既会处理数据中断,也会处理数据包。
要指定CPU处理接收队列的中断数据,需要将CPU索引位设置为1。如,要使用CPU 0、1、2和3处理中断,只需要将rps_cpus文件值设置为00001111或 f(十六进制值=1+2+4+8)。
对于单队列的网络设备,可

本文深入探讨了网络性能优化技术,包括RSS(Receive Side Scaling)、RPS(Receive Packet Steering)、RFS(Receive Flow Steering)和XPS(Transmit Packet Steering)。RSS利用多核处理网络数据,减少中断处理瓶颈。RPS和RFS在软件层面改善数据包处理,RFS尤其注重CPU缓存效率。XPS确保发送数据包的CPU与处理发送软中断的CPU一致,提高发送数据的局部性。此外,还介绍了多队列网卡的配置与优化,以及如何通过ethtool和sysctl调整相关参数以提升性能。
最低0.47元/天 解锁文章
2379

被折叠的 条评论
为什么被折叠?



