[infinispan-dev] Kyro performance (Was: reusing infinispan's marshalling)

Bela Ban bban at redhat.com
Sun Feb 2 05:42:40 EST 2014


I recently had a very bad experience with Kryo. A JGroups user used Kryo 
to marshal data types into byte buffers which he then broadcast around 
using JGroups (details in [1]).

Turns out the culprit was Kryo temporarily flipping bits in an already 
marshalled buffer passed to JGroups. Of course retransmission would then 
cause a corrupted buffer to be sent.

The solution was to copy the buffer which forfeits the advantages of 
using Kryo. Not being an expert on Kryo, perhaps this could be done 
differently, e.g. by synchronizing around a buffer...

[1] https://issues.jboss.org/browse/JGRP-1718

On 31/01/14 17:59, Sanne Grinovero wrote:
> Changing the subject, as Adrian will need a reply to his (more
> important) question.
>
> I don't think we should go shopping for different marshaller
> implementations, especially given other priorities.
>
> I've been keeping an eye on Kryo since a while and it looks very good
> indeed, but JBMarshaller is serving us pretty well and I'm loving its
> reliability.
>
> If we need more speed in this area, I'd rather see us perform some
> very accurate benchmark development and try to understand why Kyro is
> faster than JBM (if it really is), and potentially improve JBM.
> For example as I've already suggested, it's using an internal
> identityMap to detect graphs, and often we might not need that, or
> also it would be nice to refactor it to write to an existing byte
> stream rather than having it allocate internal buffers, and finally we
> might want a "stateless edition" so to get rid of need for pooling of
> JBMar instances.
>
>   -- Sanne
>
>
>
> On 31 January 2014 16:29, Vladimir Blagojevic <vblagoje at redhat.com> wrote:
>> Not 100% related to what you are asking about but have a look at this
>> post and the discussion that "erupted":
>>
>> http://gridgain.blogspot.ca/2012/12/java-serialization-good-fast-and-faster.html
>>
>> Vladimir
>> On 1/30/2014, 7:13 AM, Adrian Nistor wrote:
>>> Hi list!
>>>
>>> I've been pondering about re-using the marshalling machinery of
>>> Infinispan in another project, specifically in ProtoStream, where I'm
>>> planning to add it as a test scoped dependency so I can create a
>>> benchmark  to compare marshalling performace. I'm basically interested
>>> in comparing ProtoStream and Infinispan's JBoss Marshalling based
>>> mechanism. Comparing against plain JBMAR, without using the
>>> ExternalizerTable and Externalizers introduced by Infinispan is not
>>> going to get me accurate results.
>>>
>>> But how? I see the marshaling is spread across infinispan-commons and
>>> infinispan-core modules.
>>>
>>> Thanks!
>>> Adrian
>>> _______________________________________________
>>> infinispan-dev mailing list
>>> infinispan-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>>
>> _______________________________________________
>> infinispan-dev mailing list
>> infinispan-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/infinispan-dev
> _______________________________________________
> infinispan-dev mailing list
> infinispan-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/infinispan-dev
>

-- 
Bela Ban, JGroups lead (http://www.jgroups.org)


More information about the infinispan-dev mailing list