tree: f5b5a02f88dea32fc7426991e51f66de46d467e2 [path history] [tgz]
  1. CheckpointBufferOverflowWatchdog.java
  2. CheckpointMetricsTracker.java
  3. CheckpointPages.java
  4. ClockPageReplacementFlags.java
  5. ClockPageReplacementPolicy.java
  6. ClockPageReplacementPolicyFactory.java
  7. DelayedDirtyPageStoreWrite.java
  8. DelayedPageReplacementTracker.java
  9. ExponentialBackoff.java
  10. ExponentialBackoffThrottlingStrategy.java
  11. FullPageIdTable.java
  12. IntervalBasedMeasurement.java
  13. LoadedPagesMap.java
  14. package-info.java
  15. PageHeader.java
  16. PageMemoryEx.java
  17. PageMemoryImpl.java
  18. PageMetrics.java
  19. PageMetricsImpl.java
  20. PagePool.java
  21. PageReadWriteManager.java
  22. PageReadWriteManagerImpl.java
  23. PageReplacementPolicy.java
  24. PageReplacementPolicyFactory.java
  25. PagesWriteSpeedBasedThrottle.java
  26. PagesWriteThrottle.java
  27. PagesWriteThrottlePolicy.java
  28. ProgressSpeedCalculation.java
  29. RandomLruPageReplacementPolicy.java
  30. RandomLruPageReplacementPolicyFactory.java
  31. README.md
  32. ReplaceCandidate.java
  33. RobinHoodBackwardShiftHashMap.java
  34. SegmentedLruPageList.java
  35. SegmentedLruPageReplacementPolicy.java
  36. SegmentedLruPageReplacementPolicyFactory.java
  37. SpeedBasedMemoryConsumptionThrottlingStrategy.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.