Slide 1

Slide 1 text

ネットワーク性能調査を ちょっとやってみる 法政大学 応用情報工学科B4 河原颯太(khwarizmi)

Slide 2

Slide 2 text

自己紹介 - 河原颯太(かわはらそうた) @khwarizmi6514 - 法政大学応用情報工学科 学部4年 金井(ネットワークセキュリティ)研究室所属 - 小学5年から野球を初めて高校3年までやっていた. - 春日部高校出身です! (これを言うといろんなところで先輩後輩が釣れることに最近 気が付いた) - パソコンとは無縁の生活だったが, 大学入学時, 気が付いたらパソコンをやらなけ ればいけなくなっていた. - 一緒に研究をしてくれる後輩募集中 (一人で研究をしていて寂しい)

Slide 3

Slide 3 text

最近やってること - DPDKを用いたネットワークスタック開発 - NICのデバドラ開発 - NICのハードウェア機能活用による性能比較調査 *最近やりたいこと* - FreeBSDで性能調査(ネットワークスタック参照したりしときながら触ったことがな い) - XDP(Internet week での lineの金丸さんのLTが熱かった) - 自作キーボード(おととい自作キットをポチった) - FPGA(購入してLEDチカチカまでしてそのままタンスの奥にいる)

Slide 4

Slide 4 text

話に入る前に ちょうど24時間前くらいに決まったほぼ飛び入りLTなので ぜひ 期待値0で 聞いてください

Slide 5

Slide 5 text

今日の話題 つい最近からやっている NICのハードウェア機能活用による性能比較調査 の現在の進捗を発表します.

Slide 6

Slide 6 text

近年の High speed network 事情 - ハードウェア性能が向上し, ワイヤーレートが非常に伸びている - ネックがハードからソフト的な場所に移っている ⬇ - ソフト的なネックを排除したい - 余っているハードウェアパワーを有効に使いたい

Slide 7

Slide 7 text

近年の High speed network 事情 - ハードウェア性能が向上し, ワイヤーレートが非常に伸びている - ネックがハードからソフトに近い場所に移っている ⬇ - ソフト的なネックを排除したい - 余っているハードウェアパワーを有効に使いたい

Slide 8

Slide 8 text

今日の話題となる手法 - RSS (と RPS) - チェックサムオフローディング - LRO (と GRO)

Slide 9

Slide 9 text

RSS (とRPS) マルチコア環境における問題 - パケット受信のソフト割り込みは1つのCPUに偏ってしまう. - 家庭用PCでもマルチコアが普通の環境出コア数で性能がスケールしないのは非 常によろしくない - 単純に適当にパケットを順番に各コアに割り振るのでは多くの無視できない問題が ある.

Slide 10

Slide 10 text

RSS (とRPS) RSSとは - Receive Side Scalingの略 - パケットをマルチコアで処理する手法 - マルチキューNICでのみ使用可能 RPSとは - RSSのソフトウェア実装

Slide 11

Slide 11 text

RSS (とRPS) 仕組み - パケットヘッダの一部でハッシュ計算をし, ハッシュ値からキューを選択 - 各コアに各キューが割り振られる(と思ってほとんど構わない) - 担当のキューにパケットが来たら各コアが処理 - パケットのヘッダからハッシュを取るため, 同じフローのパケットが分散されることが ない

Slide 12

Slide 12 text

RSS (とRPS) 計測結果 RSS スループット (Gbps) 有効 9.43 無効 5.08

Slide 13

Slide 13 text

RSS (とRPS) ソフト割り込みの様子 ← 前 後→ (ちょっと怪しい...)

Slide 14

Slide 14 text

チェックサムオフローディング - IP, TCP, UDPのチェックサムをNICが計算してくれるやつ - こういう決まりきった計算はハードウェアの方が得意だという風に誰かが言っていま した - 基本的にはCPU使用率を下げる効果がある

Slide 15

Slide 15 text

チェックサムオフローディング 計測結果 checksum offloading スループット (Gbps) CPU使用率 (%) 有効 9.36 96.2 無効 9.29 99.3

Slide 16

Slide 16 text

LRO と GRO 割り込み事情 - 割り込みはとにかく重い(コンテキストスイッチ, キャッシュ汚染) - GbEでショートパケット(64byte)とすると, 1000000000(bit) ÷ 8(byte) ÷ 64(パケット) = 1953125 つまり, 秒間約200万回の割り込みが発生している - さすがに多すぎるでしょ

Slide 17

Slide 17 text

LRO と GRO LROとは - Lerge Receive Offload の略 - 分割されたTCPパケットをNICでリアセンブルする - 割り込みを削減できる GROとは - General Receive Offload の略 - LRO のソフトウェア実装

Slide 18

Slide 18 text

LRO と GRO 計測結果 GRO スループット (Gbps) CPU使用率 (%) 有効 9.41 10.3 無効 5.08 100

Slide 19

Slide 19 text

まとめ うまくNICを使ってちゃんとチューニングをすれば linuxネットワークスタックでも10G出せます