From: Tejun Heo <tj@kernel.org>
To: Dinky Verma <dverma249@gmail.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Work queue questions
Date: Fri, 21 Sep 2012 10:49:52 -0700 [thread overview]
Message-ID: <20120921174952.GF7264@google.com> (raw)
In-Reply-To: <CAHCeSFpar4ykz5cr9dLrO5J4r3ZXkwbNkU1O3q=QZs9rFEyB6w@mail.gmail.com>
On Fri, Sep 21, 2012 at 06:35:25PM +0100, Dinky Verma wrote:
> I have one question regarding concurrency managed workqueue. In the
> previous kernel versions, I was using
> create_singlethread_workqueue("driver_wq") e.g workqueue name is
> driver_wq. In my device driver with the latest kernel version, I am
> doing the same to have a support in my device driver for previous
> kernel versions and new kernel version, I started using
> alloc_workqueue (in intention to create single threaded workqueue)
> e.g.
>
> wq = alloc_workqueue("driver_wq", WQ_UNBOUND,1);
>
> create_singlethread_workqueue (Depricated) and alloc_workqueue creates
> work queue both work on the newer kernel versions.
You can use alloc_ordered_workqueue() instead but do you really need
strict ordering among different work items? If not, it's likely that
you don't need to create separate workqueues at all.
> I have created 3 single threaded workqueues. when I do ps on linux
> console, I see the workqueue thread with process id. When I am queuing
> the work simultaneously on these worker threads, I found that threads
> named with Kworker/X.Y will process the work from the work queue not
> the one that had been created create_singlethread_workqueue.
>
> When I schedule the three works at the same time, I saw sometimes one
> Kworker/X.Y thread processes all work items.
>
> The question is why the main worker thread that I created does not
> process the work that is intended for it why instead kworker will
> process it? I have queued the work using queue_work(wq,
> worker_struct).
The kthread named after the workqueue is the rescuer which kicks in
iff work execution can't make forward progress due to memory pressure.
Normally all work items are served by worker threads in shared worker
pool. What kind of driver is it? Does it sit in memory reclaim path?
Thanks.
--
tejun
next prev parent reply other threads:[~2012-09-21 17:50 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-21 17:35 Work queue questions Dinky Verma
2012-09-21 17:49 ` Tejun Heo [this message]
2012-09-21 18:30 ` Deepawali Verma
2012-09-21 18:35 ` Tejun Heo
2012-09-21 19:26 ` Deepawali Verma
2012-09-21 19:27 ` Tejun Heo
2012-09-21 19:35 ` Deepawali Verma
2012-09-21 19:40 ` Tejun Heo
2012-09-22 4:24 ` anish singh
2012-09-22 5:27 ` Daniel Taylor
2012-09-22 6:05 ` anish singh
2012-09-22 6:12 ` Tejun Heo
2012-09-22 6:18 ` Daniel Taylor
2012-09-24 7:25 ` Deepawali Verma
[not found] ` <CAK-9PRB7KvPNgcsXiNG08-7OdrkkNc2ushusXh9rVm93J0xcHA@mail.gmail.com>
[not found] ` <CAHCeSFqmeOkKySxMUXgtnev+HL-NC6MdmeuDYONymYaNczb7RA@mail.gmail.com>
2012-09-24 16:56 ` Deepawali Verma
2012-09-24 18:10 ` Tejun Heo
2012-09-24 19:57 ` Deepawali Verma
2012-09-24 20:08 ` Tejun Heo
2012-09-24 20:52 ` Deepawali Verma
2012-09-24 20:54 ` Tejun Heo
2012-09-25 3:05 ` anish singh
2012-09-24 17:07 ` Chinmay V S
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=20120921174952.GF7264@google.com \
--to=tj@kernel.org \
--cc=dverma249@gmail.com \
--cc=linux-kernel@vger.kernel.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