[infinispan-dev] CHM or CHMv8?

David M. Lloyd david.lloyd at redhat.com
Thu Apr 18 22:39:34 EDT 2013


On 04/18/2013 09:35 PM, Manik Surtani wrote:
> Guys,
>
> Based on some recent micro benchmarks I've been doing, I've seen:
>
> MapStressTest configuration: capacity 100000, test running time 60 seconds
> Testing mixed read/write performance with capacity 100,000, keys 300,000, concurrency level 32, threads 12, read:write ratio 0:1
> Container CHM           Ops/s 21,165,771.67  Gets/s       0.00  Puts/s 21,165,771.67  HitRatio     100.00  Size    262,682  stdDev 77,540.73
> Container CHMV8         Ops/s 33,513,807.09  Gets/s       0.00  Puts/s 33,513,807.09  HitRatio     100.00  Size    262,682  stdDev 77,540.73
>
> So under high concurrency (12 threads, on my workstation with 12 hardware threads - so all threads are always working), we see that Infinispan's CHMv8 implementation is 50% faster than JDK6's CHM implementation when doing puts.
>
> We use a fair number of CHMs all over Infinispan's codebase.  By default, these are all JDK-provided CHMs.  But we have the option to switch to our CHMv8 implementation by passing in -Dinfinispan.unsafe.allow_jdk8_chm=true.
>
> The question is, should this be the default?  Thoughts, opinions?

The JDK's concurrency code - especially CHM - changes all the time. 
You'd be very well-served, in my opinion, to go with something like 
CHMv8 just because you could be so much more sure that you'll have more 
consistent (and possibly better, but definitely more consistent) 
performance across all JVMs, instead of being at the mercy of whatever 
particular implementation happens to run on whatever JVM.


-- 
- DML


More information about the infinispan-dev mailing list