I am noticing that some users struggle with performance when using
collocated compute and off-heap cache. The main reason is that collocated
computations access data locally, directly on the server, and with off-heap
cache all binary objects need to be deserialized for every access.
A much more efficient approach is to enable on-heap cache, so the data is
deserialized once and then stored in the on-heap cache. However, the
disadvantage of this approach is that the data foot print in memory doubles
because the data is now stores in both, on-heap and off-heap caches.
What if we suggested the following configuration for the collocated compute
- enable the *on-heap cache* and make it large enough to fit all the data
- enable *Ignite native persistence* in BACKGROUND mode, so there is no
performance overhead for persisting data
- make *off-heap cache* very small compared to the on-heap cache.
This way, the memory will be consumed by the on-heap cache mostly, the data
will be cached in deserialized form, and there should be no performance
Will this approach work?