Rails+WebORBがものすごく遅い時
Ruby 1.8.6のビルド時に pthreadsが組み込まれていると、なぜか RailsでWebORBを動作させた時にものすごく遅い。
ldd /usr/bin/ruby してみて libpthread.soがリンクされていたらそういう状態。
Portageならば emergeするときに USE="threads" があるとそうなる。
vmstatを見たところ、pthreadがリンクされている場合は systemが特にCPU時間を使っている(userはあまり変わらない)ようだ。
Rubyでは、pthreadの有無で動作を分けている箇所は eval.c に集中しているみたいだが、ソースをチラ見したところで原因になりそうなところがどこかはわからなかった。
とにかく、Rubyの動作が遅くて systemにCPU時間が取られているようなら pthreadがリンクされていないバイナリへ取り替えることを試してみた方がいいかもしれない。
YARVなら(Giant Lockで排他的にしか実行されないとはいえ最初からネイティブスレッドを使っているため)こういう問題なさそうだなあ。はやく Ruby1.9で Railsが動くようになればいいな。(いまは動かないよね?)
ldd /usr/bin/ruby してみて libpthread.soがリンクされていたらそういう状態。
Portageならば emergeするときに USE="threads" があるとそうなる。
vmstatを見たところ、pthreadがリンクされている場合は systemが特にCPU時間を使っている(userはあまり変わらない)ようだ。
Rubyでは、pthreadの有無で動作を分けている箇所は eval.c に集中しているみたいだが、ソースをチラ見したところで原因になりそうなところがどこかはわからなかった。
とにかく、Rubyの動作が遅くて systemにCPU時間が取られているようなら pthreadがリンクされていないバイナリへ取り替えることを試してみた方がいいかもしれない。
YARVなら(Giant Lockで排他的にしか実行されないとはいえ最初からネイティブスレッドを使っているため)こういう問題なさそうだなあ。はやく Ruby1.9で Railsが動くようになればいいな。(いまは動かないよね?)

1 件のコメント:
これと関係あるのかしらんけど、
1.8.6でcapistranoを使おうとすると
fastthreadをインストールしろ、と言われるね。
コメントを投稿
<< ホーム