On 1/4/07, Zed A. Shaw <[EMAIL PROTECTED]> wrote: > On Thu, 4 Jan 2007 00:55:41 -0800 > "Joe Van Dyk" <[EMAIL PROTECTED]> wrote: > > > Hi, > > > > A quick search didn't explain what fastthread is, and how it relates > > to mongrel. Why would I want to install fastthread? > > Hi Joe, long answer is that ruby has a bug in how the array works and how > threads are garbage collected. When the current Ruby thread locking > primitives operate on threads, they tend to store idle ones in arrays. As > the existing thread locking mechanisms pull the threads off the array they > never get garbage collected and that causes a nasty leak. > > At the time I was testing this, me and Bradley Taylor narrowed the problem > down and produced these two scripts: > > http://pastie.caboo.se/10194 > http://pastie.caboo.se/10317 > > The first one shows the leak by using Mutex (with graph), the second showed > proper GC operation by using Sync (with graph). Still wasn't enough because > several high profile idiots on ruby-lang tried to claim the test was invalid > but couldn't offer a reason why the first script leaked and the second didn't. > > Later, after much arguing, calling me an idiot, debating the merits of OS > memory allocation, and other stupidities, we find out that Eric Mahurin fixed > the whole problem a year ago and it was missed: > > http://blade.nagaokgaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/5861 > > Thankfully, there's smart cool people like mentalguy who can make > improvements and provide them as gems. What mentalguy did is re-create all > of the Ruby thread locking gear in a C extension called fastthread. With > fastthread we can provide a modest speed boost as well as fix the memory > leaks Ruby has by just including a gem. He's pushing for it to become the > new thread locking api in Ruby, so hopefully he can get it in without much > fuss. > > I'm telling people that you have to use fastthread, but it's still external > so if you run into problems or don't see an improvements then you don't have > to run it. Mongrel has fastthread as a gem dependency, but it will run it > only if it's installed. So, you can install it, try it out, and then remove > the gem if it's a problem. > > And that's the whole story. Enjoy!
Thanks for the explanation! Joe _______________________________________________ Mongrel-users mailing list Mongrel-users@rubyforge.org http://rubyforge.org/mailman/listinfo/mongrel-users