iijlab 高速ネットワークスタック

2015-04-09 IIJ 飯田橋 13F
7
わたけん @wataken44

後日の資料でたとえばDPDKでなく自前のOSが必要となる理由が説明されてるといいな #iijlab_seminar

2015-04-09 18:09:10
Yojiro UO @yojiro

割り込みハンドラの軽量化について。save/restoreするためのpush/pop(30inst)を3GHzのCPUで処理するだけで10nsかかるんですよ! #iijlab_seminar

2015-04-09 18:10:06
Yojiro UO @yojiro

次の話題「ちょーはやい経路ルックアップアルゴリズム考えたよ」 いままでのCPU命令セットの話から木構造の話にガラッと転換。 #iijlab_seminar

2015-04-09 18:11:41
イスラエルエリカちゃん #StayAtHome @syuu1228

@wataken44 たぶんですが、割り込みハンドラのpush/popにかかる時間とかものすごい粒度の細かいものについて問題にしているので、既存OSだとCPUで次に何が実行されるかということを完全に制御して実験する事が難しいためじゃないかと #iijlab_seminar

2015-04-09 18:11:58
Yojiro UO @yojiro

10GbE/40GbE/100GbEのパケット処理の時間制約を満たせるlookup性能がでるアルゴリズム。某BGPルータの経路表に対して245Mlookup/sec (/core)くらいでるよ。80万経路でも性能でたよ(サマリー) #iijlab_seminar

2015-04-09 18:14:42
Yojiro UO @yojiro

さらに次の話題:「実はちゃんとしたsocket APIをつくらないといけないとおもっていてさ」←最近の研究の紹介 ぱんだせんせい... #iijlab_seminar

2015-04-09 18:16:26
Yojiro UO @yojiro

二人目の話者。浅田さん @syuu1228 からseastarのはなし。 「高スループットなサーバーアプリケーションの為の新しいフレームワーク」 seastar-project.org #iijlab_seminar

2015-04-09 18:21:21
Yojiro UO @yojiro

SaestarはApache ライセンスのOSS by Cloudius systems。 どちらかというとアプリケーションサーバー側なのがpandaせんせいの話とちがう #iijlab_seminar

2015-04-09 18:23:13
Yojiro UO @yojiro

OSv: 既存のソースコードを変えずに下回りの変更で高速化できるか->数パーセントから数割が限界。 数倍高速化したい→SeaStar開発の目的 #iijlab_seminar

2015-04-09 18:25:56
Yojiro UO @yojiro

いまどきのハードウェア - コアいっぱい - NUMA - 1coreの性能向上は遅い - IO (NIC/SSD)とかはどんどん速くなる I/Oの扱い方を考え直さないといけない。 #iijlab_seminar

2015-04-09 18:27:16
Yojiro UO @yojiro

いまどきのハードウェアと既存のソフトウェアデザインのミスマッチ。 ロック・競合のコスト、NUMAフレンドリ、共有データの扱い、API設計の古さ SeaStart: 何もシェアしない、シングルスレッド/core, etc... #iijlab_seminar

2015-04-09 18:30:00
Yojiro UO @yojiro

SeaStarの新しい構造 shared nothing, no thread, no context switch, no locking -> NUMA / multicore friendly architecture, #iijlab_seminar

2015-04-09 18:32:03
フサギコ @fusagiko

IIJlab行けば良かったなぁ…(

2015-04-09 18:34:01
Yojiro UO @yojiro

pandaせんせいのさっきまでの話はIA64くわしい(SDM読んでること必須)、ネットワークハードウェア詳しくないとわからない、だったけど、syuuせんせいのはOS設計論とかLinux/BSDの実装くわしい、みたいな話になった。 #iijlab_seminar

2015-04-09 18:34:39
Yojiro UO @yojiro

syuuせんせい「みんなDPDKとか知ってると思うけど(必要な部分だけ)ちょっと説明してやっか」 #iijlab_seminar

2015-04-09 18:36:39
Yojiro UO @yojiro

DPDK+SeaStarの説明。これでさっき説明したいろいろと速くなるけどSocket APIは非互換で独自APIが必要。 フルスクラッチでTCPv4, UDPv4, ARP, DHCPかいた。サーバーアプリ用の機能だけ。ルータはやってない。 #iijlab_seminar

2015-04-09 18:40:12
Yojiro UO @yojiro

SeaStarのプログラミングモデル: C++14, Future, Promise Continuationモデルに基づく非同期API リアクティブプログラミングモデルっぽいの。 #iijlab_seminar

2015-04-09 18:41:16
Yojiro UO @yojiro

Future/Promiseの説明。「知ってる人は知ってるし。知らない人は言われてもわからない」→コードみたほうはやいでしょ?→ほら、かんたんでしょ? #iijlab_seminar

2015-04-09 18:43:30
Yojiro UO @yojiro

「C++11, 14とかのラムダ式ってみんなしってる?」「普段Cしかかかないひとはなんだこれって感じだとおもうけど」 #iijlab_seminar

2015-04-09 18:45:12
Yojiro UO @yojiro

SeaStarでのfuture/promise/contination をつかったUDPサーバーの書き方(例:10行のコード) いままでしってるものと違いすぎてしんどい! #iijlab_seminar

2015-04-09 18:49:07
Yojiro UO @yojiro

SeaStarでのZeroCopy RX API, テンポラリバッファがDPDKのページを直接参照。 ZeroCopy TX API。送信可能、バッファ解放可能それぞれを扱うfutureが用意されている。 #iijlab_seminar

2015-04-09 18:52:30
Yojiro UO @yojiro

SeaStarでの複数コアでのインスタンス生成とコア間通信のコード例 たぶん初めてのプログラミング講座? #iijlab_seminar

2015-04-09 18:55:11
Yojiro UO @yojiro

SeaStarではポインタ(スマートポインタ含む)は使用しない。コピーがふさわしくないときはstd:move()つかってね。 #iijlab_seminar

2015-04-09 18:56:44
Yojiro UO @yojiro

SeaStarのスケジューリング機構についての説明。pinningを活用してcoreを跨いだりうごいたりはしないよ。 syuuせんせい「かんたんにいうと」→コード参照して説明。とってもかんたんだ! #iijlab_seminar

2015-04-09 18:59:21
Yojiro UO @yojiro

SeaStarのスケジューリング。ランタイムでの処理の説明。ランキューに入るタスクの例と、その処理の流れについての説明。(140文字じゃかけないよ!) #iijlab_seminar

2015-04-09 19:02:26