ERTS timeouts don't account for computer suspension

Guilherme Andrade g@REDACTED
Sun May 10 21:19:55 CEST 2020

Hello list,

I've recently run into an unexpected behaviour of erlcron[1] - it doesn't
account for any time period the computer spends suspended - scheduled
events get delayed by equal amounts.

This is because it leverages gen_server timeouts which, in turn, use
bog-standard VM timeouts, which behave in the way I described. I've
confirmed[2] their behaviour by comparing time elapsed until timeout
according to erlang:monotonic_time/1 vs. os:system_time/1.

After delving into the Erlang/OTP source code for a while I realized there
are two configuration options[3] that appear to control the unexpected
behaviour: "--enable-prefer-elapsed-monotonic-time-during-suspend" and
introduced[4] in OTP 18.0.2.

The default value of the setting configured by either of those two options
is "no"[5] - that is, elapsed monotonic time during suspend is not prefered.

I would like to know the rationale for this. Is it for:
- performance reasons? (say, because it's faster and server hardware rarely
suspends, if at all)
- intended behaviour? (contrary to my expectations)

I'd be thankful for your thoughts on this matter and whether you think the
default behaviour should be changed.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the erlang-questions mailing list