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

John Plevyak commented on TS-1405:
----------------------------------

The current code "should" have a complexity which is bounded by the need to 
scan the entire queue every 5 seconds.  This is necessary because cancelling an 
event involves setting the volatile "cancelled" flag and to not scan them would 
result in running out of memory.  Assuming an event is inserted with a 30 
seconds timeout and waits till it runs, it will be touched 30/5 = 6 + 10 = 16 
times.  For a 300 second timeout it will be touched 300/5 = 60 + 10 = 70 times.

If an event is cancelled (the normal case for timeouts). Then it will be 
touched once (after an average of 2.5 seconds).  So (at least according to the 
design). The cost of the current design should be only a small constant factor 
worse than the time wheel and should average slightly more than 1 touch per 
event which is the best that can be expected.   Of course that is the 
design.... if it is causing problems, then likely there is a bug or something 
about the workload which is causing problems.

The time wheel can bring this down to 1 touch every N seconds with expected 1 
touch per event or 6 and 60 above.

So, I think this is a very reasonable change, assuming that it can deal with 
the out-of-memory issue, and I interested in seeing the benchmarks as I am 
curious as to see how the theory and practice collide.
                
> apply time-wheel scheduler  about event system
> ----------------------------------------------
>
>                 Key: TS-1405
>                 URL: https://issues.apache.org/jira/browse/TS-1405
>             Project: Traffic Server
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: 3.2.0
>            Reporter: kuotai
>            Assignee: kuotai
>             Fix For: 3.3.0
>
>         Attachments: time-wheel.patch
>
>
> when have more and more event in event system scheduler, it's worse. This is 
> the reason why we use inactivecop to handler keepalive. the new scheduler is 
> time-wheel. It's have better time complexity(O(1))

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to