1
votes

I have 3 node cluster and I am using ignite computation for parallel operation here I use Apply method.when Execute my job with three node cluster it required 15-20sec and when I run my job with the single node it required 3-5 sec so why it happens.As per Documentation when I use more node it required less time but in my case, it's totally opposite so please can you help me

2
Can you add reproducer? - Evgenii Zhuravlev
Hello @EvgeniiZhuravlev, Can you please explain how to add it and it's purpose - Sambhaji Sawant
You can add it to github or to dropbox/googledrive and share link with us. I could check your code and give some recommendations - Evgenii Zhuravlev
hello @EvgeniiZhuravlev Please check my code docs.google.com/document/d/… - Sambhaji Sawant

2 Answers

2
votes

Not for all cases a increase count of node brings performance improvement. How you can see it can bring inverse effect. If you tasks/jobs are lightweight then sending them on other nodes can add overhead and it can be significant for this kind of tasks. For execution remote tasks/jobs Apache Ignite serialize them, transportes on remote nodes via TCP/IP. On remote nodes those jobs are deserialize, executed and giving response in the same way (serialize, TCP/IP and etc).

1
votes

In a case when you access objects from outer class in lambda, these objects will be serialized too, and this behavior gives overhead. As I can see from the code, you don't really need to access any objects out of lambda, you can move all object into the lambda.

Moreover, it will be better creating a static inner class instead of lambda.

Also, I would recommend to warm up JVM and Ignite before any measurements and run more than one iteration.

In Some cases you can use @ComputeTaskNoResultCache annotation, it could give a huge improvement if it fits your case.

I would also recommend reading this thread on Apache Ignite user list, it contains a few recommendations for improvements of compute grid performance: