Hello Ignite Community I'm trying to evaluate the performance of Ignite Cache and Distributed Computing. To do so, I have set up a very simple example that is a simplification of the real-life examples for which we plan to use Ignite. To my surprise, the results show that Ignite is a significantly slower than I expected, and I would like to get some help with configuration and/or tuning to improve performance.
Here's the example: We have a warehouse that has 10,000,000 Inventory Items. Each Item has a product Id, a quantity, and a price. The sample computation is to calculate the Total Value of the inventory, which is SUM(i, Item[i].quantity * Item[i].price) (i.e. the sum of the value of each item). The real-life is large-scale would have billions of entries per cache and more complex calculations. For the test, I have a single cache, with 10,000,000 entries, using pretty much Ignite's standard configuration with a few tweaks. For only 10,000,000 items, I would have expected this calculation to perform in a matter of few hundreds of milliseconds; however, the results for Ignite are almost 2 order of magnitude slower are much slower (5,000 - 12,000 millis). I have also a test that shows that when running this on the same JVM and using HashMap as the cache, the computation takes 92 millis. Also, the amount of memory overhead is very significant: the 10,000,000 require almost 4 GB of heap on the Ignite node (single-node cluster), versus 1GB of heap when running within a JVM and using HashMap. Can you provide any guidance as to how to improve the performance of Ignite Cache + Compute for this simple case? I'm attaching the code, and the corresponding configuration and settings. I understand that there will be some overhead when using a distributed data grid as opposed to a HashMap on the same JVM, so I don't expect to get the same performance, but I would like to get as close as possible. Thanks so much in advance! *JVM Settings* JVM_OPTS=-Xms2048m -Xmx2048m -server -XX:+AggressiveOpts -XX:MaxPermSize=256m set JVM_OPTS=%JVM_OPTS% -DIGNITE_ATOMIC_CACHE_DELETE_HISTORY_SIZE=1000 set JVM_OPTS=%JVM_OPTS% -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseTLAB -XX:NewSize=128m -XX:MaxNewSize=128m set JVM_OPTS=%JVM_OPTS% -XX:MaxTenuringThreshold=0 -XX:SurvivorRatio=1024 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 *Attachements* default-config.xml <http://apache-ignite-users.70518.x6.nabble.com/file/n3722/default-config.xml> <http://apache-ignite-users.70518.x6.nabble.com/file/n3722/Ignite_Performance_Analysis_1-Server_Node.png> Ignite_Performance_Analysis_Results.txt <http://apache-ignite-users.70518.x6.nabble.com/file/n3722/Ignite_Performance_Analysis_Results.txt> inventory_cache_compute.jar <http://apache-ignite-users.70518.x6.nabble.com/file/n3722/inventory_cache_compute.jar> CacheComputeTest.java <http://apache-ignite-users.70518.x6.nabble.com/file/n3722/CacheComputeTest.java> InventoryItem.java <http://apache-ignite-users.70518.x6.nabble.com/file/n3722/InventoryItem.java> InventoryValueCompute.java <http://apache-ignite-users.70518.x6.nabble.com/file/n3722/InventoryValueCompute.java> -- View this message in context: http://apache-ignite-users.70518.x6.nabble.com/Ignite-Cache-and-Compute-Performance-tp3722.html Sent from the Apache Ignite Users mailing list archive at Nabble.com.
