Hiroaki Nakano
nakan****@nttco*****
2014年 2月 3日 (月) 15:51:51 JST
中野@幕張です。 (2014/01/24 5:43), TATEISHI Katsuyuki wrote: > タテイシです。 > > 2014/1/22 Hiroaki Nakano <nakan****@nttco***** > <mailto:nakan****@nttco*****>> > > virtual service自体はGLibの双方向リンクリスト > で管理されてるので、配列とかと違って最大値を > 事前に設定せずともメモリのある限りアイテムは増やせるはず。 > epollのmax eventとかに関連があるんでしょうか? > > > ちょっと横道にそれるんですが・・・半ばひとりごとです。 > > v2はオープンできるファイルディスクリプタがmax_eventsで制限され > ててチューニングに苦労した方も多いかと思います。 > この変数によってv2が同時にオープンできるファイルディスクリプタ > 数が制限される、と言われていますが、この制限って必要なんですかね? > > この値、iomuxの中でepoll_createとepoll_waitの引数に使われてますが、 > epoll_createでは現在使われませんし、epoll_waitに渡す方はあくまで > epoll_waitから同時にどれだけのファイルディスクリプタを取り出すか、 > (カーネルに渡すepoll_eventのサイズ)を指定しているだけであってアプ > リケーション全体のファイルディスクリプタ数がこれで制限されてしま > うのはおかしい気がしています。 > # epoll_eventのサイズとEPOLL_CTL_ADDできるFDの数は関係ないですよね > > 本来であればepoll_waitでカーネルと一度にやりとりするイベント数 > (max_events)とアプリがオープン可能なファイルディスクリプタ数は > 個別に管理されていていいと思うのですが・・・ > > # iomux.cのレイヤの都合でそうなってるのですかね。 これは調べきれてないのでおいらも疑問のままです。。。 # たぶん、立石さんの言うとおり関係ない感じ。関係あるのって # /proc/sys/fs/epoll/max_user_watches くらいですよね。 まったく話は変わるんですが、v2をIPとportのソケット生成時に 子プロセス化させるとすると、同じIPとportでprotocol module だけ違うサービスを後から追加するときに困ることに気が付きました。 v3でもそうですけど、UltraMonkeyL7のバーチャルサービスって、 IPとport以外に、プロトコルモジュールの違いでも別サービスとして 作ることが可能でしたよね。 後から同一IP:portでprotocol moduleだけ違うサービスを追加した場合、 新たに子プロセスを作るのではなく、既存の同一IP:portの子プロセスに サービスリストを追加してやらなくてはならない・・・ →コマンドを受け付ける親プロセスから、たくさんの子プロセス達へ プロセス間通信で情報送ってあげなきゃいけない。 →一番簡単なのはパイプかな。 →パイプだとファイルディスクリプタ数の上限の制限受けるな と連想して、このメール思い出しましたw パイプ以外に方法あるかなぁ。共有メモリでデータ共有して、 シグナルかメッセージで通知する? そもそもプロセス間通信しなくてすむ方法がある?(←たぶん無い) どの方式が一番いいかなぁ。 > -- > TATEISHI Katsuyuki <kt****@wheel***** <mailto:kt****@wheel*****>> -- 中野 宏朗 (NAKANO Hiroaki)