rps・rfs等最新linux kernel事例

5
従来のNICネットワークスタックの問題点 マルチコア環境においても一つのNICの受信処理は一つのCPU でしか行えない 通信量が多いときにパケット処理の負荷が特定のコアへ大きく 偏り性能に悪影響を及ぼす 1つのNICに届いたパケットを複数のCPUへ分散させる ハードウェアによる実装:RSS ソフトウェアによる実装:RPS(Linux) 分散先CPUの最適化:RFS(Linux) 11720日水曜日

Upload: takuya-asada

Post on 04-Dec-2014

1.528 views

Category:

Documents


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Rps・rfs等最新linux kernel事例

従来のNIC・ネットワークスタックの問題点• マルチコア環境においても一つのNICの受信処理は一つのCPU

でしか行えない

• 通信量が多いときにパケット処理の負荷が特定のコアへ大きく偏り性能に悪影響を及ぼす

• 1つのNICに届いたパケットを複数のCPUへ分散させる

• ハードウェアによる実装:RSS

• ソフトウェアによる実装:RPS(Linux)

• 分散先CPUの最適化:RFS(Linux)

11年7月20日水曜日

Page 2: Rps・rfs等最新linux kernel事例

RSS

NIC

パケットパケットパケット

ハッシュ計算

パケット着信

hash queue

ディスパッチ参照

RX Queue

#0

RX Queue

#1

RX Queue

#2

RX Queue

#3

cpu0 cpu1 cpu2 cpu3

受信処理

割り込み

受信処理

■■

01

11年7月20日水曜日

Page 3: Rps・rfs等最新linux kernel事例

cpu3cpu2cpu1cpu0

割り込み無効化

プロトコル処理

ソケット受信処理

ユーザプログラム

user buffer

socketqueue

パケット

システムコール

プロセス起床

ハードウェア割り込み

ユーザ空間へコピー

パケットパケット

ソフトウェア割り込み

パケット受信

ハッシュ計算

ディスパッチ

プロトコル処理

ソケット受信処理

ユーザプログラム user

buffer

socketqueue

backlog#1

hash queue 参照■■

01

CPU間割り込み

backlog#2

backlog#3

RPS11年7月20日水曜日

Page 4: Rps・rfs等最新linux kernel事例

RFS

NIC

デフォルトCPUへ割り込み

CPU0 CPU1 CPU2 CPU3

割り込みハンドラ

ネットワークスタック

プロセス起床

プロセスA

ポーリング

バッファ

ネットワークスタック

プロセス起床

プロセスB

11年7月20日水曜日

Page 5: Rps・rfs等最新linux kernel事例

RFS hardware acceleration

• RSS対応NICでもRFSが出来るように、ネットワークスタック+ドライバを拡張

11年7月20日水曜日