New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Werner Schuster on Apr 16, 2009
The Garbage Collector in Ruby 1.8 has received a lot of attention in the past year. The developers behind Ruby Enterprise Edition (REE), have hacked the GC to share memory across processes (details in InfoQ's interview with the creators). REE has become a popular way to deploy and run Rails applications, with 37Signals and many others using it.
Recently the GC in REE was improved with a few bug fixes that removed sporadic freezes.
Users of a standard Ruby 1.8.x can also soon get some improvements from the MBARI patches that fix many GC problems and related memory leaks, and are now sponsored by EngineYard.
Evan Weaver gives GC tuning tips and recommends some patches that allow to monitor the GC. The results of the presented tuning:
Now the GC runs only every 13 requests, at a slightly higher cost, for a per-request cost of 0.009 seconds. This translates to a general speedup of 34%. The frequency of GC calls corresponds quite directly to the change in RUBY_GC_MALLOC_LIMIT, but if we increase it much more the memory usage balloons.
Another way to get more performance is to look at other Ruby implementations, such as JRuby which profits from the maturity of GCs in modern JVMs. Other implementations are aiming to improve the state of the art as well. Rubinius is improving steadily, and MacRuby has recently made news with its experimental branch which showed performance improvements. The work on the experimental branch is progressing:
- The compiler is now able (AFAIK) to compile all the language specs, so I guess it's now roughly complete.[..]
- Thanks to everything above, IRB is now running!
More improvements:
- Tail-call elimination was introduced. This optimization transforms recursive calls into local loops, in order to prevent stack overflows. [..]
- The LLVM IR interpreter was investigated in order to interpret faster #eval expressions. The result of this investigation has been committed and works pretty well with simple expressions, however it is not activated by default yet because of limitations when it comes to call the VM primitives. We will have to modify the LLVM interpreter a little bit in order to fully use it from MacRuby. This will be done in the near future.
Finally, GemStone's Ruby implementation MagLev is now in a private Alpha test, with a Beta coming in Q2. Now, compatibility (RubySpec) and benchmarking results are available at the MagLev website. Updates of the projects are also available on Twitter.
Improve Java Garbage Collection, Runtime Execution, and JVM visibility with Zing
Why NoSQL? A primer on Managing the Transition from RDBMS to NoSQL
Monitor your Production Java App - includes JMX! Low Overhead - Free download
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
No comments
Watch Thread Reply