ERTS timeouts don't account for computer suspension
Sun May 10 21:19:55 CEST 2020
I've recently run into an unexpected behaviour of erlcron - 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 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 that appear to control the unexpected
behaviour: "--enable-prefer-elapsed-monotonic-time-during-suspend" and
introduced in OTP 18.0.2.
The default value of the setting configured by either of those two options
is "no" - 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...
More information about the erlang-questions