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

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

浅田さん:FreeBSDでのChecksum Offloading: ・ifconfig -m ix0 | grep capabilities →どんな種類に対応しているかを確認できる ・ifconfig で設定可能 →デフォルトで有効にされるかも #FreeBSDStudy

2013-04-22 20:08:33
Yoshikazu GOTO @goto_ipv6

浅田さん:どれくらい性能に影響するのか?: ・有効:7.99Gbits ・向こう6.66Gbits #FreeBSDStudy

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

浅田さん:Large Segment Offload(TCP Segmentation Offload): ・パケット送信時の分割処理をNICへオフロード(MTUサイズで分割) ・OSはパケット分割処理分、軽く #FreeBSDStudy

2013-04-22 20:10:10
目黒の明治 @meijik

子守の後、一時間遅れで参加。スタートは30分遅れたらしい。。。 #freebsdstudy

2013-04-22 20:11:30
Yoshikazu GOTO @goto_ipv6

浅田さん:Large Segment Offloadはどれくらい性能に影響するのか?: ・今回の実験では、無効にしたほうが速かった… #FreeBSDStudy

2013-04-22 20:11:31
Yoshikazu GOTO @goto_ipv6

浅田さん:Large Receive Offload: ・LSOの逆 ・受信パケットをNIC上で結合 →TCPなら、1つの大きなパケットとしてOSへ渡す ・プロトコルスタックの呼び出し回数を減らすことができる #FreeBSDStudy

2013-04-22 20:12:32
Yoshikazu GOTO @goto_ipv6

浅田さん:LROはどれくらい性能に影響するのか?: ・ちょっと速くなった #FreeBSDStudy

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

浅田さん:LSO・LROのSW実装: ・Linuxではこれらをソフトウェアで実装している ・S/Wで実装したとしても、結果的にプロトコルスタックの呼び出し回数が減るなら、効果はある ・FreeBSDではH/Wのみ #FreeBSDStudy

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

浅田さん:3.データ移動に伴うオーバーヘッド #FreeBSDStudy

2013-04-22 20:14:17
Yoshikazu GOTO @goto_ipv6

浅田さん: ・違う観点からIntelが研究した話 #FreeBSDStudy

2013-04-22 20:14:48
Yoshikazu GOTO @goto_ipv6

浅田さん:TOEがNW I/Oパフォーマンスの解決策か?: ・使い方によっては、TOEが効いてくるが、効かない場合もあるね、と →Intelが論文を →パケットが大きくて、ストレージのI/Oをやっている場合は良いが、小さいパケットだとあまり効かない #FreeBSDStudy

2013-04-22 20:16:06
Yoshikazu GOTO @goto_ipv6

(なんかもう、二周目くらいの話なんだよね、この辺り) #FreeBSDStudy

2013-04-22 20:16:48
Yoshikazu GOTO @goto_ipv6

浅田さん:どの処理が重いのか: ・プロトコル処理よりもむしろNIC・メモリ・CPUキャッシュが? #FreeBSDStudy

2013-04-22 20:17:32
Yoshikazu GOTO @goto_ipv6

浅田さん:Intel QuickData Technology: ・NICのバッファ→アプリケーションのバッファへDMA転送 →APIを変えない今の実装だと、ユーザーランドへのコピーが発生。データーが大きいと重い ・チップセットに実装 #FreeBSDStudy

2013-04-22 20:19:15
Yoshikazu GOTO @goto_ipv6

浅田さん:Intel Data Direct I/O Technology: ・従来、NICはメモリにパケットを書き込み、CPUはメモリからキャッシュにパケットを読み込んでからアクセスしていた ・DDIOでは、NICからCPUのキャッシュへDMA #FreeBSDStudy

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

浅田さん: →最近のものなので、Xeonのハイエンド用みたいになっているので、最新のXeonと 10G NICでサポート #FreeBSDStudy

2013-04-22 20:21:13
Yoshikazu GOTO @goto_ipv6

浅田さん:4.プロトコル処理の並列化 #FreeBSDStudy

2013-04-22 20:21:26
Yoshikazu GOTO @goto_ipv6

浅田さん:旧型のプロトコルスタックではマルチスレッドで処理できない: ・システムに1つしかないキュー ・並列化されていないソフトウェア割り込み #FreeBSDStudy

2013-04-22 20:21:57
Yoshikazu GOTO @goto_ipv6

浅田さん:FreeBSD Network Stackのマルチスレッド対応: ・マルチスレッド化されたランキューに積んでスケジュール ・Direct Dispatch ・これらの組み合わせ #FreeBSDStudy

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

浅田さん: ・net.isr.dispatch=deferred net.isr.maxthreads(最大値。スレッドごとに受信キューを持つ) net.isr.bindthreads(CPUに受信キューを固定) #FreeBSDStudy

2013-04-22 20:24:58
Yoshikazu GOTO @goto_ipv6

浅田さん:送り先スレッドの選択方法は?: ・プロトコル毎にポリシー →(NETISR_POLICY_*)とハンドラ関数で設定されている #FreeBSDStudy

2013-04-22 20:25:51
Yoshikazu GOTO @goto_ipv6

浅田さん:Direct Dispatch: ・net.isr.dispatch=direct ・常に割り込みコンテキストでプロトコル処理を実施 →ずっと負荷が高くてNIC上にパケットが残り続ける場合に他のプロセスが動けなくなるので、そのあたりのケアも #FreeBSDStudy

2013-04-22 20:27:11
Yoshikazu GOTO @goto_ipv6

浅田さん:ハイブリッド: ・net.isr.dispatch=hybrid: #FreeBSDStudy

2013-04-22 20:27:31
Yoshikazu GOTO @goto_ipv6

浅田さん:それでも1つのNICからのパケットは1つのCPUで処理される: ・1つのNICは1つの割り込みしか持たない ・受信処理の途中でパケットを複数のコアに割り振る仕組みがない →NICが複数でCPUも複数コアなら良いが… #FreeBSDStudy

2013-04-22 20:28:39
前へ 1 ・・ 3 4 6 次へ