1
votes

I am not getting the performance that I am expecting from using Apache Ignite DataGrid. I have tried a few configuration changes but at this point don't know how to investigate performance bottlenecks, and am looking for expert help.

I am using Apache Ignite to cache a byte array using a wrapper class I call ByteArray. My test code attempts to benchmark the cache performance by calling multiple puts and then multiple gets from another process. I've tried running the get process on the same node and on different nodes. I have also created a baseline performance spec using Java HashMap as my cache, and this has much better performance (10000x for put).

Right now, on the same node, I get the following:
Hashmap cache, same node: put 2600 MB/s; get 300 MB/s
Ignite same node cache: put 0.4 MB/s; get 2.0 MB/s
Ignite cache, 2 nodes: put 0.3 MB/s; get 0.7 MB/s

I ran these in replicated mode but I see similar results for partitioned mode. I run multiple iterations of the test and average the timing. My nodes have 25GB memory and my test consumes ~1GB. I have configured the VM to use 10GB max.

1

1 Answers

1
votes

First of all, comparing Ignite performance with HashMap doesn't make a lot of sense. Ignite is a distributed and scalable system, while HashMap is not even thread-safe.

The fact that you used HashMap as a baseline, makes me think that your test is single threaded. If you try to query Ignite from multiple threads/clients, I'm sure you will notice much better throughput.

Also keep in mind that working with Ignite implies sending data across network. There is a chance you're limited by its speed.