!!! Overview
[{$pagename}] is a [Process|Processes] that brings the on-disk version of the (Typically [eDirectory]) [Data Store|DataStore] to the same coherent state as the in-memory ([FLAIM Cache]) [database].


[FLAIM] can perform a [{$pagename}] during the minimal update activity on the database. 

[{$pagename}] by default runs every [second] and writes the [dirty cache] ([FLAIM Cache]) to the disk.  

[{$pagename}] acquires a [DIB Lock] on the (typically [eDirectory]) [Data Store|DataStore] and performs the maximum amount of possible work until either the [{$pagename}] completes or another thread is waiting to update the [Data Store|DataStore]. 


[cpinterval] is the time for which the [database] waits before it initiates the [{$pagename}] [NDS Thread] which brings the on-disk version of the [database] up to the same coherent state as the in-memory ([cache]) [database]. The [checkPointThread] flushes the [Dirty cache] to the [Disk partition],
followed by cleaning up the [Roll-Forward Log]. 

Since [FLAIM Block Cache] is temporarily suspended while [checkPointThread] runs, setting the [cpinterval] to a high value to achieve faster [FLAIM Block Cache].

To prevent the on-disk database from becoming too far out of sync, there are conditions under which a [{$pagename}] is forced even if other [NDS Threads] are waiting to [update] the [DataStore]:
* If the [checkPointThread] cannot complete a checkpoint within a specified [cpinterval] (the default is 3 minutes), it is forced and the [dirty cache] is cleaned.
* If the size of the dirty [FLAIM Cache] is larger than the [maxdirtycache] (if set), a [{$pagename}] is forced to bring down the dirty [FLAIM Cache] size to [lowdirtycache] (default is [zero]).

!! [{$pagename}] [Monitoring]
[{$pagename}] [Monitoring] can be performed by using the [LOCK] parameter within [ndstrace] which will show the [DIB Lock] activity.

[iMonitor Diagnostic Logger]

!! [FLAIM] [Updates]
Only [NDS Threads] performing [Create], [Update] or [Delete] operations are required to obtain the [DIB Lock] before performing the operation. Threads performing [Read] operations ([SearchRequest], etc.) do __NOT__ require a [DIB Lock] before performing the operation.

Also as the [checkPointThread] on each [eDirectory] [FLAIM] [DataStore] is single threaded there can be no concurrent writing operations.

!! [{$pagename}] Runs When
* [cpinterval] has been reached or
* dirty [FLAIM Cache] is larger than the [maxdirtycache] 




!! Category
%%category [eDirectory]%%

!! More Information
There might be more information for this subject on one of the following:
[{ReferringPagesPlugin before='*' after='\n' }]