The sleep_when_meeting_framerate_headroom_ms convar was removed recently and I 
wanted to explain why. Previously on Linux we would sleep one millisecond at a 
time, and then busy wait for the remainder of the time. The 
sleep_when_meeting_framerate_headroom_ms convar let server operators control 
the balance between precise frame times and wasting CPU time by specifying how 
long to busy wait for.

We changed the behavior so that we now sleep until the exact correct time of 
when the frame should start using nanosleep. This makes spinning unnecessary. 
There is no tradeoff to make now. We sleep until the frame time and then wake 
up on time, without spinning. On our servers this reduced CPU consumption by a 
few percent without affecting frame variance.

This change also improves efficiency by not having the server process waking up 
every millisecond just to confirm that it is not yet time to do any work. 
Reducing CPU usage means you may be able to run more servers on each machine, 
or you have just have a slightly lower power bill.

sleep_when_meeting_framerate should always be set to true (non-zero) because 
constantly spinning wastes huge amounts of CPU time and electricity and may 
actually give worse variance.

We sometimes remove convars that server operators have been using for years 
without explaining why because we don't realize that these convars are heavily 
used. We try to only remove convars when they are truly unnecessary, and I hope 
this explanation makes sense. If not then let me know.

_______________________________________________
Csgo_servers mailing list
[email protected]
https://list.valvesoftware.com/cgi-bin/mailman/listinfo/csgo_servers

Reply via email to