ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ksenia Rybakova (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (IGNITE-5150) Allocated memory pages count is incorrect during load test
Date Wed, 03 May 2017 16:01:04 GMT

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

Ksenia Rybakova updated IGNITE-5150:
------------------------------------
    Attachment: top-server.log
                top-driver.log
                run-load.xml
                run-load.properties
                ignite-base-load-config.xml
                183507_id0_driver.log
                183504_id0_server.log

> 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
>         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.
> 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)

Mime
View raw message