All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@kernel.org>
To: Kirill Tkhai <ktkhai@parallels.com>
Cc: linux-kernel@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Paul Turner <pjt@google.com>, Oleg Nesterov <oleg@redhat.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Mike Galbraith <umgwanakikbuti@gmail.com>,
	Kirill Tkhai <tkhai@yandex.ru>,
	Tim Chen <tim.c.chen@linux.intel.com>,
	Nicolas Pitre <nicolas.pitre@linaro.org>
Subject: Re: [PATCH v5 0/5] sched: Add on_rq states and remove several double rq locks
Date: Wed, 20 Aug 2014 14:54:28 +0200	[thread overview]
Message-ID: <20140820125428.GA6667@gmail.com> (raw)
In-Reply-To: <1408528040.23412.86.camel@tkhai>


* Kirill Tkhai <ktkhai@parallels.com> wrote:

> v5: New names: TASK_ON_RQ_QUEUED, TASK_ON_RQ_MIGRATING, task_on_rq_migrating()
> and task_on_rq_queued().
> 
>     I've pulled the latest version from peterz/queue.git, and Peter's changes
>     are included.
> 
> This series aims to get rid of some places where locks of two RQs are held
> at the same time.
> 
> Patch [1/5] is a preparation/cleanup. It replaces old (task_struct::on_rq == 1)
> with new (task_struct::on_rq == TASK_ON_RQ_QUEUED) everywhere. No functional changes.
> 
> Patch [2/5] is main in the series. It introduces new TASK_ON_RQ_MIGRATING state and
> teaches scheduler to understand it (we need little changes in try_to_wake_up()
> and task_rq_lock() family). This will be used in the following way:
> 
>         (we are changing task's rq)
> 
>         raw_spin_lock(&src_rq->lock);
> 
>         p = ...; /* Some src_rq task */
> 
>         dequeue_task(src_rq, p, 0);
>         p->on_rq = TASK_ON_RQ_MIGRATING;
>         set_task_cpu(p, dst_cpu);
>         raw_spin_unlock(&src_rq->lock);
> 
>         /*
>          * Now p is dequeued, and both
>          * RQ locks are unlocked, but
>          * its on_rq is not zero.
>          * Nobody can manipulate p
>          * while it's migrating,
>          * even when spinlocks are
>          * unlocked.
>          */
> 
>         raw_spin_lock(&dst_rq->lock);
>         p->on_rq = TASK_ON_RQ_QUEUED;
>         enqueue_task(dst_rq, p, 0);
>         raw_spin_unlock(&dst_rq->lock);
> 
> Patches [3,4,5/5] remove double locks and use new TASK_ON_RQ_MIGRATING state.
> They allow unlocked using of 3-4 function, which looks safe for me.
> 
> The profit is that double_rq_lock() is not need in several places. We reduce
> the total time when RQs are locked.
> 
> ---
> 
> Kirill Tkhai (5):
>       sched: Wrapper for checking task_struct::on_rq
>       sched: Teach scheduler to understand TASK_ON_RQ_MIGRATING state
>       sched: Remove double_rq_lock() from __migrate_task()
>       sched/fair: Remove double_lock_balance() from active_load_balance_cpu_stop()
>       sched/fair: Remove double_lock_balance() from load_balance()
> 
> 
>  kernel/sched/core.c      |  113 +++++++++++++++------------
>  kernel/sched/deadline.c  |   15 ++--
>  kernel/sched/fair.c      |  195 ++++++++++++++++++++++++++++++++--------------
>  kernel/sched/rt.c        |   16 ++--
>  kernel/sched/sched.h     |   13 +++
>  kernel/sched/stop_task.c |    2 
>  6 files changed, 228 insertions(+), 126 deletions(-)
> 
> --
> Signed-off-by: Kirill Tkhai <ktkhai@parallels.com>

Ok, looks good. I picked up this version, with a few minor 
tweaks and fixes to the changelogs.

Thanks,

	Ingo

      reply	other threads:[~2014-08-20 12:54 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-20  9:47 [PATCH v5 0/5] sched: Add on_rq states and remove several double rq locks Kirill Tkhai
2014-08-20 12:54 ` Ingo Molnar [this message]

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=20140820125428.GA6667@gmail.com \
    --to=mingo@kernel.org \
    --cc=ktkhai@parallels.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nicolas.pitre@linaro.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=pjt@google.com \
    --cc=rostedt@goodmis.org \
    --cc=tim.c.chen@linux.intel.com \
    --cc=tkhai@yandex.ru \
    --cc=umgwanakikbuti@gmail.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 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.