tree: f6f2740f9318f5a0b0838bae341d045602ee8e2a [path history] [tgz]
  1. CheckpointMetricsTracker.java
  2. CheckpointPages.java
  3. DelayedDirtyPageStoreWrite.java
  4. DelayedPageReplacementTracker.java
  5. FullPageIdTable.java
  6. IntervalBasedMeasurement.java
  7. LoadedPagesMap.java
  8. package-info.java
  9. PageHeader.java
  10. PageMemoryEx.java
  11. PageMemoryImpl.java
  12. PagePool.java
  13. PagesWriteSpeedBasedThrottle.java
  14. PagesWriteThrottle.java
  15. PagesWriteThrottlePolicy.java
  16. README.md
  17. ReplaceCandidate.java
  18. RobinHoodBackwardShiftHashMap.java
modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/README.md

Apache Ignite Native Peristence Page Memory

This package contains page memory implementation for case persitence is enabled.

Loaded Pages Table

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

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:

  • Checkpoint buffer overflow protection.

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.

  • the whole region marked dirty protection. This type of throttling protects region segments from being completely filled by dirty pages when checkpoint progress is far from completion.

Speed Based Throttling

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.