Ignite fails to allocate more memory then initially allocated when maxSize property provided in MemoryPolicyConfiguration

classic Classic list List threaded Threaded
3 messages Options
smironchyk smironchyk
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Ignite fails to allocate more memory then initially allocated when maxSize property provided in MemoryPolicyConfiguration

Hi! I am trying to configure and test my custom memory policy for the simple 1 client - 1 server node topology.

In order to do this I added memory configuration for my server node like this with 1GB_Region_Eviction memory policy configured.

        <property name="memoryConfiguration">
            <bean class="org.apache.ignite.configuration.MemoryConfiguration">
               
                <property name="pageSize" value="#{16 * 1024}"/>

                <property name="memoryPolicies">
                    <list>
                        <bean class="org.apache.ignite.configuration.MemoryPolicyConfiguration">
                            <property name="name" value="1GB_Region_Eviction"/>
                            <property name="metricsEnabled" value="true" />
                            <property name="initialSize" value="#{250 * 1024 * 1024}"/>
                            <property name="maxSize" value="#{1l * 1024 * 1024 * 1024}"/>
                            <property name="pageEvictionMode" value="RANDOM_2_LRU"/>
                        </bean>

                    </list>
                </property>
            </bean>
        </property>

My client node connects to server and starts putting new entries with size ~ 2MB to cache with interval in 1 sec. See client config below.
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="clientMode" value="true"/>
       
        <property name="peerClassLoadingEnabled" value="true"/>

        <property name="cacheConfiguration">
            <list>
                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="MyCache1"/>
                    <property name="statisticsEnabled" value="true" />
                    <property name="rebalanceMode" value="SYNC"/>
                    <property name="memoryPolicyName" value="1GB_Region_Eviction"/>

                    <property name="writeSynchronizationMode" value="FULL_SYNC"/>
                    <property name="backups" value="0"/>
                    <property name="eagerTtl" value="false"/>
                    <property name="expiryPolicyFactory">
                        <bean class="javax.cache.expiry.CreatedExpiryPolicy" factory-method="factoryOf">
                            <constructor-arg value="THIRTY_MINUTES"/>
                        </bean>
                    </property>
                </bean>
            </list>
        </property>
...
    </bean> 

I've got message in server node log like this
[12:34:16,622][INFO][sys-stripe-1-#2%null%][PageMemoryNoStoreImpl] Allocated next memory segment [plcName=1GB_Region_Eviction, chunkSize=268.4 MB]
And after this no more memory chunks allocated by node. And my maxSize ignored by cache.
What am I doing wrong here. Please advise.

my-client-example-memory-policies.xmlmy-example-memory-policies.xmlMyMemoryPoliciesExample.java
afedotov afedotov
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Ignite fails to allocate more memory then initially allocated when maxSize property provided in MemoryPolicyConfiguration

Hi,

Provided configuration works as expected on Ignite version 2.1.
On my side, in this configuration, I got 3 memory segment allocations.

Have you tried requesting cache.size() after populating the cache?
Please provide the full configuration files so as I could check them.

Kind regards,
Alex.

On Thu, Aug 10, 2017 at 6:58 PM, smironchyk [via Apache Ignite Users] <[hidden email]> wrote:
Hi! I am trying to configure and test my custom memory policy for the simple 1 client - 1 server node topology.

In order to do this I added memory configuration for my server node like this with 1GB_Region_Eviction memory policy configured.

        <property name="memoryConfiguration">
            <bean class="org.apache.ignite.configuration.MemoryConfiguration">
               
                <property name="pageSize" value="#{16 * 1024}"/>

                <property name="memoryPolicies">
                    <list>
                        <bean class="org.apache.ignite.configuration.MemoryPolicyConfiguration">
                            <property name="name" value="1GB_Region_Eviction"/>
                            <property name="metricsEnabled" value="true" />
                            <property name="initialSize" value="#{250 * 1024 * 1024}"/>
                            <property name="maxSize" value="#{1l * 1024 * 1024 * 1024}"/>
                            <property name="pageEvictionMode" value="RANDOM_2_LRU"/>
                        </bean>

                    </list>
                </property>
            </bean>
        </property>

My client node connects to server and starts putting new entries with size ~ 2MB to cache with interval in 1 sec. See client config below.
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="clientMode" value="true"/>
       
        <property name="peerClassLoadingEnabled" value="true"/>

        <property name="cacheConfiguration">
            <list>
                <bean class="org.apache.ignite.configuration.CacheConfiguration">
                    <property name="name" value="MyCache1"/>
                    <property name="statisticsEnabled" value="true" />
                    <property name="rebalanceMode" value="SYNC"/>
                    <property name="memoryPolicyName" value="1GB_Region_Eviction"/>

                    <property name="writeSynchronizationMode" value="FULL_SYNC"/>
                    <property name="backups" value="0"/>
                    <property name="eagerTtl" value="false"/>
                    <property name="expiryPolicyFactory">
                        <bean class="javax.cache.expiry.CreatedExpiryPolicy" factory-method="factoryOf">
                            <constructor-arg value="THIRTY_MINUTES"/>
                        </bean>
                    </property>
                </bean>
            </list>
        </property>
...
    </bean> 

I've got message in server node log like this
[12:34:16,622][INFO][sys-stripe-1-#2%null%][PageMemoryNoStoreImpl] Allocated next memory segment [plcName=1GB_Region_Eviction, chunkSize=268.4 MB]
And after this no more memory chunks allocated by node. And my maxSize ignored by cache.
What am I doing wrong here. Please advise.

my-client-example-memory-policies.xmlmy-example-memory-policies.xmlMyMemoryPoliciesExample.java


To start a new topic under Apache Ignite Users, email [hidden email]
To unsubscribe from Apache Ignite Users, click here.
NAML

smironchyk smironchyk
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: [MSG Uncertified] Re: Ignite fails to allocate more memory then initially allocated when maxSize property provided in MemoryPolicyConfiguration

This post was updated on .
Thanks for response. Yes, I tried to reproduce in latest Ignite 2.1 and all
works good.

Sorry, forgot to specify version. If that an issue it is in ver.
2.0.0#20170430-sha1:d4eef3c6
Other system information:
Config URL:
file:/C:/work/apache-ignite/apache-ignite-fabric-2.0.0-bin/examples/config/my-client-example-memory-policies.xml
OS: Windows 7 6.1 amd64
Language runtime: Java Platform API Specification ver. 1.8
VM information: Java(TM) SE Runtime Environment 1.8.0_121-b13 Oracle
Corporation Java HotSpot(TM) 64-Bit Server VM 25.121-b13
VM total memory: 5.3GB

Loading...