You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ignite.apache.org by "Alexander Belyak (JIRA)" <ji...@apache.org> on 2017/11/10 14:01:00 UTC

[jira] [Created] (IGNITE-6866) Allocate offheap on client

Alexander Belyak created IGNITE-6866:
----------------------------------------

             Summary: Allocate offheap on client
                 Key: IGNITE-6866
                 URL: https://issues.apache.org/jira/browse/IGNITE-6866
             Project: Ignite
          Issue Type: Bug
      Security Level: Public (Viewable by anyone)
          Components: general
    Affects Versions: 2.1
            Reporter: Alexander Belyak


Often client use the same config file as a server and ignite start offheap memory for client too... but never use it. How it happens:
1) Default memory configuration for server is creating in IgnitionEx.initializeConfiguration() method:
if (!myCfg.isClientMode() && myCfg.getMemoryConfiguration() == null) 
so if ignite configuration already contains memoryConfiguration - it stay there
2) In IgniteCacheDatabaseSharedManager.anActivate method do nothing only:
if (cctx.kernalContext().clientNode() && cctx.kernalContext().config().getMemoryConfiguration() == null)
            return;
So if ignite configuration contains memory configuration - it will be allocated. Why its not good:
1) Memory allocation spend virtual memory (OS didn't really allocate memory before first access to it) and if overcommit_memory strategy is set to OVERCOMMIT_NEVER - it can block start client node (maybe first or second one) in same host (see: /proc/sys/vm/overcommit_memory and /proc/sys/vm/overcommit_ratio)
2) In IgniteKernal.checkPhysicalRam() we use maxSize of offheap memory and log warning about memory overusage
Good news only one - often in memory configuration really big only maxSize, but initialSize is just about 256Mb so each client really allocate not so many RAM.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)