中居憲久
n.nak****@sdy*****
2009年 8月 12日 (水) 14:56:36 JST
■Tuning 10Gb network cards on Linux 前回のメールでもあるように高速化するNetworkに今のCPUでは対応出来ない状況 にありますから、少しでも速度を出すにはどのようにするのかと言うのは重要な 部分です。 基本的にSE的な範疇はこちらの部分が多いかと思います。 具体的には 1) TOE[*1]にてハードウェアオフロード出来る部分はオフロードを行いCPU使用 率を少なくする ・checksumをNICにやらせるようにする ・DMAを使って分散されたメモリ領域コピーを行いAPIのコストを下げる ・(TCPやその他)segmantation checkをNICにやらせるようにする 2) 転送レートの調整 ・信頼性のあるネットワークではエラー訂正を省略して帯域を稼ぐ ・最適な輻輳制御アルゴリズムを用いる ・TCPパケットのウィンドウサイズを最適化する 3) TCPバッファを最適化する ・queueサイズの最適化 ・受信ソケットバッファサイズの最適化 のカテゴリごとにethtoolで設定するものやkernelパラメーターで設定する物が あります。 これらを一意に整理することは難しいので(例えばqueue関係だとNICからのDMAで の書き込みが関連するのでethtoolsでNICに対してダイレクトに設定する必要と kernelに対して設定する必要が生じるためsysfsの設定も絡む)、理解しづらいと は思いますが思想的には上の3つになります。 1)はMultiQueueと同じ思想でなるべく専用ハードウェアにやらせようと言う思想 であり2)は10Gbになって速度を達成する状況が厳しい環境だと速度を上げたり下 げたりする必要が出てくるためなるべく下げない、かつあがりやすい環境設定が どのような物かと言う解説になります。3)は1Gbでも出てきた話であり、バッ ファを10Gbでどのように設定するかという話ですね。 基本的にUltraMonkey-L7のコードに直接絡んでくる話はありませんが、速度検証 などを行うときにこれらの条件をちゃんと確認して、不意な速度低下を引き出さ ないようにノウハウをまとめておくことが大事かと思います。 直接具体的な値に関してはproceedingを参照してもらうこととして、「チューニ ングで考察する部分がうなぎ登りに多くなっている」と言うのは率直な感想で しょうか。 どんどん高度化するネットワークに関して、どんどん技術者に要求されるスキル は上がってきているなと思いました(苦笑 [*1]TOE TCP/IP Offload Engine デフォルトではOFFになっているので、ethtoolを使って設定を行う -- _____________________________________________ 中居 憲久[Norihisa NAKAI] n.nak****@sdy***** 株式会社SDY tel:047-401-7210/fax:047-401-7207