BIOS was configured as HPET on, windows bcdedit - default.
In eventlog I see
Code: Select all
Event ID: 50
Source: W32time
Type: Warning
The time service detected a time difference of greater than 5000 milliseconds for 900 seconds. The time difference might be caused by synchronization with low-accuracy time sources or by suboptimal network conditions. The time service is no longer synchronized and cannot provide the time to other clients or update the system clock. When a valid time stamp is received from a time service provider, the time service will correct itself.
I started investigating this and found some interesting info, where from 2010 was big problems with SQL server and hypervisors and many windows KB and whitepapers was published about it. I tried to squeeze it:
CPU has timers for each core. Manufacturer doesnt guarantee sync between it, so for accurate timings system need to use HPET.
However, using high-frequency OS timer (1ms as it does steam on launching itself) with unstable per-core TSC timer causing so-called desync, or time drift.
And now we have interesting point - why UNDERclocking CPU helps few people here to get 'stablish' gaming - more cores and higher their frequency causing bigger drift, and any dynamic power management (turboboost, etc) causing even more drift.
After fixing it on prod I tried on my home PC with 16-core 5950x to turn off HPET in bios, set constant CPU voltage, frequency, FSB and disable spread spectrum to fix values as much constant as possible. And looks like it fixed my kb-mouse desync - I can bhop now with mousewheel even on 64 tick server, even not local! Hitreg seems slightly improved, but needs more placebo testing.
However, this is a duct-tape "fix" and needs more deep investigation - why HPET isnt working correctly (BIOS bug?), is it HPET+TSC desync issue or steam bug.