smartsched: Tweak the default scheduler intervals

A default timeslice of 20ms means a pathological client can ruin up to
two frames per scheduler tick.  And a fifth of a second is just insane.

Pick two different numbers out of the hat.  A 5ms slice means you can
probably keep up with two or three abusive clients, and letting it burst
to 15ms should give you about all the timeslice you need for a
fullscreen game (that's doing server-side rendering for some reason).

If you're running on a system with a 10ms granularity on SIGALRM, then
this effectively changes the intervals to 10ms and 30ms.  Which is still
better, just not as better.

I suspect this is about as good as we can do without actually going
preemptive, which is an entire other nightmare.

Reviewed-by: Julien Cristau <jcristau@debian.org>
Signed-off-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
Adam Jackson 2013-11-05 10:20:04 -05:00
parent 66310ea289
commit b61ccd5d9d

View File

@ -220,8 +220,9 @@ UpdateCurrentTimeIf(void)
#undef SMART_DEBUG
#define SMART_SCHEDULE_DEFAULT_INTERVAL 20 /* ms */
#define SMART_SCHEDULE_MAX_SLICE 200 /* ms */
/* in milliseconds */
#define SMART_SCHEDULE_DEFAULT_INTERVAL 5
#define SMART_SCHEDULE_MAX_SLICE 15
#if defined(WIN32) && !defined(__CYGWIN__)
Bool SmartScheduleDisable = TRUE;