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

Make GridCacheTtlManager singleton

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.6
    • 2.8
    • cache

    Description

      Now every cache has own TTL manager, which creates CleanupWorker = new extra thread. This can cause to extra hundreds of threads (redundant context switches = performance penalty).

      Also, under IGNITE-3513 every put can enter critical section to notify worker. Obviously, it is not good from performance point of view.

      So, my proposal is next:
      1. Expiration should be done on every cache action (on exit thread which updates cache should invoke expire).
      2. TtlManager will exist only in one instance.
      3. CleanupWorker will be the only backup if there is no cache activity. It will wake up with some period to check for work (500 ms, for example).

      Moreover, now we keep on-heap pending entries even if a cache is kept off-head. At least, this issue needs discussion.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              EdShangGG Eduard Shangareev
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 20m
                  20m