« Update: RedHat 4.0 includes NFS v4 | Main | Apple may be parting ways with IBM »

June 04, 2005

Java, still second class at highend

Just spotted a google ad for Pathscale infiniband products on my site and went for a look. They sell Linux Infiniband kits with software. But, the software only works with C++, no Java APIs. I see the same thing with SAF which makes standards based high availability APIs but C/C++ are the only bindings although I've seen some companies with Java apis such as GoAhead.

I think Java still has issues in this space, especially the Infiniband space and that is basically there is no efficient way to move Java objects on to that kind of data pipe. We're doing some work right now that involves copying objects and serializing objects provided by an application. The only non invasive way to copy objects is to serialize/inflate them. If the Objects dont implement externalizable etc then you have got to see the overhead here. Our tests show about 70% of CPU is spent doing this. Of course, we react by providing various hooks to allow applications to provide efficient ways of doing these things but thats invasive.

With the PathScale stuff claiming < 2uS response times, Java is embarissingly slow as it's serialization problem basically means it can't really take advantage of transports like this because the speed doesn't really matter given Java takes so long to prepare the message.

I guess until the JVMs support a clean way for transporting a Java object from one address space to another using Infiniband or UDAPL etc then optimizing an application for these transports will remain invasive and I guess, thats life. It's not so hard. I just wish I didn't have to do it.

June 4, 2005 | Permalink

Comments

Serialization properly implemented is quite quick. The problem that I think you are refering to is one of granularity. Java object tend to be quite smallish. Certianly much smaller than the amount of data you can squish into a network packet.

Bulking up the number objects (hence the amount of data) being transfered and properly implementing serialization or externalizable will go a long way in helping better utilize your network.

Posted by: Kirk | Jun 5, 2005 1:32:13 PM

The latest post on TSS about Terracotta would seem to address this concern. Their product clusters objects at the field change level.

Posted by: Floyd Marinescu | Jun 6, 2005 10:18:10 AM

I see what they have done but it's still low performance when compared to what should be possible with the likes of UDAPL, RDMA and such technologies. They seem to avoid serialization using dirty attribute detection with aspects and then just send what changes but everybody does that trick now.

Posted by: Billy | Jun 6, 2005 9:12:45 PM

Post a comment