From: "Gregory Haskins" <ghaskins@novell.com>
To: "Nick Piggin" <nickpiggin@yahoo.com.au>
Cc: <mingo@elte.hu>, <rostedt@goodmis.org>, <peterz@infradead.org>,
<tglx@linutronix.de>, "David Bahi" <DBahi@novell.com>,
<linux-kernel@vger.kernel.org>, <linux-rt-users@vger.kernel.org>
Subject: Re: [PATCH 3/3] sched: terminate newidle balancing once at least one task has moved over
Date: Mon, 23 Jun 2008 20:59:25 -0600 [thread overview]
Message-ID: <48602ACD.BA47.005A.0@novell.com> (raw)
In-Reply-To: <200806241146.35112.nickpiggin@yahoo.com.au>
>>> On Mon, Jun 23, 2008 at 9:46 PM, in message
<200806241146.35112.nickpiggin@yahoo.com.au>, Nick Piggin
<nickpiggin@yahoo.com.au> wrote:
> On Tuesday 24 June 2008 12:39, Gregory Haskins wrote:
>> Hi Nick,
>>
>> >>> On Mon, Jun 23, 2008 at 8:50 PM, in message
>>
>> <200806241050.12028.nickpiggin@yahoo.com.au>, Nick Piggin
>>
>> <nickpiggin@yahoo.com.au> wrote:
>> > On Tuesday 24 June 2008 09:04, Gregory Haskins wrote:
>> >> Inspired by Peter Zijlstra.
>> >
>> > Is this really getting tested well? Because at least for SCHED_OTHER
>> > tasks,
>>
>> Note that this only affects SCHED_OTHER. RT tasks are handled with a
>> different algorithm.
>>
>> > the newidle balancer is still supposed to be relatively
>> > conservative and not over balance too much.
>>
>> In our testing, newidle is degrading the system (at least for certain
>> workloads). Oprofile was showing that newidle can account for 60-80% of
>> the CPU during our benchmark runs. Turning off newidle *completely* by
>> commenting out idle_balance() boosts netperf performance by 200% for our
>> 8-core to 8-core UDP transaction test. Obviously neutering it is not
>> sustainable as a general solution, so we are trying to reduce its negative
>> impact.
>
> Hmm. I'd like to see an attempt to be made to tuning the algorithm
> so that newidle actually won't cause any tasks to be balanced in
> this case. That seems like the right thing to do, doesn't it?
Agreed. I'm working on it, but its not quite ready yet :)
>
> Of course... tuning the whole balancer on the basis of a crazy
> netperf benchmark is... dangerous :)
Agreed. I am working on a general algorithm to make the
RT and CFS tasks "play nice" with each other. This netperf test
was chosen because it is particularly hard-hit by the current
problems in this space. But I agree we cant tune it just for
that one benchmark. I am hoping when completed this work will
help the entire system :)
I will add you to the CC list when I send these patches out.
>
>
>> It is not clear whether the problem is that newidle is over-balancing the
>> system, or that newidle is simply running too frequently as a symptom of a
>> system that has a high frequency of context switching (such as -rt). I
>> suspected the latter, so I was attracted to Peter's idea based on the
>> concept of shortening the time we execute this function. But I have to
>> admit, unlike 1/3 and 2/3 which I have carefully benchmarked individually
>> and know make a positive performance impact, I pulled this in more on
>> theory. I will try to benchmark this individually as well.
>>
>> > By the time you have
>> > done all this calculation and reached here, it will be a loss to only
>> > move one task if you could have moved two and halved your newidle
>> > balance rate...
>>
>> Thats an interesting point that I did not consider, but note that a very
>> significant chunk of the overhead I believe comes from the
>> double_lock/move_tasks code after the algorithmic complexity is completed.
>
> And that double lock will be amortized if you can move 2 tasks at once,
> rather than 1 task each 2 times.
Thats a good point.
>
>
>> I believe the primary motivation of this patch is related to reducing the
>> overall latency in the schedule() critical section. Currently this
>> operation can perform an unbounded move_task operation in a
>> preempt-disabled region (which, as an aside, is always SCHED_OTHER
>> related).
>
> Maybe putting some upper cap on it, I could live with. Cutting off at
> one task I think needs a lot more thought and testing.
Perhaps we could reuse the sched_nr_migrations as the threshold?
-Greg
next prev parent reply other threads:[~2008-06-24 1:59 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-06-23 23:04 [PATCH 0/3] RT: scheduler newidle enhancements Gregory Haskins
2008-06-23 23:04 ` [PATCH 1/3] sched: enable interrupts and drop rq-lock during newidle balancing Gregory Haskins
2008-06-24 0:11 ` Steven Rostedt
2008-06-24 10:13 ` Peter Zijlstra
2008-06-24 13:15 ` [PATCH 1/3] sched: enable interrupts and drop rq-lock duringnewidle balancing Gregory Haskins
2008-06-24 12:24 ` Peter Zijlstra
2008-06-24 12:39 ` [PATCH 1/3] sched: enable interrupts and drop rq-lockduringnewidle balancing Gregory Haskins
2008-06-23 23:04 ` [PATCH 2/3] sched: only run newidle if previous task was CFS Gregory Haskins
2008-06-24 9:58 ` Peter Zijlstra
2008-06-24 10:38 ` Peter Zijlstra
2008-06-23 23:04 ` [PATCH 3/3] sched: terminate newidle balancing once at least one task has moved over Gregory Haskins
2008-06-24 0:50 ` Nick Piggin
2008-06-24 1:07 ` Steven Rostedt
2008-06-24 1:26 ` Nick Piggin
2008-06-24 2:39 ` Gregory Haskins
2008-06-24 1:46 ` Nick Piggin
2008-06-24 2:59 ` Gregory Haskins [this message]
2008-06-24 10:13 ` Peter Zijlstra
2008-06-24 13:18 ` [PATCH 3/3] sched: terminate newidle balancing once at leastone " Gregory Haskins
2008-06-24 13:31 ` Peter Zijlstra
2008-06-24 16:55 ` [PATCH 3/3] sched: terminate newidle balancing once atleastone " Gregory Haskins
2008-06-24 19:44 ` Peter Zijlstra
2008-06-24 0:15 ` [PATCH 0/3] RT: scheduler newidle enhancements Steven Rostedt
2008-06-24 1:51 ` Gregory Haskins
-- strict thread matches above, loose matches on Subject: below --
2008-06-24 14:15 [PATCH 0/3] RT: scheduler newidle enhancements v2 Gregory Haskins
2008-06-24 14:16 ` [PATCH 3/3] sched: terminate newidle balancing once at least one task has moved over Gregory Haskins
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=48602ACD.BA47.005A.0@novell.com \
--to=ghaskins@novell.com \
--cc=DBahi@novell.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=nickpiggin@yahoo.com.au \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
/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.