インターネット等のネットワークは日常生活で必要不可欠になっており、大量の情報がネットワークで扱われています。 また、ネットワーク対応器材ではi.MX6のようなマルチコアCPUを持つものが主流になってきており、大量のネットワーク負荷を効率的にマルチコアCPUで処理することが重要になっています。 ネットワーク負荷を効率的にCPUに割り振ることは、簡単なことではありませんが、Googleが2つの解決策を提供しています。 それがRPS (Receive Packet Steering) と RFS (Receive Flow Steering) で、Linux kernel 2.6.35以降に適用されます。 RFSとRPSの長所
RPS と RFS のしくみ RPS (Receive Packet Steering): RPSは受信したパケットを処理するネットワーク負荷をマルチプルコアに分配することができます。 この技術はTCP/IPのようなプロトコルをパケットとして並行的に処理することができます。 マッピングはハッシュテーブルメカニズムで行われます。 受信したキューにはCPUへのマスクのインデックスとして、特定のハッシュ・パケット・ヘッダーが用いられます。 RPSはどのCPUが特定のネットワークキューを実行するかを決定します。 RFS (Receive Flow Steering): RFSはRPSを進めた技術です。 RPSではCPUの選択がランダムに行われますが、選択されたCPUコアが他のタスクでオーバーロードになっている場合には問題が生じます。 RFSでは、“recvmsg()”というシステムコールを出しているCPUを選択することにより、キャッシュの利用効率を高めます。 マルチコアCPUシステム開発への反映 RPSとRFSはLinux kernel 2.6.35 以降のシステムにおいてきわめて有効であり、マルチコアCPUシステム開発にあたってはこれらをうまく使用する必要があります。 詳しくは、営業へお問い合わせ下さい。 プレスリリーストップへ