All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@osdl.org>
To: Mike Galbraith <efault@gmx.de>
Cc: linux-kernel@vger.kernel.org, mingo@elte.hu
Subject: Re: [2.6.16-rc6 patch] fix interactive task starvation
Date: Fri, 17 Mar 2006 23:33:27 -0800	[thread overview]
Message-ID: <20060317233327.787b4d07.akpm@osdl.org> (raw)
In-Reply-To: <1142666985.7881.5.camel@homer>

Mike Galbraith <efault@gmx.de> wrote:
>
> On Fri, 2006-03-17 at 22:22 -0800, Andrew Morton wrote:
> > Mike Galbraith <efault@gmx.de> wrote:
> > >
> > > > Does this have to be a macro?
> > > > 
> > > 
> > > I suppose not, now inlined.
> > > 
> > 
> > It would be nice to uninline the function and then to modify it in a
> > followup patch.  That way, we get to see what changed, which is one of the
> > reasons to not use megamacros (sorry).
> 
> Ok, take 3 below, with updated main comment as well.
> 

Thanks for doing that.  Not really your job, but someone has to do these
things ;)

> 
> Signed-off-by: Mike Galbraith <efault@gmx.de>

You can't trick me that easily - I kept a copy of your changlog!

>  /*
> + * We place interactive tasks back into the active array, if possible.
> + *
> + * To guarantee that this does not starve expired tasks we ignore the
> + * interactivity of a task if the first expired task had to wait more
> + * than a 'reasonable' amount of time. This deadline timeout is
> + * load-dependent, as the frequency of array switched decreases with
> + * increasing number of running tasks. We also ignore the interactivity
> + * if a better static_prio task has expired, and switch periodically
> + * regardless, to ensure that highly interactive tasks do not starve
> + * the less fortunate for unreasonably long periods.
> + */
> +static int expired_starving(runqueue_t *rq)

I'll make that inline..

> +{
> +	int limit;
> +
> +	/*
> +	 * Arrays were recently switched, all is well.
> +	 */
> +	if (!rq->expired_timestamp)
> +		return 0;
> +
> +	limit = STARVATION_LIMIT * rq->nr_running;

In the previous iteration you had, effectively,

	if (!limit)
		return 0;

in here.   But it's now gone.   Deliberate?
	
> +	/*
> +	 * It's time to switch arrays.
> +	 */
> +	if (jiffies - rq->expired_timestamp >= limit)
> +		return 1;
> +
> +	/*
> +	 * There's a better selection in the expired array.
> +	 */
> +	if (rq->curr->static_prio > rq->best_expired_prio)
> +		return 1;
> +
> +	/*
> +	 * All is well.
> +	 */
> +	return 0;
> +}


  reply	other threads:[~2006-03-18  7:36 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-18  5:08 [2.6.16-rc6 patch] fix interactive task starvation Mike Galbraith
2006-03-18  5:15 ` Andrew Morton
2006-03-18  5:50   ` Mike Galbraith
2006-03-18  6:22     ` Andrew Morton
2006-03-18  7:29       ` Mike Galbraith
2006-03-18  7:33         ` Andrew Morton [this message]
2006-03-18  7:48           ` Mike Galbraith
2006-03-18  7:52             ` Andrew Morton
2006-03-18  8:51         ` Ingo Molnar
2006-03-18  8:05 ` Andrew Morton
2006-03-18  8:15   ` Con Kolivas
2006-03-18  9:43     ` Mike Galbraith
2006-03-18  8:52   ` Ingo Molnar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060317233327.787b4d07.akpm@osdl.org \
    --to=akpm@osdl.org \
    --cc=efault@gmx.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.