tvtime and the Linux 2.6 scheduler

From: Billy Biggs
Date: Sun May 23 2004 - 10:51:21 EST


I am the author of tvtime, a TV application with advanced image
processing algorithms. Some users are complaining about poor
performance under Linux 2.6, and I would like more information about how
tvtime will be treated by the scheduler. Here is an example of the
intended usage:

- Program running as root and SCHED_FIFO
- NTSC, input ~30 fps, each field processed for an output of ~60 fps
- CPU intensive processing, say 9 ms per field on my P3-733
- with a typical AGP card, the X driver takes 4 ms to draw
- Wait using /dev/rtc set to 1024 Hz

for(;;)
9 ms : process frame
4 ms : draw frame
3 ms : wait until next field time using /dev/rtc
9 ms : process frame
4 ms : draw frame
3 ms : block on /dev/video0 for next frame
-----
33 ms : time per NTSC frame

The theory is that Linux classifies this as a CPU hog regardless of
its priority, and preempts tvtime with other processes. Oswald
Buddenhagen describes the effect as this:

"[...] it starts up fine, but after a few seconds (when the scheduler
gathered some stats) ... well, it looks funny: the scene goes roughly
exponentially into slow motion, then there is a frame drop and the
process starts over. this behaviour can be observed at any priority,
which is clearly against the claim "no normally priorized interactive
process will preempt a highly priorized cpu-hog" that i've read
somewhere. the xserver priority does not change anything, either;"

Avoiding root/SCHED_FIFO and using usleep() instead of /dev/rtc seems
to exhibit the same behavior.

Thoughts?

-Billy

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/