- 文档首页
云服务器
云服务器ECS
最佳实践
镜像
Linux内核调优
在Linux操作系统中调整RPS相关参数
Linux内核调优
在Linux操作系统中调整RPS相关参数
在Linux操作系统中调整RPS相关参数
本文主要介绍如何在Linux操作系统中,配置RPS(Receive Packet Steering,接收数据包定向)功能相关参数,优化网络数据包处理的功能,改善多核系统上的网络性能和负载均衡。
参数说明
net.core.rps_sock_flow_entries
该参数用于配置Linux内核中的的最大流表项数目,即能够同时跟踪的网络流的数量。增加这个参数的值可以提高RPS的性能,从而更有效地利用多个CPU核心来处理网络流量。流表中的每个流对应着一个网络连接,当一个数据包到达时,内核会根据数据包的源地址、目的地址、协议等信息来确定对应的流,并将数据包分发到流对应的CPU核心上进行处理。
本实践是指/sys/class/net/<interface>/queues/rx-<queue>/rps_cpus参数,该参数用于指定处理来自单个网卡(interface)指定队列(queues)的网络流(flow)数据包的CPU核心。通过设置这个参数可以限制参与RPS处理的CPU核心的数量,从而提高系统性能。
本实践是指/sys/class/net/<interface>/queues/rx-<queue>/rps_flow_cnt参数,这个参数用于控制单个网卡(interface)指定队列(queues)中,每个CPU核心上的RPS队列中最多可以缓存多少个流。通过增加这个值,可以允许更多的数据包在多个处理核心之间分配,从而加速数据包的处理速度。
操作场景
- 在CPU数量远大于网卡队列时,可通过配置rps_sock_flow_entries参数值,提升网络性能。
- 云服务器使用虚拟网卡时(例如veth),通过配置rps_sock_flow_entries参数值,可较大程度提升网络性能。
注意
- 普通的物理网卡不建议配置,否则可能会造成核间中断开销增大,反而降低性能。
- RFS依赖于RPS,RPS是默认关闭的,需要开启RPS后,RFS相关配置才能生效。RPS配置CPU列表时,尽量选取与中断CPU同一个NUMA域内的CPU,同时也应尽量排除负载已经很高的CPU。
操作步骤
本方式可在操作系统运行过程中临时更改参数,每次重启实例后都需要重新配置。
- 查看rps_sock_flow_entries参数值。
cat /proc/sys/net/core/rps_sock_flow_entries
-
cat /sys/class/net/eth0/queues/rx-*/rps_cpus
-
cat /sys/class/net/eth0/queues/rx-*/rps_flow_cnt
-
- 配置rps_sock_flow_entries参数值。
说明
建议值配置为32768,您也可以根据实际业务需求自行调整。
echo 32768 > /proc/sys/net/core/rps_sock_flow_entries
说明
本命令作用是配置eth0网卡接收接收数据包时,使用所有可用的CPU核心进行处理,请将eth0替换为实际网卡名。
echo ff > /sys/class/net/eth0/queues/rx-*/rps_cpus
说明
本实践中,实例CPU核数为8,网卡名为eth0。
- 请将4096替换为rps_sock_flow_entries / CPU核数的值,
echo 4096 > /sys/class/net/eth0/queues/rx-*/rps_flow_cnt
本方式可在操作系统运行过程中永久修改参数值,重启实例后无需再次配置。
- 查看net.core.rps_sock_flow_entries参数值。
sysctl net.core.rps_sock_flow_entries
-
- 执行如下命令,新建/etc/sysctl.d/rps.conf文件。
sudo vim /etc/sysctl.d/rps.conf
net.core.rps_sock_flow_entries=32768
- 按Esc键退出编辑模式,输入:wq按回车键,保存并退出文件。
- 执行如下命令,新建/etc/sysfs-ng.d/rps.conf文件。
sudo vim /etc/sysfs-ng.d/rps.conf
说明
本实践中,实例CPU核数为8,网卡名为eth0。
- 请将4096替换为rps_sock_flow_entries / CPU核数的值,
class/net/eth0/queues/rx-*/rps_cpus = ff
class/net/eth0/queues/rx-*/rps_flow_cnt = 4096
- 按Esc键退出编辑模式,输入:wq按回车键,保存并退出文件。
- 执行如下命令,新建/etc/sysctl.d/rps.conf文件。
sudo vim /etc/sysctl.d/rps.conf
net.core.rps_sock_flow_entries=32768
- 按Esc键退出编辑模式,输入:wq按回车键,保存并退出文件。
- 执行如下命令,新建/etc/sysfs.d/rps.conf文件。
sudo vim /etc/sysfs.d/rps.conf
说明
本实践中,实例CPU核数为8,网卡名为eth0。
- 请将4096替换为rps_sock_flow_entries / CPU核数的值,
class/net/eth0/queues/rx-*/rps_cpus = ff
class/net/eth0/queues/rx-*/rps_flow_cnt = 4096
- 按Esc键退出编辑模式,输入:wq按回车键,保存并退出文件。
最近更新时间:2025.10.27 16:37:23