From: Vaidyanathan Srinivasan <svaidy@linux.vnet.ibm.com>
To: Peter Zijlstra <peterz@infradead.org>,
Linux Kernel <linux-kernel@vger.kernel.org>,
Suresh B Siddha <suresh.b.siddha@intel.com>,
Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>,
Ingo Molnar <mingo@elte.hu>, Dipankar Sarma <dipankar@in.ibm.com>,
Vatsa <vatsa@linux.vnet.ibm.com>,
Gautham R Shenoy <ego@in.ibm.com>,
Andi Kleen <andi@firstfloor.org>,
David Collier-Brown <davecb@sun.com>,
Tim Connors <tconnors@astro.swin.edu.au>,
Max Krasnyansky <maxk@qualcomm.com>,
Gregory Haskins <gregory.haskins@gmail.com>
Subject: Re: [RFC PATCH v5 4/7] sched: bias task wakeups to preferred semi-idle packages
Date: Mon, 15 Dec 2008 17:55:29 +0530 [thread overview]
Message-ID: <20081215122529.GR5457@dirshya.in.ibm.com> (raw)
In-Reply-To: <20081215084642.GJ18403@balbir.in.ibm.com>
* Balbir Singh <balbir@linux.vnet.ibm.com> [2008-12-15 14:16:42]:
> * Peter Zijlstra <peterz@infradead.org> [2008-12-15 09:33:04]:
>
> > On Mon, 2008-12-15 at 09:25 +0100, Peter Zijlstra wrote:
> > > On Mon, 2008-12-15 at 12:31 +0530, Balbir Singh wrote:
> > >
> > > > > kernel/sched_fair.c | 17 +++++++++++++++++
> > > > > 1 files changed, 17 insertions(+), 0 deletions(-)
> > > > >
> > > > > diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
> > > > > index 98345e4..939f2a1 100644
> > > > > --- a/kernel/sched_fair.c
> > > > > +++ b/kernel/sched_fair.c
> > > > > @@ -1027,6 +1027,23 @@ static int wake_idle(int cpu, struct task_struct *p)
> > > > > cpumask_t tmp;
> > > > > struct sched_domain *sd;
> > > > > int i;
> > > > > + unsigned int chosen_wakeup_cpu;
> > > > > + int this_cpu;
> > > > > +
> > > > > + /*
> > > > > + * At POWERSAVINGS_BALANCE_WAKEUP level, if both this_cpu and prev_cpu
> > > > > + * are idle and this is not a kernel thread and this task's affinity
> > > > > + * allows it to be moved to preferred cpu, then just move!
> > > > > + */
> > > > > +
> > > > > + this_cpu = smp_processor_id();
> > > > > + chosen_wakeup_cpu =
> > > > > + cpu_rq(this_cpu)->rd->sched_mc_preferred_wakeup_cpu;
> > > > > +
> > > > > + if (sched_mc_power_savings >= POWERSAVINGS_BALANCE_WAKEUP &&
> > > > > + idle_cpu(cpu) && idle_cpu(this_cpu) && p->mm &&
> > > >
> > > > The p->mm check is racy, it needs to be done under task_lock(). The
> > > > best way to check for a kernel thread is get_task_mm(), followed by
> > > > put_task_mm() is the mm is not NULL. We also need to check to see if
> > > > the task is _hot_ on cpu. We should negate this optimization in case
> > > > chosen_wakeup_cpu is idle, so check for that as well.
> > >
> > > Sure its racy, but so what?
> > >
> > > The worst I can see it that we exclude a dying task from this logic,
> > > which isn't a problem at all, since its dying anyway.
> >
> > At which point I seriously doubt it'd still be on the rq anyway.
> >
>
> I forgot to mention that, the check should be (p->mm && !(p->flags & PF_KTHREAD))
I can check for PF_KTHREAD for now. However, I should reduce the
number of checks since this may slow down wake_idle for sched_mc=2.
We can tolerate p->mm check on a dying process as Peter has suggested,
hence we don't need to protect it. We are not going to access any
contents of the mm struct.
If PF_KTHREAD is only being used by AIO, then I feel we can drop the
check since the threads will not have affinity and they can be moved
to other cpus anyway.
The main reason for skipping kthread is that they may be using per-cpu
variables and sleep/preempted. I did not want the wake_idle() logic
to move them around forcefully. This is not the general case and this
situation should not happen.
Second reason is to optimise on the affinity check since most of the
kthreads have affinity and cannot be moved.
This condition check needs optimisation after getting the framework
functionally correct and useful.
--Vaidy
next prev parent reply other threads:[~2008-12-15 12:26 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-11 17:42 [RFC PATCH v5 0/7] Tunable sched_mc_power_savings=n Vaidyanathan Srinivasan
1970-01-01 0:13 ` Pavel Machek
2008-12-14 20:08 ` Vaidyanathan Srinivasan
2008-12-15 8:18 ` Peter Zijlstra
2008-12-11 17:42 ` [RFC PATCH v5 1/7] sched: Framework for sched_mc/smt_power_savings=N Vaidyanathan Srinivasan
2008-12-11 18:55 ` Balbir Singh
2008-12-11 19:07 ` Vaidyanathan Srinivasan
2008-12-11 17:42 ` [RFC PATCH v5 2/7] sched: favour lower logical cpu number for sched_mc balance Vaidyanathan Srinivasan
2008-12-15 6:12 ` Balbir Singh
2008-12-15 12:05 ` Vaidyanathan Srinivasan
2008-12-11 17:42 ` [RFC PATCH v5 3/7] sched: nominate preferred wakeup cpu Vaidyanathan Srinivasan
2008-12-15 6:40 ` Balbir Singh
2008-12-15 12:14 ` Vaidyanathan Srinivasan
2008-12-11 17:43 ` [RFC PATCH v5 4/7] sched: bias task wakeups to preferred semi-idle packages Vaidyanathan Srinivasan
2008-12-15 7:01 ` Balbir Singh
2008-12-15 8:25 ` Peter Zijlstra
2008-12-15 8:33 ` Peter Zijlstra
2008-12-15 8:46 ` Balbir Singh
2008-12-15 12:25 ` Vaidyanathan Srinivasan [this message]
2008-12-15 18:02 ` Balbir Singh
2008-12-16 7:25 ` Vaidyanathan Srinivasan
2008-12-15 8:43 ` Balbir Singh
2008-12-11 17:43 ` [RFC PATCH v5 5/7] sched: activate active load balancing in new idle cpus Vaidyanathan Srinivasan
2008-12-11 17:43 ` [RFC PATCH v5 6/7] sched: add SD_BALANCE_NEWIDLE at MC and CPU level for sched_mc>0 Vaidyanathan Srinivasan
2008-12-11 17:43 ` [RFC PATCH v5 7/7] sched: idle_balance() does not call load_balance_newidle() Vaidyanathan Srinivasan
2008-12-15 7:02 ` Balbir Singh
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=20081215122529.GR5457@dirshya.in.ibm.com \
--to=svaidy@linux.vnet.ibm.com \
--cc=andi@firstfloor.org \
--cc=davecb@sun.com \
--cc=dipankar@in.ibm.com \
--cc=ego@in.ibm.com \
--cc=gregory.haskins@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maxk@qualcomm.com \
--cc=mingo@elte.hu \
--cc=peterz@infradead.org \
--cc=suresh.b.siddha@intel.com \
--cc=tconnors@astro.swin.edu.au \
--cc=vatsa@linux.vnet.ibm.com \
--cc=venkatesh.pallipadi@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
all inboxes | Powered by JetHome®