割り込みハンドラの軽量化について。save/restoreするためのpush/pop(30inst)を3GHzのCPUで処理するだけで10nsかかるんですよ! #iijlab_seminar
2015-04-09 18:10:06次の話題「ちょーはやい経路ルックアップアルゴリズム考えたよ」 いままでのCPU命令セットの話から木構造の話にガラッと転換。 #iijlab_seminar
2015-04-09 18:11:41@wataken44 たぶんですが、割り込みハンドラのpush/popにかかる時間とかものすごい粒度の細かいものについて問題にしているので、既存OSだとCPUで次に何が実行されるかということを完全に制御して実験する事が難しいためじゃないかと #iijlab_seminar
2015-04-09 18:11:5810GbE/40GbE/100GbEのパケット処理の時間制約を満たせるlookup性能がでるアルゴリズム。某BGPルータの経路表に対して245Mlookup/sec (/core)くらいでるよ。80万経路でも性能でたよ(サマリー) #iijlab_seminar
2015-04-09 18:14:42さらに次の話題:「実はちゃんとしたsocket APIをつくらないといけないとおもっていてさ」←最近の研究の紹介 ぱんだせんせい... #iijlab_seminar
2015-04-09 18:16:26二人目の話者。浅田さん @syuu1228 からseastarのはなし。 「高スループットなサーバーアプリケーションの為の新しいフレームワーク」 seastar-project.org #iijlab_seminar
2015-04-09 18:21:21SaestarはApache ライセンスのOSS by Cloudius systems。 どちらかというとアプリケーションサーバー側なのがpandaせんせいの話とちがう #iijlab_seminar
2015-04-09 18:23:13OSv: 既存のソースコードを変えずに下回りの変更で高速化できるか->数パーセントから数割が限界。 数倍高速化したい→SeaStar開発の目的 #iijlab_seminar
2015-04-09 18:25:56いまどきのハードウェア - コアいっぱい - NUMA - 1coreの性能向上は遅い - IO (NIC/SSD)とかはどんどん速くなる I/Oの扱い方を考え直さないといけない。 #iijlab_seminar
2015-04-09 18:27:16いまどきのハードウェアと既存のソフトウェアデザインのミスマッチ。 ロック・競合のコスト、NUMAフレンドリ、共有データの扱い、API設計の古さ SeaStart: 何もシェアしない、シングルスレッド/core, etc... #iijlab_seminar
2015-04-09 18:30:00SeaStarの新しい構造 shared nothing, no thread, no context switch, no locking -> NUMA / multicore friendly architecture, #iijlab_seminar
2015-04-09 18:32:03pandaせんせいのさっきまでの話はIA64くわしい(SDM読んでること必須)、ネットワークハードウェア詳しくないとわからない、だったけど、syuuせんせいのはOS設計論とかLinux/BSDの実装くわしい、みたいな話になった。 #iijlab_seminar
2015-04-09 18:34:39syuuせんせい「みんなDPDKとか知ってると思うけど(必要な部分だけ)ちょっと説明してやっか」 #iijlab_seminar
2015-04-09 18:36:39DPDK+SeaStarの説明。これでさっき説明したいろいろと速くなるけどSocket APIは非互換で独自APIが必要。 フルスクラッチでTCPv4, UDPv4, ARP, DHCPかいた。サーバーアプリ用の機能だけ。ルータはやってない。 #iijlab_seminar
2015-04-09 18:40:12SeaStarのプログラミングモデル: C++14, Future, Promise Continuationモデルに基づく非同期API リアクティブプログラミングモデルっぽいの。 #iijlab_seminar
2015-04-09 18:41:16Future/Promiseの説明。「知ってる人は知ってるし。知らない人は言われてもわからない」→コードみたほうはやいでしょ?→ほら、かんたんでしょ? #iijlab_seminar
2015-04-09 18:43:30「C++11, 14とかのラムダ式ってみんなしってる?」「普段Cしかかかないひとはなんだこれって感じだとおもうけど」 #iijlab_seminar
2015-04-09 18:45:12SeaStarでのfuture/promise/contination をつかったUDPサーバーの書き方(例:10行のコード) いままでしってるものと違いすぎてしんどい! #iijlab_seminar
2015-04-09 18:49:07SeaStarでのZeroCopy RX API, テンポラリバッファがDPDKのページを直接参照。 ZeroCopy TX API。送信可能、バッファ解放可能それぞれを扱うfutureが用意されている。 #iijlab_seminar
2015-04-09 18:52:30SeaStarでの複数コアでのインスタンス生成とコア間通信のコード例 たぶん初めてのプログラミング講座? #iijlab_seminar
2015-04-09 18:55:11SeaStarではポインタ(スマートポインタ含む)は使用しない。コピーがふさわしくないときはstd:move()つかってね。 #iijlab_seminar
2015-04-09 18:56:44SeaStarのスケジューリング機構についての説明。pinningを活用してcoreを跨いだりうごいたりはしないよ。 syuuせんせい「かんたんにいうと」→コード参照して説明。とってもかんたんだ! #iijlab_seminar
2015-04-09 18:59:21SeaStarのスケジューリング。ランタイムでの処理の説明。ランキューに入るタスクの例と、その処理の流れについての説明。(140文字じゃかけないよ!) #iijlab_seminar
2015-04-09 19:02:26