Nikita-tech-writer commented on a change in pull request #9216:
URL: https://github.com/apache/ignite/pull/9216#discussion_r662957691



##########
File path: docs/_docs/memory-configuration/replacement-policies.adoc
##########
@@ -0,0 +1,96 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements.  See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License.  You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+= Replacement Policies
+
+When link:persistence/native-persistence[Native Persistence] is on and Ignite 
stores on disk more data than off-heap memory allocated for the data region, to 
preload some page from the disk to the completely full off-heap memory another 
page should be evicted from the off-heap to the disk. This process is called 
_page rotation_ or _page replacement_.
+
+When Native Persistence is off _eviction_ is used instead of _page 
replacement_. See link:memory-configuration/eviction-policies[Eviction 
Policies] page for more information.
+
+Page replacement is implemented as follows.
+
+When Ignite requires some page, it tries to find this page in the off-heap 
memory, if the page currently not in the off-heap memory (page fault occurs), 
this page is preloaded from the disk, but if off-heap memory already full some 
another page should be chosen to be replaced (stored to the disk and evicted).
+
+Ignite supports three algorithms to find pages to replace:
+
+* Random-LRU algorithm;
+* Segmented-LRU algorithm;
+* CLOCK algorithm.
+
+Page replacement algorithm can be configured by `PageReplacementMode` property 
of `DataRegionConfiguration`. By default, CLOCK algorithm is used.
+
+[tabs]
+--
+tab:XML[]
+[source,xml]
+----
+<bean class="org.apache.ignite.configuration.IgniteConfiguration">
+  <!-- Memory configuration. -->
+  <property name="dataStorageConfiguration">
+    <bean class="org.apache.ignite.configuration.DataStorageConfiguration">
+      <property name="dataRegionConfigurations">
+        <list>
+          <!--
+              Defining a persistent data region with Segmented LRU page 
replacement mode.
+          -->
+          <bean 
class="org.apache.ignite.configuration.DataRegionConfiguration">
+            <!-- Data region name. -->
+            <property name="name" value="persistent_data_region"/>
+
+            <!-- Enable persistence. -->
+            <property name="persistenceEnabled" value="true"/>
+
+            <!-- 20 GB maximum size (RAM). -->
+            <property name="maxSize" value="#{20L * 1024 * 1024 * 1024}"/>
+
+            <!-- Enabling SEGMENTED_LRU page replacement for this region.  -->
+            <property name="pageReplacementMode" value="SEGMENTED_LRU"/>
+          </bean>
+        </list>
+      </property>
+    </bean>
+  </property>
+
+  <!-- The rest of the configuration. -->
+</bean>
+----
+tab:Java[]
+[source,java]
+----
+include::{javaCodeDir}/ReplacementPolicies.java[tag=segmentedLRU,indent=0]
+----
+tab:C#/.NET[unsupported]
+----
+tab:C++[unsupported]
+--
+
+The choice of the algorithm depends on your workload. For most cases, CLOCK 
(default) is a good candidate, but on some workloads other algorithms can 
perform better.
+
+== Random-LRU algorithm

Review comment:
       ```suggestion
   == Random-LRU Algorithm
   ```




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to