...
GridDhtPartitionSupplyMessage
used) it still processes entries one by one. Such approach have the low impact with a pure in-memory use case but it leads to additional fsync's and logging WAL records with the Apache Ignite native persistence enabled. setRebalanceThreadPoolSize
is set to 1
and setRebalanceBatchSize
to 512K
which means that thousands of key-value pairs will be processed single-thread and individually. Such approach impacts on: CacheDataStore
will traverse and modify each index tree N-times. It will allocate the space N-times within FreeList
structure and have to additionally store WAL page delta records with approximate complexity ~ O(N*log(N))
;Rebalancing procedure doesn't utilize the network and storage device throughput to full extent even with enough meaningful values of setRebalanceThreadPoolSize
. For instance, trying to use a common recommendation of N+1
threads (N
– the number of CPU cores available) to increase rebalance speed will drammatically slowdown computation performance on demander node. This can be easily shown on the graphs below.
CPU utilization (supplier, demaner) | |||
---|---|---|---|
|
|
|
|
Apache Ignite needs to support peer-2-peer cache partition file transfer using zero-copy algorithm based on extension of communication SPI.
...