Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-8681

Using ExpiryPolicy with persistence causes significant slowdown.

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.7
    • Component/s: cache
    • Labels:

      Description

      Almost all ignite operations calls CU.unwindEvicts() on finish to help to evict expired entries.
      In unwindEvicts(), threads iterate over all node partitions and check every partition PendingTree for expired entries. This costs too much.

      We already have a flag on per-cachegroup basis that indicated ExpiryPolicy is used. It raised once expiring entry has been put to cache or we initialize non-empty pending tree from persistence.
      So, we have to optimize a case when there is no expired pending entries, but pending tree is non-empty.

      We can add some throttling on per-partition basis to reduce useless pending tree lookups.
      E.g. if there is nothing to clean, no thread should check partition during next 100ms interval.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                amashenkov Andrey Mashenkov
                Reporter:
                amashenkov Andrey Mashenkov
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: