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
浙公网安备 33010602011771号