ボトルネックとなっていたIOのIRQをソフトウェアで各コアに分散してくれます。
解説してるサイトはいまでは多くあるので図だけで示します。
CPUのスペックはCore i7-2600Kです。物理4コア、HTを効かせているので8コアに見えています。カーネルのRPS/RFSを有効にした以外は特に何もしていません。
物理コアの対応は以下のとおりです。
- CPU0 CPU4 : core 0
- CPU1 CPU5 : core 1
- CPU2 CPU6 : core 2
- CPU3 CPU7 : core 3
core 0の負荷がCPU3とCPU7で合計80%近かった状態から、RPS/RFSで各コアに分散した結果20~30%の範囲で落ち着いています。
これがパフォーマンスが2倍3倍になると言われている現象です。
RPS/RFSを有効にしたRTL8111なマシンでは、872Mbps 127k/ppsを記録しています。