本包目录(357 条)
sysctl 内核参数72 条CPU 与调度60 条内存与 OOM58 条磁盘与 IO32 条
网络栈调优98 条
性能分析工具37 条

RPS/RFS 软件收包分发

单队列网卡或中断集中导致单核软中断打满时, 可用 RPS 把收包处理分散到多核, 再用 RFS 让同一条流固定到应用所在核。

启用 RPS

启用 RPS
echo 32768 > /proc/sys/net/core/rps_sock_flow_entries
echo ffff > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo 32768 > /sys/class/net/eth0/queues/rx-0/rps_flow_cnt
适用单队列网卡、虚拟网卡
不适用的场景硬件 RSS 已把流量分到多队列时叠加 RPS 增加开销

易错点

  • rps_cpus 是十六进制 CPU 位图, 写错掩码导致流量集中到单核
  • 在已有 RSS 多队列的网卡上叠加 RPS, 收益有限且多一次分发开销

数据来源与参考

  • Linux Documentation/networking/scaling.rst
  • Linux Documentation/admin-guide/sysctl/net.rst
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌