From: Tejun Heo <tj@kernel.org>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>,
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>,
Andrew Morton <akpm@linux-foundation.org>,
Arjan van de Ven <arjan@linux.intel.com>,
linux-kernel@vger.kernel.org
Subject: Re: + kmod-avoid-deadlock-by-recursive-kmod-call.patch added to -mm tree
Date: Mon, 30 Jan 2012 09:28:51 -0800 [thread overview]
Message-ID: <20120130172851.GD3355@google.com> (raw)
In-Reply-To: <20120130130335.GB11414@redhat.com>
Hello,
On Mon, Jan 30, 2012 at 02:03:35PM +0100, Oleg Nesterov wrote:
> Perhaps we can use another system_wq, but afaics WQ_UNBOUND makes sense
> in this case. I mean, there is no reason to bind this work to any CPU.
> See also below.
I've been trying to nudge people away from using special wqs or flags
unless really necessary. Other than non-reentrancy and strict
ordering, all behaviors are mostly for optimization and using them
incorrectly / spuriously usually doesn't cause any visible failure,
making it very easy to get them wrong and if you have enough of wrong
/ unnecessary usages in tree, the whole thing gets really confusing
and difficult to update in the future.
> > Is it expected consume large
> > amount of CPU cycles?
>
> Currently __call_usermodehelper() does kernel_thread(), this is almost
> all. But it can block waiting for kernel_execve().
Blocking is completely fine on any workqueue. The only reason to
require the use of unbound_wq is if work items would burn a lot of CPU
cycles. In such cases, we want to let the scheduler have full
jurisdiction instead of wq regulating concurrency.
> Not sure this really makes sense, but if we kill khelper_wq perhaps we
> can simplify this code a bit. We can change __call_usermodehelper()
>
> if (wait == UMH_WAIT_PROC)
> - pid = kernel_thread(wait_for_helper, sub_info,
> - CLONE_FS | CLONE_FILES | SIGCHLD);
> + wait_for_helper(...);
> else
>
> IOW, the worker thread itself can do the UMH_WAIT_PROC work. This makes
> this work really "long running", but then we can kill sub_info->complete
> and use flush_work().
Again, long-running in the sense that the work item spending a lot of
time sleeping should be fine on system_wq or any other wq with default
attributes. AFAICS, the things to consider here are...
* If work items are expected to consume large amount of CPU cycles (as
in crypto work items), consider using system_unbound_wq / WQ_UNBOUND.
* If per-domain concurrency limit is necessary (ie. the number of
concurrent work items doing this particular task should be limited
rather than consuming global system_wq limit), a dedicated workqueue
would be better.
Thanks.
--
tejun
next prev parent reply other threads:[~2012-01-30 17:28 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-26 17:56 + kmod-avoid-deadlock-by-recursive-kmod-call.patch added to -mm tree Oleg Nesterov
2012-01-27 2:55 ` Rusty Russell
2012-01-27 14:32 ` Oleg Nesterov
2012-01-29 0:49 ` Rusty Russell
2012-01-29 16:31 ` Oleg Nesterov
2012-01-29 23:26 ` Rusty Russell
2012-01-30 0:25 ` Tejun Heo
2012-01-30 13:03 ` Oleg Nesterov
2012-01-30 17:28 ` Tejun Heo [this message]
2012-02-03 18:00 ` Oleg Nesterov
2012-02-03 19:26 ` Tejun Heo
2012-02-04 12:56 ` + kmod-avoid-deadlock-by-recursive-kmod-call.patch added to-mm tree Tetsuo Handa
2012-02-06 17:19 ` Oleg Nesterov
2012-01-30 12:38 ` + kmod-avoid-deadlock-by-recursive-kmod-call.patch added to -mm tree Oleg Nesterov
-- strict thread matches above, loose matches on Subject: below --
2012-01-26 0:41 akpm
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=20120130172851.GD3355@google.com \
--to=tj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=arjan@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=penguin-kernel@I-love.SAKURA.ne.jp \
--cc=rusty@rustcorp.com.au \
/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.