Re: Horrendous Audio Stutter - current git

From: Peter Zijlstra
Date: Fri May 02 2008 - 07:08:30 EST


On Fri, 2008-05-02 at 12:35 +0200, Peter Zijlstra wrote:
> On Fri, 2008-05-02 at 12:32 +0200, Frans Pop wrote:
> > On Friday 02 May 2008, Peter Zijlstra wrote:
> > > So by default we have both enabled; could you report if either
> > > NO_NEW_FAIR_SLEEPERS
> > > NEW_FAIR_SLEEPERS + NO_NORMALIZED_SLEEPERS
> > > works for you?
> >
> > Both work for me. Tested with current git head (mainline) + your patch.
> >
> > > Also, could you apply this patch, and report the bonus_max value for
> > > your music player under all three scenarios?
> >
> > I've restarted amarok and the glibc build each time after change to
> > sched_features.
> >
> > # cat sched_features
> > NEW_FAIR_SLEEPERS WAKEUP_PREEMPT START_DEBIT AFFINE_WAKEUPS CACHE_HOT_BUDDY
> > SYNC_WAKEUPS HRTICK NO_DOUBLE_TICK NORMALIZED_SLEEPER DEADLINE
> >
> > => skips in music (amarok)
> >
> > /proc/20734/task/20734/sched:se.bonus_max : 40960.000000
> > /proc/20734/task/20775/sched:se.bonus_max : 40960.000000
> > /proc/20734/task/20779/sched:se.bonus_max : 40960.000000
> > /proc/20734/task/20780/sched:se.bonus_max : 40960.000000
> > /proc/20734/task/20781/sched:se.bonus_max : 40960.000000
> > /proc/20734/task/20782/sched:se.bonus_max : 39.960966
> > /proc/20734/task/20799/sched:se.bonus_max : 40960.000000
>
> Ok, that's _WAY_ too big, something went seriously wrong. Thanks!

In fact, that is exactly 1024 time too large.

How does this work for you:

Index: linux-2.6-2/kernel/sched_fair.c
===================================================================
--- linux-2.6-2.orig/kernel/sched_fair.c
+++ linux-2.6-2/kernel/sched_fair.c
@@ -685,6 +685,7 @@ enqueue_entity(struct cfs_rq *cfs_rq, st
* Update run-time statistics of the 'current'.
*/
update_curr(cfs_rq);
+ account_entity_enqueue(cfs_rq, se);

if (wakeup) {
place_entity(cfs_rq, se, 0);
@@ -695,7 +696,6 @@ enqueue_entity(struct cfs_rq *cfs_rq, st
check_spread(cfs_rq, se);
if (se != cfs_rq->curr)
__enqueue_entity(cfs_rq, se);
- account_entity_enqueue(cfs_rq, se);
}

static void update_avg(u64 *avg, u64 sample)


--
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/