一、概述
RSS和RPS都是网卡为了在接受数据包的时候使用多核架构而进行的性能增强,RSS是在硬件层面而RPS在软件层面。在数据包接收到之后在用户态的处理逻辑怎么处理,应用层的响应数据包如何发送都会影响系统性能,RFS(Receive Flow Steering)和XPS(Transmit Packet Steering)这两个机制就是为了解决这两个问题而产生的。
参考kernel:https://www.kernel.org/doc/Documentation/networking/scaling.txt
二、网卡处理的基本概念
2.1 硬中断(Hardware Interrupt)
硬件设备产生输入核输出事件的时候,会向CPU发送信号,这个信号就是硬中断。CPU在接收到硬中断之后,会停止现在的工作,以最高优先级处理这个硬件中断事件。
2.2 软中断(SoftIRQ)
软中断与硬中断在机制上类似只是优先级稍微低一点。在网卡传输数据的过程中,典型的过程是数据到达网卡,网卡通过DMA将数据拷贝到为网卡驱动指定的内存区域,产生硬中断,然后CPU需要自己负责处理中断,将网卡的数据拷贝到内核指定区域,进行TCP/IP协议栈的处理,再通知应用层并将数据拷贝的应用层。在这种情况下,如果一旦一个硬中断来了之后,CPU一直忙碌于处理网卡的这个请求和服务上层应用,那网卡后续数据到来产生的硬中断也会被延后处理,而且其它设备和进程也无法使用这个CPU资源,造成CPU饥饿状态。所以在处理设备硬中断的时候,将整个过程分成两个阶段;第一阶段&#