第17回 FreeBSD勉強会 マルチコアとネットワークスタックの高速化技法

http://atnd.org/events/37993 2013-04-22 19:00-21:00 KDDIウェブコミュニケーションズ会議室 http://www.slideshare.net/syuu1228/ss-19602947
5
前へ 1 2 3 ・・ 6 次へ
Yoshikazu GOTO @goto_ipv6

浅田さん:Interrupt Coalescing: ・ハードウェアでの対応 →パケット数個に一回割り込む →あるいは一定期間待ってから割り込む ・デメリット:処理までの時間が多くなるので、レイテンシに影響。 #FreeBSDStudy

2013-04-22 19:45:29
Yoshikazu GOTO @goto_ipv6

浅田さん:Interrupt Moderation on ixgbe(4): ・hw.ixgbe.enable_aim →流量に応じ、動的に割り込む頻度を調整 ・hw.ixgbe.max_interrupt_rate →割り込み頻度を指定 #FreeBSDStudy

2013-04-22 19:46:30
Yoshikazu GOTO @goto_ipv6

浅田さん: →→資料がない、調べていない、そもそもあまりドキュメントがない(Linuxにはあるみたい) #FreeBSDStudy

2013-04-22 19:46:54
Yoshikazu GOTO @goto_ipv6

浅田さん: ・hw.intr_storm_threashold →割り込みが多すぎると警告が出る →→値を上げないと警告が… #FreeBSDStudy

2013-04-22 19:47:32
Yoshikazu GOTO @goto_ipv6

浅田さん:Interrupt Moderationを切ってみる: ・Linux, ixgbeで実験 ・24000-31000 Interrupts/sec for 1 CPU #FreeBSDStudy

2013-04-22 19:48:44
Yoshikazu GOTO @goto_ipv6

浅田さん:どれくらいの頻度に設定されているのか: ・10GbEだと頻度が低すぎてもバッファ溢れやレイテンシ増大の原因に ・Linuxのe1000やixgbeでは 8000 Interrupt/sec →最新版だと動的に調整できる #FreeBSDStudy

2013-04-22 19:50:01
Yoshikazu GOTO @goto_ipv6

浅田さん:Polling: ・ソフトウェアでの対応 ・NICのの割り込みを無効化 ・タイマーを使って定期的にNICのレジスタをポーリング →パケットがあったら受信処理 ・デメリット →タイマー秋気分のレイテンシが発生 #FreeBSDStudy

2013-04-22 19:51:26
Yoshikazu GOTO @goto_ipv6

浅田さん: →タイマー割り込み感覚を上げるとオーバーヘッドが大きくなる #FreeBSDStudy

2013-04-22 19:51:28
Yoshikazu GOTO @goto_ipv6

浅田さん: →CPUが弱ければ嬉しいが… →周期は HZっていうパラメータで設定できる #FreeBSDStudy

2013-04-22 19:52:08
Yoshikazu GOTO @goto_ipv6

浅田さん:polling(4): ・options DEVICE_POLLING →options HZ=1000(普通は100) #FreeBSDStudy

2013-04-22 19:53:20
鯉江 @koie

HZはけっこうまえから1000になってたとおもう。 #FreeBSDStudy

2013-04-22 19:53:38
Yoshikazu GOTO @goto_ipv6

浅田さん: ・sysctl kern.polling.enable=1  sysctl kern.polling.user_frac=50 →どれくらい積極的に処理をするか(パケットが残っていてもユーザープロセス処理に戻す) #FreeBSDStudy

2013-04-22 19:53:51
Yoshikazu GOTO @goto_ipv6

浅田さん: ・後述のマルチキューNICに非対応 →HZ=1000程度では10GbEには不足 →新しいサーバーには不向き #FreeBSDStudy

2013-04-22 19:54:23
Yoshikazu GOTO @goto_ipv6

浅田さん:ハイブリッド方式: ・ソフトウェアでの対応 ・通信量が多く連続してパケット処理を行なっている時のみ割り込みを無効化(NICのリングバッファに残っている間)、ポーリングで動作 #FreeBSDStudy

2013-04-22 19:55:44
Yoshikazu GOTO @goto_ipv6

浅田さん:netisr direct dispatch: ・LinuxのNAPIと同様 ・割り込みコンテキストから直接プロトコル処理を実行 #FreeBSDStudy

2013-04-22 19:56:14
Yoshikazu GOTO @goto_ipv6

浅田さん:Low Latency interrupt: ・ハードウェアでの対応 ・Interrupt Coalescingを行った結果レイテンシが増大 ・フィルターを指定できる →5 Tuplesで、そのパケットだったら、即割り込み #FreeBSDStudy

2013-04-22 19:57:29
Yoshikazu GOTO @goto_ipv6

浅田さん:2.オフローディング #FreeBSDStudy

2013-04-22 19:57:45
Yoshikazu GOTO @goto_ipv6

浅田さん:プロトコル処理が重い: #FreeBSDStudy

2013-04-22 19:57:57
Yoshikazu GOTO @goto_ipv6

浅田さん: ・特に、小さなパケットが大量に届く場合に、プロトコル処理でCPU時間を大量に使ってしまう #FreeBSDStudy

2013-04-22 19:59:11
Yoshikazu GOTO @goto_ipv6

(スクリーンとの間に、人が座ってしまったので、品質が下がります) #FreeBSDStudy

2013-04-22 19:59:34
Yoshikazu GOTO @goto_ipv6

浅田さん:TOE(TCP Offload Engine): ・NIC上のTCP/IPスタックプロトコル処理をフルオフロード ・デメリット →このスタックでバグがあったら? →OSと連携しなければならないので複雑 #FreeBSDStudy

2013-04-22 20:00:54
Yoshikazu GOTO @goto_ipv6

浅田さん: →メーカーによって、TOEの実装が違うと、NICのドライバーと、OSのNWスタックの作りこみが、結構なことになる(Linuxはやらないとか) →パケットフィルタは? #FreeBSDStudy

2013-04-22 20:01:42
Yoshikazu GOTO @goto_ipv6

浅田さん:toecore: ・FreeBSDにはサポートが入っている →Chelsio 10GbEのみサポート ・options TCP_OFFLOAD ・ifconfig cxgbe toe ・カーネルは、mbufとアプリの間のデータコピーのみ #FreeBSDStudy

2013-04-22 20:03:09
Yoshikazu GOTO @goto_ipv6

浅田さん:TOEよりもさらに丸投げ: ・iWARP →NICによるゼロコピー(RDMA)のサポート →InfiniBandと同じI/Fでリモートノードへアクセス ・iSCSI・FCoE #FreeBSDStudy

2013-04-22 20:04:18
Yoshikazu GOTO @goto_ipv6

浅田さん:Checksum Offloading: ・IP/TCP/UDP checksumの計算をNICで行う ・フルオフローディングと異なりOSでの対応が容易 →受信:パケットをNICから持ってくる際に、すでにチェックサムの確認済み #FreeBSDStudy

2013-04-22 20:07:25
前へ 1 2 3 ・・ 6 次へ