Folks, I've checked memory allocation. It looks like we are allocating memory only on the first exchange future init on local join occurs on node. Also, seems like we are allocating only the first chunk of memory (not the whole bunch) and it calculates as:
Math.max((maxSize - startSize) / (SEG_CNT - 1), 256L * 1024 * 1024) But, I'm agree with Val. It's better to allocate memory only when when the first cache assigned to this region. Also, It seems like we have some problem with user notification about available physical resources. For client nodes method requiredOffheap() returns always zero [1]. That's why WARN message shown here [2] would be not not quite right if we have a lot of client nodes in cluster. [1] https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java#L1501 [2] https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java#L1489 сб, 21 июл. 2018 г. в 14:15, Dmitriy Setrakyan <[email protected]>: > On Sat, Jul 21, 2018 at 5:22 AM, Valentin Kulichenko < > [email protected]> wrote: > > > Actually, I would go even further: only allocate a data region on a node > > when the first cache assigned to this region is deployed on that node. > > Because issue is broader than client nodes and local caches. One can have > > server nodes without any caches as well - running only services, for > > example. > > > > It would be great if this was possible, but to my knowledge, regions need > to be allocated on startup. > > Alexey Goncharuk, do you have any suggestions on this? > > D. > -- -- Maxim Muzafarov
