From: Frederic Weisbecker <fweisbec@gmail.com>
To: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
Christoph Lameter <cl@linux.com>,
Kevin Hilman <khilman@linaro.org>,
Mike Galbraith <bitbucket@online.de>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
Tejun Heo <tj@kernel.org>, Viresh Kumar <viresh.kumar@linaro.org>
Subject: Re: [PATCH 4/4] workqueue: Include ordered workqueues in anon workqueue sysfs interface
Date: Thu, 3 Apr 2014 17:59:30 +0200 [thread overview]
Message-ID: <20140403155917.GI23338@localhost.localdomain> (raw)
In-Reply-To: <53396A6E.4030607@cn.fujitsu.com>
On Mon, Mar 31, 2014 at 09:15:26PM +0800, Lai Jiangshan wrote:
> On 03/31/2014 08:50 PM, Lai Jiangshan wrote:
>
> Sorry, I'm wrong.
> Tejun had told there is only one default worker pool for ordered workqueues.
>
> It is true. But this pool may share with other non-ordered workqueues which
> maybe have WQ_SYSFS. we should split this pool into two pools.
> one for ordered wqs, one for the rest.
Ah good point, there is a side effect here. Ok the idea of a low level unbound cpumask
should solve that issue as we want every unbound workqueues to be concerned.
[...]
> >> +/* Must be called with wq_unbound_mutex held */
> >> +static int wq_anon_cpumask_set_all(cpumask_var_t cpumask)
> >> +{
> >> struct workqueue_struct *wq;
> >> int ret;
> >>
> >> @@ -3343,15 +3393,9 @@ static int wq_anon_cpumask_set(cpumask_var_t cpumask)
> >> continue;
> >> /* Ordered workqueues need specific treatment */
> >> if (wq->flags & __WQ_ORDERED)
> >> - continue;
> >> -
> >> - attrs = wq_sysfs_prep_attrs(wq);
> >> - if (!attrs)
> >> - return -ENOMEM;
> >> -
> >> - cpumask_copy(attrs->cpumask, cpumask);
> >> - ret = apply_workqueue_attrs(wq, attrs);
> >> - free_workqueue_attrs(attrs);
> >> + ret = wq_ordered_cpumask_set(wq, cpumask);
>
>
>
> After the pool is split. wq_ordered_cpumask_set() should only be called once.
> once is enough for all ordered wqs.
True. I was just worried that the implementation changes in the future and some
ordered unbound workqueues get their own private pool in case we have problems
with works of a workqueue blocking works of another workqueue while they wait on
heavy resources.
The workqueue subsystem usually deals with that by launching new workers on demand
to handle waiting works in the queue. But it doesn't seem to apply on ordered unbound
workqueues because they have max_active=1, so they can't spawn another worker if there
is a work blocking the others. So I wouldn't be surprised if such an issue is resolved
by using private pools on some ordered workqueues.
IIUC.
next prev parent reply other threads:[~2014-04-03 15:59 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-27 17:20 [PATCH 0/4] workqueue: Control cpu affinity of all unbound workqueues v2 Frederic Weisbecker
2014-03-27 17:20 ` [PATCH 1/4] workqueue: Move workqueue bus attr to device attribute Frederic Weisbecker
2014-04-03 7:09 ` Viresh Kumar
2014-04-24 13:48 ` Frederic Weisbecker
2014-03-27 17:21 ` [PATCH 2/4] workqueues: Account unbound workqueue in a seperate list Frederic Weisbecker
2014-03-30 12:57 ` Tejun Heo
2014-04-03 14:48 ` Frederic Weisbecker
2014-04-03 15:01 ` Tejun Heo
2014-04-03 15:43 ` Frederic Weisbecker
2014-03-27 17:21 ` [PATCH 3/4] workqueue: Add anon workqueue sysfs hierarchy Frederic Weisbecker
2014-03-30 13:01 ` Tejun Heo
2014-04-03 14:42 ` Frederic Weisbecker
2014-04-03 14:58 ` Tejun Heo
2014-04-03 15:05 ` Frederic Weisbecker
2014-04-03 7:07 ` Viresh Kumar
2014-03-27 17:21 ` [PATCH 4/4] workqueue: Include ordered workqueues in anon workqueue sysfs interface Frederic Weisbecker
2014-03-31 12:50 ` Lai Jiangshan
2014-03-31 13:15 ` Lai Jiangshan
2014-04-03 15:59 ` Frederic Weisbecker [this message]
2014-04-15 9:58 ` [PATCH] workqueue: allow changing attributions of ordered workqueue Lai Jiangshan
2014-04-15 12:25 ` Frederic Weisbecker
2014-04-15 15:19 ` Lai Jiangshan
2014-04-23 0:04 ` Frederic Weisbecker
2014-04-23 2:16 ` Lai Jiangshan
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=20140403155917.GI23338@localhost.localdomain \
--to=fweisbec@gmail.com \
--cc=bitbucket@online.de \
--cc=cl@linux.com \
--cc=khilman@linaro.org \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=paulmck@linux.vnet.ibm.com \
--cc=tj@kernel.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