This package contains page memory implementation for case persitence is enabled.
An implementation of LoadedPagesMap.java (PageIdTable) manages mapping from Page ID to relative pointer map (rowAddr).
See introduction in wiki Region Structure.
Current implementation is RobinHoodBackwardShiftHashMap.java
Throttling is an intentional slowdown of operation in the grid to equate throughput of the storage and speed of user operations.
Throttling is implemented at physical level of operations, so it operates not with user entries, but with page memory pages.
For an introduction, please see wiki PagesWriteThrottling
There are two types of throttling implemented in Apache Ignite:
This CP Buffer throttling is enabled by default. It is activated if CP buffer is close to being filled. In this case, there is an exponential backoff at 2/3 when filling reached. Since the CP buffer is being cleaned as the checkpoint progresses, this more or less behaves like trotting.
If throttling is enabled in User configuration, then Speed based throttling is applied.
Speed based throttling is implemented by PagesWriteSpeedBasedThrottle.java
Throttling is not active outside of checkpoint process. But when checkpoint is in progress speed based-throttling approach estimates the current number of pages written and pages to be written.
From source data remained estimated time of checkpoint is calculated. Then we apply this time estimation to our progress of marking pages as dirty.