[ 
https://issues.apache.org/jira/browse/IGNITE-3621?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15493822#comment-15493822
 ] 

Andrew Mashenkov commented on IGNITE-3621:
------------------------------------------

Single cleanup worker checks all caches consequently and cleanup only fixed 
number of records.

What If we reduce this limit (e.g. down to 10 or even set time limit) in 
CleanupWorker main thread to make it more responsive. But if expire() method 
returns true in main thread that would means we need cleanup cache more 
aggressively using background cleaners in separate threads.

> Make GridCacheTtlManager singleton
> ----------------------------------
>
>                 Key: IGNITE-3621
>                 URL: https://issues.apache.org/jira/browse/IGNITE-3621
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>    Affects Versions: 1.6
>            Reporter: Eduard Shangareev
>            Assignee: Andrey Martianov
>              Labels: performance
>
> 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.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to