More Related Content
Similar to Rps・rfs等最新linux kernel事例
Similar to Rps・rfs等最新linux kernel事例 (19)
More from Takuya ASADA (20)
Rps・rfs等最新linux kernel事例
- 1. 従来のNIC・
ネットワークスタックの問題点
• マルチコア環境においても一つのNICの受信処理は一つのCPU
でしか行えない
• 通信量が多いときにパケット処理の負荷が特定のコアへ大きく
偏り性能に悪影響を及ぼす
• 1つのNICに届いたパケットを複数のCPUへ分散させる
• ハードウェアによる実装:RSS
• ソフトウェアによる実装:RPS(Linux)
• 分散先CPUの最適化:RFS(Linux)
11年7月20日水曜日
- 2. RSS
cpu0 cpu1 cpu2 cpu3
受信処理 受信処理
割り込み
RX RX RX RX
Queue Queue Queue Queue
#0 #1 #2 #3
hash queue
参照
ディスパッチ ■ 0
■ 1
ハッシュ計算
パケット着信
パケット
パケット
パケット
NIC
11年7月20日水曜日
- 3. cpu0 cpu1 cpu2 cpu3
user
ユーザ ユーザ
buffer プログラム プログラム
user
buffer
システム
ユーザ空間へコピー コール
ソケット ソケット
受信処理 受信処理
socket
socket
queue プロセス起床 queue
プロトコル処理 CPU間 プロトコル処理
割り込み
hash queue
参照 ディスパッチ
backlog
■ 0 #1
■ 1
ハッシュ計算 backlog
#2
パケット受信 backlog
#3
ソフトウェア割り込み
割り込み無効化
ハードウェア割り込み
11年7月20日水曜日
パケット
パケット
パケット
RPS
- 4. RFS
CPU0 CPU1 CPU2 CPU3
プロセスA プロセスB
プロセス起床 プロセス起床
ネットワーク ネットワーク
スタック スタック
ポーリング
割り込みハンドラ
デフォルトCPUへ割り込み
NIC
バッファ
11年7月20日水曜日
- 5. RFS hardware
acceleration
• RSS対応NICでもRFSが出来るように、
ネットワークスタック+ドライバを拡
張
11年7月20日水曜日