网卡调优RSS、RPS、RFS和XPS

本文深入探讨了网络性能优化技术,包括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调整相关参数以提升性能。

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)。

        对于单队列的网络设备,可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷咪哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值