Wednesday, October 28, 2009

JGroups 2.8.0.CR3 released

Unfortunately, a little later than estimated, but better late than never ! The reason is that I got side tracked by EAP 5 performance testing and also by the good feedback from the community (you !) on CR2, and the associated bug reports.

This version contains bug fixes, and mostly work around IPv6 versus IPv4 addresses. We now try to be smart and attempt to find out the type of stack used, and then default undefined IP addresses to addresses of the correct type. Note that IPv6 support is not yet 100% done, I'm continuing to work on this for either CR4 or GA. More on this topic in a later post...

CR3 also added a new feature, which is marshaller pools in the transport. When we send messages, they're either bundled and sent as a batch of messages, or not. In either case, the marshalling of a message or message list is done in an output buffer for which we have to acquire a lock. When we have heavy message sending, e.g. through multiple sender threads, that lock is heavily contended.

Not to say this is a big issue because the sender side is almost never the culprit in slow performance (the receiver side is !), but I've introduced a marshaller pool, which provides N output streams (default=2) rather than 1. The property marshaller_pool_size defines how many output streams we want in the pool and marshaller_pool_initial_size the initial size of each output stream (in bytes).

Note that, for UDP, each output stream can grow up to 63535 bytes, so take that into account when allocating a large number of streams.

In my perf tests, I haven't found that increasing the pool size makes a difference to performance, but if you use many threads which send messages concurrently, this does make a difference.

2.8.0.CR3 can be downloaded from http://sourceforge.net/projects/javagroups/files/JGroups/2.8.0.CR3.
Enjoy !

2 comments:

  1. Hi Bela - I am working on a project using 2.8.0.CR3 - can you give us ballpark dates for CR4 and GA release ?
    thanks,
    -Seamus

    ReplyDelete
  2. CR4 is out, and I released CR5 today [1]. Those are meant to be snapshot releases for Manik's Infinispan tests, that's why I released them only on maven.

    There are 6 issues left in JIRA, so it shouldn't take that long. However, I want to test this release thoroughly, especially the IPv6 code needs to be tested on different platforms and that takes time...
    JGroups 2.8.0.GA will be part of Infinispan 4.0.0.GA, so there's another deadline, and I'm working with Manik to coordinate this.

    So while 2.8.0.GA will be released when it's ready, it will definitely be before the end of this year, even if I have to push out a 2.8.1 soon afterwards...

    [1] http://repository.jboss.org/maven2/jgroups/jgroups/2.8.0.CR5

    ReplyDelete