Hello,

My aim is a queue for load balancing that is described in the
documentation
<https://apacheignite.readme.io/v2.6/docs/queue-and-set#section-cache-queues-and-load-balancing>:
create an "ideally balanced system where every node only takes the
number of jobs it can process, and not more."

I'm using jdk8 and ignite 2.6.0. I have successfully set up a two node
ignite cluster where node1 has same CPU count (8) and same RAM as node2
but slightly slower CPU (virtual vs. dedicated). I created one unbounded
queue in this system (no collection configuration, also no config for
cluster except TcpDiscoveryVmIpFinder).

I call queue.put on both nodes at an equal rate and have one
non-ignite-thread per node that does "queue.take()" and what I expect is
that both machines go equally fast into the 100% CPU usage as both
machines poll at their best frequency. But what I observe is that the
slower node (node1) gets approx. 5 times more items via queue.take than
node2. This leads to 10% CPU usage on node2 and 100% CPU usage on node1
and I never had the case where it was equal.

What could be the reason? Is there a fair polling configuration or some
anti-affine? Or is it required to do queue.take() inside a Runnable
submitted via ignite.compute().something?

I also played with CollectionConfiguration.setCacheMode but the problem
persists. Any pointers are appreciated.

Kind Regards
Peter

Reply via email to