[Ultramonkey-l7-develop 15] Re: UltraMonkey-L7のこれからの開発について

Back to archive index

Hideaki Kondo kondo****@oss*****
2007年 5月 28日 (月) 15:35:14 JST


中居様、佐々木様

お世話になっております。
近藤と申します。

UM-L7の今後の開発に関する情報提供と
epoll化に関するコメント有難うございます。
私も少しコメントさせていただきます。

> エッジトリガ・イベントトリガともに、epoll_wait()のevents配
> 列へ、先頭から順に発生したイベントのみを設定してくれるため、差
> 異はなく、イベントトリガであっても全FDの走査は不要だと思います。
・・・
・・・
> 前述のイベント有無調査と再recv()処理で、どちらが優位か分か
> らないのですが、エッジトリガを採用するならば、この辺も考慮さ
> れて設計された方が良いと思います。

佐々木さんから頂いたコメントの中で
気になる点は、この部分ですね。

epoll()のエッジトリガ(ET)とselect()との
性能差は中居さんの検証により優位性は
ほぼ確認できた状況ですが、佐々木さんの
コメントを見ますと、同じepoll()でETとLT(
レベルトリガ)の性能差(コスト差)は微妙で
あまり差がない可能性がありますね。

epoll_wait()のevents配列に対して先頭から順に
発生したイベントのみを設定してくれるため、
エッジトリガと差異はなく、イベントトリガで
あっても全FDの走査は不要という点は、私は
少し認識違いしておりました。(もともとepoll化
のメリットはこの点が大きい思ってましたので、
LTの場合でもやはりこの点は同じなんですね。)

サンプルプログラム等で可能ならば、ETとLTで
性能差を比較してみたいところです。
机上から考えると、扱うデータサイズによって
ETとLTの優位差が変わってきそうですね。
扱うデータサイズが大きい(受信を複数回繰り返す)
ケースでは、イベント再登録が不要なLTの方が優位で、
逆に一度で受信できてしまうようなデータサイズが
多いケースでは、ETの方が優位という感じですかね。

> epollをサポートすることは大賛成なのですが、「epollへの変更」
> ということは、selectは無くしてしまうのでしょうか?
> 
> 今後もLinuxしかサポートしないというならば、それで良いと思いま
> すが、他OSへの移植なども考えにあるならば、selectも残しておい
> ても良い気がします。

この件も、確かに考慮したい点だと思いますが、
ETを利用する場合、変更は比較的大きいと思いますので
いきなり両方に対応するのは厳しいでしょうね。
まずはepoll化に専念し、今後他OSへの移植等必要に応じて
select対応は考えていくのが良いのではないかと思います。

以上です。
--
Hideaki Kondo




Ultramonkey-l7-develop メーリングリストの案内
Back to archive index