From: Steve Rotolo <steve.rotolo@ccur.com>
To: Con Kolivas <kernel@kolivas.org>
Cc: joe.korty@ccur.com, linux-kernel@vger.kernel.org, bugsy@ccur.com
Subject: Re: SD_SHARE_CPUPOWER breaks scheduler fairness
Date: Thu, 02 Jun 2005 09:30:21 -0400 [thread overview]
Message-ID: <1117719021.1436.56.camel@whiz> (raw)
In-Reply-To: <200506020925.26320.kernel@kolivas.org>
> > Wild thought: how about doing this for the sibling ...
> >
> > rp->nr_running += SOME_BIG_NUMBER
> >
> > when a SCHED_FIFO task starts running on some cpu, and
> > undo the above when the cpu is released. This fools
> > the load balancer into _gradually_ moving tasks off the
> > sibling, when the cpu is hogged by some SCHED_FIFO task,
> > but should have little effect if a SCHED_FIFO task takes
> > little cpu time.
>
> A good thought, and one I had considered. SOME_BIG_NUMBER needs to be
> meaninful for this to work. Ideally what we do is add the effective load from
> the sibling cpu to the pegged cpu. However that's not as useful as it sounds
> because we need to ensure both sibling runqueues are locked every time we
> check the load value of one runqueue, and the last thing I want is to
> introduce yet more locking. Also the value will vary wildly depending on
> whether the task is pegged or not, and this changes in mainline many times in
> less than .1s which means it would throw load balancing way off as the value
> will effectively become meaningless.
>
Just a few more thoughts on this....
I can't help but wonder if a similar problem exists even without HT.
What if the load-balancer decides to keep a sched_normal task on a cpu
that is being dominated by a sched_fifo task. The sched_normal task
should really be "balanced" to a different cpu but because nr_running is
the only balancing criteria that may not happen. Runqueue business
ought to be weighted by the amount of time that sched_fifo tasks on that
runqueue have recently used. So, load = rq->nr_running +
rq->recent_fifo_run_time. I think this would make load-balancing more
correct.
Now back to HT sched_domains... It seems to me that when
SD_SHARE_CPUPOWER is on, recent_fifo_run_time should apply to the whole
domain instead of a single runqueue, so that a cpu's load =
rq->nr_running + sd->recent_fifo_run_time. But I don't know if this
suffers from the same runqueue locking problem that you pointed out.
--
Steve
next prev parent reply other threads:[~2005-06-02 13:29 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-31 17:46 SD_SHARE_CPUPOWER breaks scheduler fairness Steve Rotolo
2005-06-01 2:49 ` Con Kolivas
2005-06-01 14:29 ` Steve Rotolo
2005-06-01 14:47 ` Con Kolivas
2005-06-01 18:41 ` Steve Rotolo
2005-06-01 21:37 ` Con Kolivas
2005-06-01 21:54 ` Con Kolivas
2005-06-01 22:01 ` Steve Rotolo
2005-06-02 3:01 ` Con Kolivas
2005-06-01 23:16 ` Joe Korty
2005-06-01 23:25 ` Con Kolivas
2005-06-02 13:30 ` Steve Rotolo [this message]
2005-06-02 13:34 ` Con Kolivas
2005-06-02 15:48 ` Steve Rotolo
2005-06-03 0:43 ` [PATCH] SCHED: run SCHED_NORMAL tasks with real time tasks on SMT siblings Con Kolivas
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=1117719021.1436.56.camel@whiz \
--to=steve.rotolo@ccur.com \
--cc=bugsy@ccur.com \
--cc=joe.korty@ccur.com \
--cc=kernel@kolivas.org \
--cc=linux-kernel@vger.kernel.org \
/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.