[erlang-questions] The timer server: bug or feature?

Serge Aleynikov <>
Thu Apr 16 03:23:40 CEST 2009


This seems rather odd indeed. I suggest you take a look at

ets:tab2list(timer_tab) -> [{{NextUSecSinceEpoch, Ref}, Timer, MFA}]
	Timer = timeout | {repeat, Interval, Pid}

and

ets:tab2list(interval_tab) -> [{Ref, {repeat, Interval, Pid}, MFA}]

and see if the Pids referenced in timer_tab are your gen_servers'.

Also you might want to set up a trace on timer:pid_delete/1 just to see 
if the pids are cleared indeed.

Serge

Scott Lystig Fritchie wrote:
> Hi, all.  I've got an app that uses the timer module liberally,
> specifically timer:send_interval/2.  I also have some regression tests
> that starts hundreds of gen_server and gen_fsm processes that use
> timer:send_interval/2 (usually with a period of 1 second) and are
> stopped a few seconds later ...  both nicely shutdown and
> not-very-nicely stopped by exit(Pid, kill).
> 
> After the regression tests finish and all test processes are dead, I
> find that the timer_server process is consuming about 45% of one of my
> CPU cores.  The undocumented timer:get_status/1 function says:
> 
>     ()6> application:stop(foo).
>     ok
>     ()7> timer:get_status().
>     {{timer_tab,1096},{timer_interval_tab,184}}
> 
> (This is Erlang/OTP R12B-5, on a Linux platform, if that matters.)
> 
> So it seems like there are hundreds of items that are orphaned in the
> timer server's private state.  Is this a bug or feature?  The OTP docs
> say that the caller of send_interval/2 will be link()'ed, which I assume
> means that cleanup should be automatic....
> 
> -Scott
> _______________________________________________
> erlang-questions mailing list
> 
> http://www.erlang.org/mailman/listinfo/erlang-questions
> 




More information about the erlang-questions mailing list