Friday, January 4, 2008

Drools on JRockit

So, I've obviously ignored my blog for way too long. I'm going to catch up on the project entries real-soon-now. But, in the meantime we've been trying out Drools on JRockit, and we have good results to report.

I compared the JRockit implementation of 1.5.0_12 with the Sun version. To start up Drools with a rather large set of derived facts (inserted in the consequence of various rules), JRockit was 1/3 faster out of the box with no tuning other than setting a large max heap size. I measured 10 successive start-up runs because JRockit's aggressive precompilation caused the first run to be significantly slower than subsequent ones. These tests were on a 32bit Windows box.

Also, large blocks do make a difference. JRockit allows for large block allocation on OSes that support it (I'm no expert on memory allocation, so be warned). On Linux (RHEL 4) with a 10 gig (yes, 10 gig!) heap, we improved Drools start-up by 20% by turning on -XXlargePages support.

We're going to continue to tune JRockit for our large heap. GC pauses are still really long (well over a minute), but we really only care about start-up speed. Responsiveness doesn't matter until we're ready to make tons of working memory queries. When we learn more, I'll report back.

We're a Weblogic shop, so there are no licensing issues involved for us to use JRockit, and we expect to embed Drools within a Weblogic instance anyway. As always, your mileage may vary.