linux-rt-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: Viresh Kumar <viresh.kumar@linaro.org>
Cc: rostedt@goodmis.org, Vincent Guittot <vincent.guittot@linaro.org>,
	pjt@google.com, paul.mckenney@linaro.org, tglx@linutronix.de,
	suresh.b.siddha@intel.com, venki@google.com, mingo@redhat.com,
	peterz@infradead.org, Arvind.Chauhan@arm.com,
	linaro-dev@lists.linaro.org, patches@linaro.org,
	pdsw-power-team@arm.com, linux-kernel@vger.kernel.org,
	linux-rt-users@vger.kernel.org
Subject: Re: [PATCH V2 Resend 3/4] workqueue: Schedule work on non-idle cpu instead of current one
Date: Mon, 7 Jan 2013 07:04:22 -0800	[thread overview]
Message-ID: <20130107150422.GB3926@htj.dyndns.org> (raw)
In-Reply-To: <CAKohpo=hhScCDUnDcqnZx4YzU_8nF1658jmSM_wzsOpSCxXwqA@mail.gmail.com>

Hello, Viresh.

On Mon, Jan 07, 2013 at 03:28:33PM +0530, Viresh Kumar wrote:
> Firstly the root cause of this patchset.
> 
> Myself and some others in Linaro are working on ARM future cores:
> big.LITTLE systems.
> Here we have few very powerful, high power consuming cores (big,
> currently A15's) and
> few very efficient ones (LITTLE, currently A7's).
> 
> The ultimate goal is to save as much power as possible without compromising
> much with performance. For, that we wanted most of the stuff to run on LITTLE
> cores and some performance-demanding stuff on big Cores. There are
> multiple things
> going around in this direction. Now, we thought A15's or big cores
> shouldn't be used
> for running small tasks like timers/workqueues and hence this patch is
> an attempt
> towards reaching that goal.

I see.  My understanding of big.little is very superficial so there
are very good chances that I'm utterly wrong, but to me it seems like
more of a stop-gap solution than something which will have staying
power in the sense that the complexity doesn't seem to have any
inherent reason other than the failure to make the big ones power
efficient enough while idle or under minor load.

Maybe this isn't specific to big.little and heterogeneous cores will
be the way of future with big.little being just a forefront of the
trend.  And even if that's not the case, it definitely doesn't mean
that we can't accomodate big.little, but, at this point, it does make
me a bit more reluctant to make wholesale changes specifically for
big.little.

> Over that we can do some load balancing of works within multiple alive
> cpus, so that
> it can get done quickly. Also, we shouldn't start using an idle cpu
> just for processing
> work :)

The latter part "not using idle cpu just for processing work" does
apply to homogeneous systems too but as I wrote earlier work items
don't spontaneously happen on an idle core.  Something, including
timer, needs to kick it.  So, by definition, a CPU already isn't idle
when a work item starts execution on it.  What am I missing here?

> I have another idea that we can try:
> 
> queue_work_on_any_cpu().
>
> With this we would not break any existing code and can try to migrate
> old users to
> this new infrastructure (atleast the ones which are rearming works from their
> work_handlers). What do you say?

Yeah, this could be a better solution, I think.  Plus, it's not like
finding the optimal cpu is free.

> To take care of the cache locality issue, we can pass an argument to
> this routine,
> that can provide
> - the mask of cpus to schedule this work on
>   OR
> - Sched Level (SD_LEVEL) of cpus to run it.

Let's start simple for now.  If we really need it, we can always add
more later.

Thanks.

-- 
tejun

  parent reply	other threads:[~2013-01-07 15:04 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-06 10:34 [PATCH V2 Resend 0/4] Create sched_select_cpu() and use it for workqueues and timers Viresh Kumar
2012-11-06 10:38 ` [PATCH V2 Resend 3/4] workqueue: Schedule work on non-idle cpu instead of current one Viresh Kumar
     [not found]   ` <ad25c731a6ca1bd1269555245952f05c856a9759.1352196505.git.viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2012-11-26 17:15     ` Tejun Heo
2012-11-27  5:19       ` Viresh Kumar
2012-11-27 12:54         ` Vincent Guittot
     [not found]         ` <CAKohpom9=K976NmyFWtXx2UQyRcLAqsoGw-5AaqXRpSL6uxP_g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-01-04 11:11           ` Viresh Kumar
2013-01-04 15:09             ` Tejun Heo
2013-01-07  9:58               ` Viresh Kumar
2013-01-07 13:28                 ` Steven Rostedt
2013-01-07 17:59                   ` Viresh Kumar
2013-01-07 22:29                     ` Steven Rostedt
2013-01-08  4:03                       ` Viresh Kumar
2013-01-07 15:04                 ` Tejun Heo [this message]
2013-01-07 15:40                   ` Amit Kucheria
2013-01-07 18:07                   ` Viresh Kumar
2013-01-09 18:49                     ` Tejun Heo
2013-01-10  5:04                       ` Viresh Kumar
2012-11-27 13:26   ` Steven Rostedt
2012-11-27 13:48     ` Viresh Kumar
2012-11-27 13:59       ` Steven Rostedt
2012-11-27 14:55         ` Vincent Guittot
2012-11-27 15:04           ` Steven Rostedt
2012-11-27 15:35             ` Vincent Guittot
     [not found] ` <cover.1352196505.git.viresh.kumar-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2012-11-06 10:38   ` [PATCH V2 Resend 1/4] sched: Create sched_select_cpu() to give preferred CPU for power saving Viresh Kumar
2012-11-06 10:38   ` [PATCH V2 Resend 2/4] timer: hrtimer: Don't check idle_cpu() before calling get_nohz_timer_target() Viresh Kumar
2012-11-06 10:38   ` [PATCH V2 Resend 4/4] timer: Migrate running timer Viresh Kumar
2012-11-27 13:47     ` Steven Rostedt
2013-03-20 15:13       ` Viresh Kumar
2013-04-09 14:52         ` Viresh Kumar
2013-04-24 11:22           ` Viresh Kumar
2013-05-13  9:19             ` Viresh Kumar
2013-05-13 10:35               ` Thomas Gleixner
2013-05-22  8:34                 ` Viresh Kumar
2013-05-22  9:06                   ` Peter Zijlstra
2013-05-22  9:23                     ` Viresh Kumar
2013-05-31 10:49                   ` Viresh Kumar
2013-06-18  4:51                     ` Viresh Kumar
2013-07-24  9:17                       ` Viresh Kumar
2013-08-07  9:55                         ` Viresh Kumar
2013-10-04 12:39                           ` Sebastian Andrzej Siewior
2013-10-23  5:55                             ` Viresh Kumar
2012-11-26 15:00 ` [PATCH V2 Resend 0/4] Create sched_select_cpu() and use it for workqueues and timers Viresh Kumar
2012-11-26 16:40   ` Steven Rostedt
     [not found]     ` <1353948027.6276.38.camel-f9ZlEuEWxVcJvu8Pb33WZ0EMvNT87kid@public.gmane.org>
2012-11-26 17:03       ` Paul E. McKenney
2012-11-26 17:35         ` Steven Rostedt
     [not found]           ` <1353951352.6276.43.camel-f9ZlEuEWxVcJvu8Pb33WZ0EMvNT87kid@public.gmane.org>
2012-11-26 19:03             ` Paul E. McKenney
2012-11-26 19:17               ` Steven Rostedt
2012-11-27  6:25     ` Viresh Kumar

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=20130107150422.GB3926@htj.dyndns.org \
    --to=tj@kernel.org \
    --cc=Arvind.Chauhan@arm.com \
    --cc=linaro-dev@lists.linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=patches@linaro.org \
    --cc=paul.mckenney@linaro.org \
    --cc=pdsw-power-team@arm.com \
    --cc=peterz@infradead.org \
    --cc=pjt@google.com \
    --cc=rostedt@goodmis.org \
    --cc=suresh.b.siddha@intel.com \
    --cc=tglx@linutronix.de \
    --cc=venki@google.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;
as well as URLs for NNTP newsgroup(s).