From: Satoshi Shiba Date: 2010-03-29T01:32:49+09:00 Subject: [ruby-dev:40811] Re: Improvement of Fiber switching cost with system dependent way こんにちは,笹田研 修士1年の芝と申します. Fiberのパッチの中の人です. U.Nakamura wrote: > こんにちは、なかむら(う)です。 > > In message "[ruby-dev:40805] Improvement of Fiber switching cost with system dependent way" > on Mar.28,2010 21:52:23, wrote: > >> メリット: >>  Fiber のコンテキストスイッチが速くなる(どれくらいかは資料を参照) >> >> デメリット・変更点: >>  最大生成数が減ります >>  マシンスタックのサイズが制限されています >>  Fiber 生成コストがちょっと増えます >> (どれくらいかは資料を参照) >>  ソースコード (cont.c) が結構見づらくなる >> > > 1.9.2に対する決定権は持っていないので、そもそもrubyに入れるべ > きかどうか、という話になりますが、資料によると、32bit環境下で > は生成可能なFiber数が劇的に減ることになるように見えます。 > 1.9になってThreadの最大生成可能数も減っちゃったのに、その代わ > りっぽいことが期待されているような気がするFiberまであんまり作 > れなくなっちゃったら悲しいんじゃないでしょうか? > Fiberの最大生成可能数が減るといっても2万以上のFiberは生成できています. カタログスペックは落ちてしまいますが,実用上は問題無いのではないでしょうか. 何かをシミュレートするにあたって,シミュレート対象1つにつき1Fiber割り当 てる場合には Fiberが2万では足りなくなるかもしれませんが. > もっとも、64bit環境だと問題にならなさそうですし、Fiberを山ほ > ど作りたい奴は64bit使うだろフツー、という気もするので、まあ微 > 妙ですが。 > > というわけで、この観点から消極的反対です。 > 64bi環境にだけ入れるとかいうことは可能かしら? > > > また、資料を見る限り、 > * Windowsではコンテキストスイッチの速度が3〜6倍弱 > * WindowsではFiber生成・終了速度が0.6倍 > * WindowsではFiber生成可能数が1/4弱 > であると読み取れるのですが、メリットとデメリットを比べると... > Solarisでも同じような(というかもっと極端な)傾向が見えますね。 > > 他の環境だと、 > * コンテキストスイッチ速度が劇的に向上 > * Fiber生成・終了速度は生成本数が10本を越えないと悪くならない > * Fiber生成可能数はやっぱり相当減る > ということで、メリットが勝るという判断もできそうですが。 > > ということは、とりあえず不利な環境は除外とかいうのもありえま > すかね? > > > それでは。 > 速度に関してはどの環境でもメリットが勝っているのではないでしょうか. Fiberの場合,生成・終了の回数よりもコンテキストスイッチの回数の方が一般 に多いでしょうし. 各環境でメリットが勝るかどうかは最大生成数が2万程度で足りるのかどうかに よると思います.