You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by VincentCE <ve...@cephei.com> on 2020/06/06 11:53:50 UTC

Questions on the mechanics of activated on-heap in ignite 2.x.x

In our project we are currently using ignite 2.7.6 with native persistence
disabled and java 11. At the moment we are not using the on-heap feature,
i.e. all our data lives in off-heap. However in order to gain performance we
are thinking about activating on-heap. While there are already quite many
questions/answers on that topic in this forum we are still missing some
points. I would like to use the following scenario for our questions: Say we
have one ignite-server-instance living on a *kubernetes-pod of 32 GiB memory
request/limit size* with the following "hypothetical" configuration:

- JVM options exactly as described here
https://apacheignite.readme.io/docs/jvm-and-system-tuning, i.e. in 
  particular *10 GB heap fixed*.
- Off-heap is limited to 15 GiB by adjusting the default region with
*initSize = maxSize = 15 GiB*. 
  No more data regions are defined.

Before doing anything with our ignite-server-instance we *initially fill its
off-heap with 10 GiB* of data and this will be the only data that it will
receive. 

What happens when we set
*org.apache.ignite.configuration.CacheConfiguration.setOnheapCacheEnabled(true)
in each data configuration and for now use no eviction policies* in
particular during loading these 10 GB of data? 

More precisely: 
1. As it is emphasised several times in this forum the data will still be be
loaded into off-heap. But will it immediately also be loaded into heap, i.e.
during the loading procedure each data point gets replicated simultaneously
to heap resulting in two copies of the same data one in off-heap and one on
heap after the procedure is finished? 
2. ... Or will a given data point only be replicated to heap when ever it is
being used, i.e. during computations?
3. Lets furthermore assume that our overall configuration was stable before
switching to on-heap. In order to guarantee that it will do so afterwards
would we need to increase the heap size by roughly 10 GB to 20 GB and
therefore also our pod size to roughly 42 GiB? That would imply that using
on-heap always goes hand in hand with increasing memory resources.
4. Obviously in this example we did not define any eviction-policy to
control the on-heap cache size. However this is indeed intended here because
we would like each data point to be quickly available living also in heap.
Is this a useful approach (i.e. replicating the whole off-heap also in heap)
in order to reach the overall goal namely better performance? It feels like
this approach would counteract the change to the off-heap model from ignite
2.x.x onwards in terms of GC impacts and so on. Is this correct?

Please let me know if you need more detailed informations about the
configurations/settings we use.

Thanks in advance!

Vincent



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Re: Questions on the mechanics of activated on-heap in ignite 2.x.x

Posted by Ilya Kasnacheev <il...@gmail.com>.
Hello!

1. I'm not sure it will be immediately available on heap.
2. This sounds a more reasonable assumption.
3. I guess so, but the real issue here is that on-heap cache increases Full
GC times. At some point it will become infeasible.
4. Yes, it would counteract the change to off-heap model.

Regards,
-- 
Ilya Kasnacheev


сб, 6 июн. 2020 г. в 14:54, VincentCE <ve...@cephei.com>:

> In our project we are currently using ignite 2.7.6 with native persistence
> disabled and java 11. At the moment we are not using the on-heap feature,
> i.e. all our data lives in off-heap. However in order to gain performance
> we
> are thinking about activating on-heap. While there are already quite many
> questions/answers on that topic in this forum we are still missing some
> points. I would like to use the following scenario for our questions: Say
> we
> have one ignite-server-instance living on a *kubernetes-pod of 32 GiB
> memory
> request/limit size* with the following "hypothetical" configuration:
>
> - JVM options exactly as described here
> https://apacheignite.readme.io/docs/jvm-and-system-tuning, i.e. in
>   particular *10 GB heap fixed*.
> - Off-heap is limited to 15 GiB by adjusting the default region with
> *initSize = maxSize = 15 GiB*.
>   No more data regions are defined.
>
> Before doing anything with our ignite-server-instance we *initially fill
> its
> off-heap with 10 GiB* of data and this will be the only data that it will
> receive.
>
> What happens when we set
>
> *org.apache.ignite.configuration.CacheConfiguration.setOnheapCacheEnabled(true)
> in each data configuration and for now use no eviction policies* in
> particular during loading these 10 GB of data?
>
> More precisely:
> 1. As it is emphasised several times in this forum the data will still be
> be
> loaded into off-heap. But will it immediately also be loaded into heap,
> i.e.
> during the loading procedure each data point gets replicated simultaneously
> to heap resulting in two copies of the same data one in off-heap and one on
> heap after the procedure is finished?
> 2. ... Or will a given data point only be replicated to heap when ever it
> is
> being used, i.e. during computations?
> 3. Lets furthermore assume that our overall configuration was stable before
> switching to on-heap. In order to guarantee that it will do so afterwards
> would we need to increase the heap size by roughly 10 GB to 20 GB and
> therefore also our pod size to roughly 42 GiB? That would imply that using
> on-heap always goes hand in hand with increasing memory resources.
> 4. Obviously in this example we did not define any eviction-policy to
> control the on-heap cache size. However this is indeed intended here
> because
> we would like each data point to be quickly available living also in heap.
> Is this a useful approach (i.e. replicating the whole off-heap also in
> heap)
> in order to reach the overall goal namely better performance? It feels like
> this approach would counteract the change to the off-heap model from ignite
> 2.x.x onwards in terms of GC impacts and so on. Is this correct?
>
> Please let me know if you need more detailed informations about the
> configurations/settings we use.
>
> Thanks in advance!
>
> Vincent
>
>
>
> --
> Sent from: http://apache-ignite-users.70518.x6.nabble.com/
>