From: Michael Neuling <mikey@neuling.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Suresh Siddha <suresh.b.siddha@intel.com>,
Gautham R Shenoy <ego@in.ibm.com>,
linux-kernel@vger.kernel.org, linuxppc-dev@ozlabs.org,
Ingo Molnar <mingo@elte.hu>
Subject: Re: [PATCH 1/5] sched: fix capacity calculations for SMT4
Date: Wed, 14 Apr 2010 14:28:37 +1000 [thread overview]
Message-ID: <2906.1271219317@neuling.org> (raw)
In-Reply-To: <1271161766.4807.1280.camel@twins>
In message <1271161766.4807.1280.camel@twins> you wrote:
> On Fri, 2010-04-09 at 16:21 +1000, Michael Neuling wrote:
> > When calculating capacity we use the following calculation:
> >=20
> > capacity =3D DIV_ROUND_CLOSEST(power, SCHED_LOAD_SCALE);
> >=20
> > In SMT2, power will be 1178/2 (provided we are not scaling power with
> > freq say) and SCHED_LOAD_SCALE will be 1024, resulting in capacity
> > being 1.
> >=20
> > With SMT4 however, power will be 1178/4, hence capacity will end up as
> > 0.
> >=20
> > Fix this by ensuring capacity is always at least 1 after this
> > calculation.
> >=20
> > Signed-off-by: Michael Neuling <mikey@neuling.org>
> > ---
> > I'm not sure this is the correct fix but this works for me. =20
>
> Right, so I suspect this will indeed break some things.
>
> We initially allowed 0 capacity for when a cpu is consumed by an RT task
> and there simply isn't much capacity left, in that case you really want
> to try and move load to your sibling cpus if possible.
Changing the CPU power based on what tasks are running on them seems a
bit wrong to me. Shouldn't we keep those concepts separate?
> However you're right that this goes awry in your case.
>
> One thing to look at is if that 15% increase is indeed representative
> for the power7 cpu, it having 4 SMT threads seems to suggest there was
> significant gains, otherwise they'd not have wasted the silicon.
There are certainly, for most workloads, per core gains for SMT4 over
SMT2 on P7. My kernels certainly compile faster and that's the only
workload anyone who matters cares about.... ;-)
> (The broken x86 code was meant to actually compute the SMT gain, so that
> we'd not have to guess the 15%)
>
> Now, increasing this will only marginally fix the issue, since if you
> end up with 512 per thread it only takes a very tiny amount of RT
> workload to drop below and end up at 0 again.
I tried initialled to make smt_gain programmable and at 2048 per core
(512 per thread), the packing became unstable, as you intimated.
> One thing we could look at is using the cpu base power to compute
> capacity from. We'd have to add another field to sched_group and store
> power before we do the scale_rt_power() stuff.
Separating capacity from what RT tasks are running seems like a good
idea to me.
This would fix the RT issue, but it's not clear to me how you are
suggesting fixing the rounding down to 0 SMT4 issue. Are you suggesting
we bump smt_gain to say 2048 + 15%? Or are you suggesting we separate
the RT tasks out from capacity and keep the max(1, capacity) that I've
added? Or something else?
Would another possibility be changing capacity a scaled value (like
cpu_power is now) rather than a small integer as it is now. For
example, a scaled capacity of 1024 would be equivalent to a capacity of
1 now. This might enable us to handle partial capacities better? We'd
probably have to scale a bunch of nr_running too.
Mikey
next prev parent reply other threads:[~2010-04-14 4:28 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-09 6:21 [PATCH 0/5] sched: asymmetrical packing for POWER7 SMT4 Michael Neuling
2010-04-09 6:21 ` [PATCH 3/5] powerpc: enabled asymmetric SMT scheduling on POWER7 Michael Neuling
2010-04-09 6:48 ` Michael Neuling
2010-04-09 6:21 ` [PATCH 4/5] sched: Mark the balance type for use in need_active_balance() Michael Neuling
2010-04-13 12:29 ` Peter Zijlstra
2010-04-15 4:15 ` Michael Neuling
2010-04-09 6:21 ` [PATCH 2/5] sched: add asymmetric packing option for sibling domain Michael Neuling
2010-04-13 12:29 ` Peter Zijlstra
2010-04-14 6:09 ` Michael Neuling
2010-04-09 6:21 ` [PATCH 1/5] sched: fix capacity calculations for SMT4 Michael Neuling
2010-04-13 12:29 ` Peter Zijlstra
2010-04-14 4:28 ` Michael Neuling [this message]
2010-04-16 13:58 ` Peter Zijlstra
2010-04-18 21:34 ` Michael Neuling
2010-04-19 14:49 ` Peter Zijlstra
2010-04-19 20:45 ` Michael Neuling
2010-04-29 6:55 ` Michael Neuling
2010-05-31 8:33 ` Peter Zijlstra
2010-06-01 22:52 ` Vaidyanathan Srinivasan
2010-06-03 8:56 ` Peter Zijlstra
2010-06-07 15:06 ` Srivatsa Vaddagiri
2010-04-09 6:21 ` [PATCH 5/5] sched: make fix_small_imbalance work with asymmetric packing Michael Neuling
2010-04-13 12:29 ` Peter Zijlstra
2010-04-14 1:31 ` Suresh Siddha
2010-04-15 5:06 ` Michael Neuling
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=2906.1271219317@neuling.org \
--to=mikey@neuling.org \
--cc=ego@in.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=suresh.b.siddha@intel.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).