# RPS(Receive Packet Steering) RPS(Receive Packet Steering)とは、Linux カーネルのネットワーク受信スタックにおいて、[[RSS(Receive Side Scaling)]] のソフトウェア実装版として機能する仕組みである。Linux 2.6.35 で導入され、シングルキュー NIC 環境でもパケット処理を複数 CPU コアに分散できる。 ## 動作原理 1. NIC が単一の割り込みを CPU0 へ通知する(シングルキュー NIC の通常動作) 2. CPU0 がパケットのヘッダ情報(4 タプル: 送受信 IP・ポート)をハッシュ化 3. コア間割り込み(IPI: Inter-Processor Interrupt)を使って他の CPU コアへプロトコル処理を分散する ## 設定方法 ```bash # 分散先 CPU コアのビットマスク(例: 4 コア全部有効) echo "f" > /sys/class/net/eth0/queues/rx-0/rps_cpus ``` ## RSS・RFS との比較 RPS は [[RSS(Receive Side Scaling)]] のハードウェア非依存版だが、アプリケーションの CPU キャッシュ局所性を考慮しない。この点を改善したものが [[RFS(Receive Flow Steering)]](RPS の拡張)。 ## 位置づけ [[RSS(Receive Side Scaling)]] が使えない(NIC ハードウェア非対応)環境で、シングルキュー NIC のパケット処理を複数コアに分散するための基盤技術。実用環境では通常 [[RFS(Receive Flow Steering)]] と組み合わせて設定する(rps_cpus と rps_flow_cnt を同時設定)。 ## 横断的知見 - 今後の取り込みで、複数ソース間の関係を追記する。 ## 未解決の問い - この概念をどのソース群で継続的に検証するか。