From: Peter Zijlstra <peterz@infradead.org>
To: Alex Shi <alex.shi@intel.com>
Cc: mingo@redhat.com, tglx@linutronix.de, akpm@linux-foundation.org,
arjan@linux.intel.com, bp@alien8.de, pjt@google.com,
namhyung@kernel.org, efault@gmx.de, morten.rasmussen@arm.com,
vincent.guittot@linaro.org, gregkh@linuxfoundation.org,
preeti@linux.vnet.ibm.com, viresh.kumar@linaro.org,
linux-kernel@vger.kernel.org, len.brown@intel.com,
rafael.j.wysocki@intel.com, jkosina@suse.cz,
clark.williams@gmail.com, tony.luck@intel.com,
keescook@chromium.org, mgorman@suse.de, riel@redhat.com
Subject: Re: [PATCH v4 0/6] sched: use runnable load based balance
Date: Thu, 2 May 2013 12:35:08 +0200 [thread overview]
Message-ID: <20130502103508.GA13196@dyad.programming.kicks-ass.net> (raw)
In-Reply-To: <5181B579.9000808@intel.com>
On Thu, May 02, 2013 at 08:38:17AM +0800, Alex Shi wrote:
> On 3.8 kernel, the first problem commit is 5a505085f043 ("mm/rmap:
> Convert the struct anon_vma::mutex to an rwsem"), It cause much
> imbalance among cpus on aim7 benchmark. The reason is here,
> https://lkml.org/lkml/2013/1/29/84.
Hehe. yeah that one was going to be obvious.. rwsems were known to be totally
bad performers. Not only were they lacking lock stealing but also the spinning.
> But, after we use rwsem lock stealing in 3.9 kernel, commit
> ce6711f3d196f09ca0e, aim7 wakeup won't has clear imbalance issue. And
> then aim7 won't need this extra burst wakeup detection.
OK, that seems like a nice fix for rwsems.. one nit:
+ raw_spin_lock_irq(&sem->wait_lock);
+ /* Try to get the writer sem, may steal from the head writer: */
+ if (flags == RWSEM_WAITING_FOR_WRITE)
+ if (try_get_writer_sem(sem, &waiter)) {
+ raw_spin_unlock_irq(&sem->wait_lock);
+ return sem;
+ }
+ raw_spin_unlock_irq(&sem->wait_lock);
schedule();
That should probably look like:
preempt_disable();
raw_spin_unlock_irq();
preempt_enable_no_resched();
schedule();
Otherwise you might find a performance regression on PREEMPT=y kernels.
> With PJT's patch, we know in first few seconds from wakeup, task's
> runnable load maybe nearly zero. The nearly zero runnable load increases
> the imbalance among cpus. So there are about extra 5% performance drop
> when use runnable load to do balance on aim7(in testing, aim7 will fork
> 2000 threads, and then wait for a trigger, then run as fast as possible).
OK, so what I was asking after is if you changed the scheduler after PJTs
patches landed to deal with this bulk wakeup. Also while aim7 might no longer
trigger the bad pattern what is to say nothing ever will? In particular
anything using pthread_cond_broadcast() is known to be suspect of bulk wakeups.
Anyway, I'll go try and make sense of some of the actual patches.. :-)
next prev parent reply other threads:[~2013-05-02 10:37 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-04-27 5:25 [PATCH v4 0/6] sched: use runnable load based balance Alex Shi
2013-04-27 5:25 ` [PATCH v4 1/6] Revert "sched: Introduce temporary FAIR_GROUP_SCHED dependency for load-tracking" Alex Shi
2013-04-27 5:25 ` [PATCH v4 2/6] sched: set initial value of runnable avg for new forked task Alex Shi
2013-05-02 11:01 ` Peter Zijlstra
2013-04-27 5:25 ` [PATCH v4 3/6] sched: update cpu load after task_tick Alex Shi
2013-04-27 5:25 ` [PATCH v4 4/6] sched: compute runnable load avg in cpu_load and cpu_avg_load_per_task Alex Shi
2013-04-27 5:25 ` [PATCH v4 5/6] sched: consider runnable load average in move_tasks Alex Shi
2013-04-27 5:25 ` [PATCH v4 6/6] sched: consider runnable load average in effective_load Alex Shi
2013-05-02 13:19 ` Peter Zijlstra
2013-05-03 7:39 ` Alex Shi
2013-05-01 12:14 ` [PATCH v4 0/6] sched: use runnable load based balance Peter Zijlstra
2013-05-02 0:38 ` Alex Shi
2013-05-02 10:35 ` Peter Zijlstra [this message]
2013-05-03 7:55 ` Alex Shi
2013-05-03 8:54 ` Alex Shi
2013-05-07 7:51 ` Alex Shi
2013-05-08 16:11 ` Peter Zijlstra
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=20130502103508.GA13196@dyad.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=akpm@linux-foundation.org \
--cc=alex.shi@intel.com \
--cc=arjan@linux.intel.com \
--cc=bp@alien8.de \
--cc=clark.williams@gmail.com \
--cc=efault@gmx.de \
--cc=gregkh@linuxfoundation.org \
--cc=jkosina@suse.cz \
--cc=keescook@chromium.org \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=mingo@redhat.com \
--cc=morten.rasmussen@arm.com \
--cc=namhyung@kernel.org \
--cc=pjt@google.com \
--cc=preeti@linux.vnet.ibm.com \
--cc=rafael.j.wysocki@intel.com \
--cc=riel@redhat.com \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=vincent.guittot@linaro.org \
--cc=viresh.kumar@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox