On 4/5/07, Artur Skawina <art_k@xxxxx> 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); } } -------------- next part -------------- An HTML attachment was scrubbed... URL: http://www.linuxtv.org/pipermail/vdr/attachments/20070405/15818b07/attachment.htm