Messages in this thread | | | From | info@engel-in ... | Subject | CLOCK_MONOTONIC after suspend | Date | Wed, 15 Dec 2021 18:30:14 +0100 |
| |
Hi,
I have a comment/question related to this admittedly quite old commit:
- Revert: Unify CLOCK_MONOTONIC and CLOCK_BOOTTIME, https://github.com/torvalds/linux/commit/a3ed0e4393d6885b4af7ce84b437dc696490a530#diff-2278494fe0e3426f0e89d14f1f09e5e24923dc29a0f973250081f70416ade7dc
It states "(...) As reported by several folks systemd and other applications rely on the documented behaviour of CLOCK_MONOTONIC on Linux and break with the above changes. After resume daemons time out and other timeout related issues are observed. Rafael compiled this list: (...)".
From user space perspective similar issues can still be observed. I guess these ostensible time jumps happen because user space is frozen before the kernel fell asleep and vice versa on suspend:
dT = (T_KS_asleep – T_US_asleep) + (T_US_awake – T_KS_awake) // T: point in time, KS: kernel space, US: user space
With a simple user space program that prints out the monotonic time each 100ms along with the day time, I did some measurements on my notebook. It reveals the following discrepancies (time gaps) between the last time stamp written before suspend and the first time stamp after resume:
dT in [s] #1 #2 #3 #4 #5 #6 #7
Suspend2RAM 6.409 6.423 7.451 3.444 7.815 5.655 7.178
Suspend2Disk 5.228 2.683 5.072 5.198 4.806 5.763 6.908
Is this effect known and accepted or is there some way to prevent or mitigate it?
Thanks,
Dirk
| |