ChronicleMap and memory efficiency vs CHM

40 views
Skip to first unread message

Kevin Burton

unread,
Apr 17, 2015, 8:29:51 PM4/17/15
to java-ch...@googlegroups.com

I'm considering porting ActiveMQ's memory store to ChronicleMap to get tighter in-memory representation and fewer GC pauses.

The main motivator is memory.  We're wasting a MASSIVE amount of memory hosting our queue.  I think it's along the order of 150GB of RAM right now but only for a few million objects.  

Chronicle is saying that , in their benchmarks, they're getting 18x memory savings.  

In my experience this is probably realistic.  In-memory data structures in Java can be horribly inefficient.  

(I attached their performance numbers below).

I think the performance tradeoff here is probably realistic.  While we have millions of messages our scheduling throughput is more like 1-2k per second vs the 30M per second below.  (of course my mileage may vary depending on the encoding/decoding performance).

Has anyone tested this in production?

I would post to the chronicle list but I couldn't find one.  If this works I could get this data < 10GB which would be pretty amazing.  

We're planning on scaling a LOT larger so this could easily become 1TB of memory if I'm not careful :-P  .. that would be pricey!

Number of entries

Chronicle* Throughput

Chronicle RSS

HashMap* Throughput

HashMap Worst GC pause

HashMap RSS

10 million

30 Mupd/s

½ GB

155 Mupd/s

2.5 secs

9 GB

50 million

31 Mupd/s

3⅓ GB

120 Mupd/s

6.9 secs

28 GB

250 million

30 Mupd/s

14 GB

114 Mupd/s

17.3 secs

76 GB

1000 million

24 Mupd/s

57 GB

OOME

43 secs

NA

2500 million

23 Mupd/s

126 GB

Did not test

NA

Reply all
Reply to author
Forward
0 new messages