On 4/5/07, Artur Skawina <[EMAIL PROTECTED]> wrote:

Well, the streamdev-client reads data from a ringbuffer and when there
isn't anything
to read it tries to sleep for 1us and loops. This wasn't a problem when
the timer
resolution was in the 1000..10000us range (1000..100Hz); the usleep(1)
call slept
for one or more milliseconds.
With the high-res timers in kernel 2.6.21+ usleep(1) is no longer treated
as
usleep(10000) and the streamdev client is almost unusable; it uses most of
the cpu
and causes hundreds of thousands context switches per second.
This gets rid of the almost-busy-loop.



How about his approach?

--- streamdev/client/filter.c.orig      2007-04-05 20:45:04.000000000 -0700
+++ streamdev/client/filter.c   2007-04-05 20:45:44.000000000 -0700
@@ -135,7 +135,7 @@
                       }
                       m_RingBuffer->Del(TS_SIZE);
               } else
-                       usleep(1);
+                       cCondWait::SleepMs(1);
       }
}
_______________________________________________
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr

Reply via email to