Re: Kaffeine problem with CFS

Christoph Pfister
2007-04-18T13:21:22Z

2007/4/18, Christoph Pfister <christophpfister@gmail.com>:
> [ Sorry for accidentally dropping CCs ]
>
> 2007/4/18, Christoph Pfister <christophpfister@gmail.com>:
> > 2007/4/18, Ingo Molnar <mingo@elte.hu>:
> > >
> > > * Christoph Pfister <christophpfister@gmail.com> wrote:
> > >
> > > > Or I could try playing around a bit with your patchset and trying to
> > > > reproduce it over here. Because I already have debug builds for
> > > > xine-lib and compiling a new kernel can take place in the background
> > > > it wouldn't be much effort for me.
> > >
> > > that would be great :) Here are the URLs for it. CFS is based on
> > > v2.6.21-rc7:
> > >
> > > http://kernel.org/pub/linux/kernel/v2.6/testing/linux-2.6.21-rc7.tar.bz2
> > >
> > > And the CFS patch is at:
> > >
> > > http://people.redhat.com/mingo/cfs-scheduler/sched-cfs-v2.patch
> > >
> > > rebuild your kernel as usual and boot into it. No extra configuration is
> > > needed, you'll get CFS by default.
> > >
> > > if this kernel builds/boots fine for you then you might also want to
> > > send me a quick note about how it feels, interactivity-wise. And of
> > > course i'm interested in any sort of feedback about problems as well.
> > > I'd like to make CFS as media-playback friendly as possible, so if
> > > there's any problem in that area it would be nice for me to know about
> > > it as soon as possible.
> > >
> > > Ingo
> >
> > Okay - so here are some results (it's strange that gdb goes nuts
> > inside the xine_play call). I have three bts (seems to be fairly easy
> > to reproduce that behaviour over here): Twice while playing an audio
> > cd and once while playing a normal file. The hang usually ends if you
> > wait long enough (something around 30 secs over here).



> > Christoph
> >
> >
> > PS: Haven't analyzed them yet - but doing so now :-)
>
> Ok - one nice thing: In all those bts demux_loop is at demux.c:285 -
> meaing that demux_lock is held and xine_play is waiting for it ...
> The lock should be temporilary unreleased with a sched_yield so that
> the main thread can access it. As you wrote the implementation of this
> function seems to have changed a bit - so I'll replace it with a short
> sleep and try again ...
>
> Christoph

Replacing the sched_yield in demux.c with an usleep(10) stopped those
seeking hangs here (at least I was able to pull the slider back and
forth during 2 mins without trouble compared to the few secs I need
earlier to get a hang).

Christoph