Japan Technical Jamboree 50 #celfjp

2
koba @tetsu_koba

#celfjp ロックレスなキュー。キャッシュラインまで意識したバッファ管理。

2014-10-24 13:09:55
koba @tetsu_koba

#celfjp コアを占有してポーリングする。CPU affinity でCPU割当てる。

2014-10-24 13:11:05
koba @tetsu_koba

#celfjp uioデバイスドライバは割り込みでなくポーリングが基本。

2014-10-24 13:11:41
nekomatu @nekomatu

#celfjp ブートパラメータでhugepapeパラメータをセット

2014-10-24 13:13:52
koba @tetsu_koba

#celfjp サーバーはコアが24個くらいあるので、そのうちの4つをdpdkに割り当てている。オプションで指定可能。

2014-10-24 13:17:26
nekomatu @nekomatu

#celfjp カーネルとかアプリとは何だったのか

2014-10-24 13:17:39
koba @tetsu_koba

#celfjp uio/vfioを使っても速い理由。コアを占有してポーリングしているから。

2014-10-24 13:21:18
koba @tetsu_koba

#celfjp 速さの秘密はポーリング!割り込み駆動なし。コンテキストスイッチなし。キャッシュに載りやすい。アプリの実装もこれを意識する必要あり。

2014-10-24 13:22:41
nekomatu @nekomatu

DPDK, 割込み使わない。ポーリングをいかに上手にやるかに根を詰めたフレームワーク #celfjp

2014-10-24 13:22:51
koba @tetsu_koba

#celfjp Run to completion モデル。1スレッドで受信から送信まで行う。

2014-10-24 13:23:59
koba @tetsu_koba

#celfjp Pipelineモデル。ひとつの受信専用スレッド。複数の転送専用スレッド。ひとつの送信専用スレッド。その間をロックレスなキューでつなぐ。各スレッドはそれぞれひとつのコアを占有。

2014-10-24 13:25:57
nekomatu @nekomatu

Pipelineモデルに使うロックレスなキュー #celfjp

2014-10-24 13:29:22
koba @tetsu_koba

#celfjp dpdkのロックレスキュー。各スレッドがコアを占有していることが前提になっている。

2014-10-24 13:31:14
nekomatu @nekomatu

仮想スイッチ以外のアプリケーションってなんだろな? #celfjp

2014-10-24 13:34:01
koba @tetsu_koba

#celfjp SSE命令を使って独自memcpyを高速化。

2014-10-24 13:37:49
koba @tetsu_koba

#celfjp 256バイト未満のコピーは標準memcpyより劇的に速い。

2014-10-24 13:38:56
nekomatu @nekomatu

/dev/nullらいくなPMDを作りました。 なるほど、ベンチマーク取るのに役立ちそうだ #celfjp

2014-10-24 13:40:58
nekomatu @nekomatu

この作ったNull PMDを使って限界性能を簡易測定しました。 なるほど。 #celfjp

2014-10-24 13:43:17
nekomatu @nekomatu

これは自分が思ったことね。妄想です #celfjp

2014-10-24 13:46:00
nekomatu @nekomatu

vertio-net チョットモワカリマセン #celfjp

2014-10-24 13:51:36
nekomatu @nekomatu

virtio-netとか挟むのもったなくね? vhost-netの登場です。 #celfjp

2014-10-24 13:53:19
koba @tetsu_koba

#celfjp virtio-net: 実在のデバイスをシミュレートするのではなく、仮想環境用のネットワークデバイス。

2014-10-24 13:53:21
koba @tetsu_koba

#celfjp なんかいろいろ使えそうなテクニックがあるなあ。

2014-10-24 13:59:47
koba @tetsu_koba

#celfjp メモリチャネルを意識したバッファ構成: paddingを入れてわざとずらして隣り合うパケットが同じメモリチャネルから始まらないようにしている。

2014-10-24 14:12:12
koba @tetsu_koba

#celfjp openhub: OSSコミュニティの活発度を見ることができる。 openhub.net 死んでいるプロジェクトをつかまないためにここをチェック。

2014-10-24 14:15:07