Igniters,
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 users: - 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 degradation. Will this approach work? D. |
Dmitriy,
There will be no performance overhead for reads, but there will be a significant performance overhead for writes because each update must be changed in offheap, and since the offheap will be very small, there will be a lot of pages reads and spills. 2017-11-15 6:53 GMT+03:00 Dmitriy Setrakyan <[hidden email]>: > Igniters, > > 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 > users: > > - 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 > degradation. > > Will this approach work? > > D. > |
On Wed, Nov 15, 2017 at 8:38 AM, Alexey Goncharuk <
[hidden email]> wrote: > Dmitriy, > > There will be no performance overhead for reads, but there will be a > significant performance overhead for writes because each update must be > changed in offheap, and since the offheap will be very small, there will be > a lot of pages reads and spills. > Sounds very strange. Why do we need to read a page if we don't need to read the entry? Moreover, we do not even need to write into that page, as far as I know. Are you sure there is no room for optimization here? |
Free forum by Nabble | Edit this page |