Phusion white papers Phusion overview

Phusion Blog

Ruby Enterprise Edition second sponsorship campaign

By Hongli Lai on December 30th, 2008

What is Ruby Enterprise Edition?

Ruby Enterprise Edition (REE) is a server-oriented distribution of the official Ruby interpreter, and includes various additional enhancements. REE’s main benefits are the ability to reduce Ruby on Rails applications’ memory usage by 33% on average, the ability to increase applications’ performance and the inclusion of various analysis and debugging features. The lower memory usage and increased performance are possible because REE includes – among other enhancements – a copy-on-write friendly garbage collector, as well as an improved memory allocator. REE has been out for several months now and is already used by many high-profile websites and organizations, such as New York Times, Shopify and 37signals.

“We switched to enterprise ruby to get the full benefit of the [copy-on-write] memory characteristics and we can absolutely confirm the memory savings of 30% some others have reported. This is many thousand dollars of savings even at today’s hardware prices.”
Tobias Lütke (Shopify)

And just like Phusion Passenger, Ruby Enterprise Edition is 100% open source.

Announcing the second sponsorship campaign

The last REE sponsorship campaign was a huge success. Thanks to the last campaign REE has gained 64-bit OS support, MacOS X support and Solaris support. It has incorporated the RailsBench GC enhancements, which allows one to further improve server performance by tweaking the garbage collector settings.

We hereby announce a second sponsorship campaign. Unlike the last campaign, this one is public and everyone can participate.
This campaign will cover the following work:

  • Tcmalloc support for 64-bit operating systems.
    
REE’s copy-on-write optimizations work on 64-bit operating systems. But the improved memory allocator that REE includes, tcmalloc, is disabled on 64-bit platforms for various reasons. It would be more efficient if tcmalloc is enabled on 64-bit platforms because it would allow one to save more memory and to gain more performance. We’ll perform the necessary work to properly integrate tcmalloc in 64-bit operating systems.
  • Porting and incorporating the RubyProf GC patches.
    
These patches add the ability to measure the number of objects in Ruby and to measure the amount of allocated memory, which is very useful in various debugging scenarios. RubyProf automatically uses this functionality for GC profiling if the Ruby interpreter is properly patched. The existing patches aren’t fully compatible with REE at this moment. We can port these patches and make sure that it works properly with the existing REE patches.

  • Better documentation.

    A lot of cool new features, e.g. caller_for_all_threads and the RailsBench patches, have been added to REE lately. But at this time, these features aren’t very well documented, and the existing documentation is scattered all over the Internet. We can write a unified manual which teaches developers how to effectively use these new REE features to debug applications.

The goal of this campaign is 2000 USD. Once the campaign goal has been reached, we’ll release the work as soon as it has been finished. Highlights:

  • All sponsors will be given credit on the related REE release announcement on our blog. If the sponsor is an organization then we’ll link to the website, if available.
  • The money that we receive through this campaign shall be treated like donations.
  • An invoice is available if both of the following conditions apply:
    1. You are an organization based in the European Union.
    2. You’ve sent 200 USD or more.
  • If we receive more money than 2000 USD, then the surplus will be used for the next REE sponsorship campaign.

To sponsor this campaign, please click on the following button:
Click here to lend your support to: Ruby Enterprise Edition second sponsorship campaign and make a donation at www.pledgie.com !

Thank you, and we wish you a happy 2009!

  • Gulp a day later and your already over $600 over the goal. Next time set the goal a little higher maybe? Particularly impressive with it being the holiday season.

  • Eliot

    How about Brent Roman’s MBARI patches for 1.8.7? Next time?

    Thanks.

  • leon

    +1 for Eliot

  • Wow, that was quick. Thanks everyone. 🙂

    64-bit tcmalloc support and RubyProf support have been pushed to Github. We’re currently working on the documentation.

    @Eliot: Brent’s patches are under investigation. We’ve skipped them for this release because they require 1.8.7.

  • +1 for Eliot, though I see they’re still under investigation slightly 🙂

  • Michael King

    +1 on adding Brent’s MBARI patches

    I have actually started working on backporting Brent’s MBARI patches to Ruby 1.8.6. I am seeing 1 failure and 1 error in the standard Ruby test suite. I think I have isolated the patch causing the failure to patch #4 and I might have eliminated the error. Problem is that I am stretching my understanding of the GC and I don’t quite see where the failure is coming from.