Just to correct you: `clock_gettime` is handled by the vDSO, and does not involve an actual syscall for over a decade now.
Re:Overflowing timeout
by antonio2368 on Thursday July 15, 2021 @09:27AM
(#27844389)
I didn't think about the vDSO, and that it's used for `clock_gettime`, so thank you for the information and correction!
It's really hard for me to get a feel of what is okay to use, what is the standard way to do something without actually implementing everything and seeing how it behaves, so information like this help me a lot.
> If they were using unsigned arithmetic then they would've gotten the expected value.
And we did, but we did not expect to get the input values we got, which are explained by your last paragraph: "time stamp counter drift across cores." This was the real problem, and something new we learned.
> use clock_gettime+CLOCK_MONOTONIC
I forgot to include this because I was focused on the solutions we ended up using, but after some research this is 100% correct! We were afraid that too many syscalls during the query execution can produce huge performance hits so we decided to look for a different solution.
All in all, thanks for the comment!