linux内核rps与rfs机制分析

 

在多核时代。

做linux网络优化时,如果是硬件网卡,可以通过配置硬件多队列的方式,开启多核并行处理。

如果是单队列的网卡,或者vethernet这种软件网卡。可以配置RPS,进行软件分发。

(如果是开启了多队列的硬件网卡,一般建议不需要开启RPS)

 

RPS是指,收到包之后,用四元组做hash,选择对应的处理CPU

见linux代码

 

RFS是指在RPS hash选CPU之前,查一个flow表,这个表里记录了,应该选择哪一个CPU。

表里的值,是socket上送时记录的,为了更好的和软件做亲和。

 

 

所以如果是nginx这类应用程序,RFS就比较有用。如果是forward,就没啥用,但是也没有坏处,所以依然可无脑配置。

所以最佳实践是,配置了RFS之后还需要配置应用程序的CPU绑定。

 

https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/6/html/performance_tuning_guide/network-rfs

 

posted on 2025-07-08 15:22  toong  阅读(46)  评论(0)    收藏  举报