You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Ivan Rakov (JIRA)" <ji...@apache.org> on 2017/05/05 12:46:04 UTC

[jira] [Assigned] (IGNITE-5150) Allocated memory pages count is incorrect during load test

     [ https://issues.apache.org/jira/browse/IGNITE-5150?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ivan Rakov reassigned IGNITE-5150:
----------------------------------

    Assignee: Ivan Rakov

> Allocated memory pages count is incorrect during load test
> ----------------------------------------------------------
>
>                 Key: IGNITE-5150
>                 URL: https://issues.apache.org/jira/browse/IGNITE-5150
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.0
>            Reporter: Ksenia Rybakova
>            Assignee: Ivan Rakov
>         Attachments: 183504_id0_server.log, 183507_id0_driver.log, ignite-base-load-config.xml, run-load.properties, run-load.xml, top-driver.log, top-server.log
>
>
> Load test config:
> - CacheRandomOpearion benchmark
> - 1 server (-Xms4g -Xmx4g)
> - 1 client (-Xms4g -Xmx4g)
> - 1 cache with following config
> {noformat}
>     <bean name="orgCache" class="org.apache.ignite.configuration.CacheConfiguration">
>         <property name="name" value="orgCache"/>
>         <property name="cacheMode" value="PARTITIONED"/>
>         <property name="atomicityMode" value="ATOMIC"/>
>         <!-- Configure query entities -->
>         <property name="queryEntities">
>             <list>
>                 <bean class="org.apache.ignite.cache.QueryEntity">
>                     <property name="keyType" value="java.lang.Integer"/>
>                     <property name="valueType" value="org.apache.ignite.yardstick.cache.model.Organization"/>
>                     <property name="fields">
>                         <map>
>                             <entry key="id" value="java.lang.Integer"/>
>                             <entry key="name" value="java.lang.String"/>
>                         </map>
>                     </property>
>                     <property name="indexes">
>                         <list>
>                             <bean class="org.apache.ignite.cache.QueryIndex">
>                                 <constructor-arg value="id"/>
>                             </bean>
>                             <bean class="org.apache.ignite.cache.QueryIndex">
>                                 <constructor-arg value="name"/>
>                             </bean>
>                         </list>
>                     </property>
>                 </bean>
>             </list>
>         </property>
>     </bean>
> {noformat}
> - preloaded data: 40M entries
> - backup count: 0
> - memory config:
> {noformat}
> <property name="memoryConfiguration">
>             <bean class="org.apache.ignite.configuration.MemoryConfiguration">
>                 <property name="defaultMemoryPolicyName" value="default"/> <!-- default -->
> 		<property name="SystemCacheMaxSize" value="#{100L * 1024 * 1024}"/> <!-- default -->
> 		<property name="SystemCacheInitialSize" value="#{40L * 1024 * 1024}"/> <!-- default -->
> 		<property name="PageSize" value="#{2L * 1024}"/> <!-- default -->
>                 
> 		<property name="memoryPolicies">
> 		    <list>
>                     	<bean class="org.apache.ignite.configuration.MemoryPolicyConfiguration">
>                             <property name="name" value="default"/>
>                             <property name="initialSize" value="#{500L * 1024 * 1024}"/>
> 			    <property name="maxSize" value="#{6L * 1024 * 1024 * 1024}"/>
>                         </bean>
>                     	<bean class="org.apache.ignite.configuration.MemoryPolicyConfiguration">
>                             <property name="name" value="memPolicyCfg_evict_LRU"/>
> 			    <property name="pageEvictionMode" value="RANDOM_LRU"/>
>                             <property name="initialSize" value="#{500L * 1024 * 1024}"/>
> 			    <property name="maxSize" value="#{1L * 1024 * 1024 * 1024}"/>
>                         </bean>
>                     	<bean class="org.apache.ignite.configuration.MemoryPolicyConfiguration">
>                             <property name="name" value="memPolicyCfg_evict_2LRU"/>
> 			    <property name="pageEvictionMode" value="RANDOM_2_LRU"/>
>                             <property name="initialSize" value="#{500L * 1024 * 1024}"/>
> 			    <property name="maxSize" value="#{4L * 1024 * 1024 * 1024}"/>
>                         </bean>
> 		    </list>
>                 </property>
>             </bean>
>         </property>
> {noformat}
> 40M entries consume about 4Gb offheap memory. It might be proved by {{top}} command (RES value - JVM memory = 8Gb - 4Gb) or by summing all "Allocated next memory segment" printed in server log.
> After all data preloaded metrics show the following:
> {noformat}
> [18:37:18,152][INFO ][grid-timeout-worker-#23%null%][IgniteKernal]
> Metrics for local node (to disable set 'metricsLogFrequency' to 0)
>     ^-- Node [id=dc009e3c, name=null, uptime=00:02:10:102]
>     ^-- H/N/C [hosts=2, nodes=2, CPUs=32]
>     ^-- CPU [cur=19.53%, avg=11.99%, GC=0.03%]
>     ^-- PageMemory [pages=22527667]
>     ^-- Heap [used=238MB, free=94.17%, comm=4096MB]
>     ^-- Non heap [used=40MB, free=68.18%, comm=45MB]
>     ^-- Public thread pool [active=0, idle=0, qSize=0]
>     ^-- System thread pool [active=0, idle=10, qSize=0]
>     ^-- Outbound messages queue [size=0]
> {noformat}
> pages=22527667 seems to be wrong, otherwise offheap memory size would be 22527667 * 2KB = about 43Gb.
> Driver and server logs, yardstick configs, top logs are attached.
> Note:
> This problem leads to eviction working incorrectly. 
> {code}
> boolean shouldEvict = allocatedPagesCnt > (memorySize / sysPageSize * plcCfg.getEvictionThreshold()) &&
>                 emptyDataPagesCnt < plcCfg.getEmptyPagesPoolSize();
> {code}
> If I change memory policy for the cache to memPolicyCfg_evict_2LRU I expect that eviction happens when about 4Gb of offheap memory is used. But it happens at 1Gb, since at this point memory pages count =~ 2M (2M * 2Kb =~ 4Gb).



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)