From: Con Kolivas <kernel@kolivas.org>
To: Block Device <blockdevice@gmail.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Increase priority of a workqueue thread ?
Date: Fri, 21 Oct 2005 01:05:20 +1000 [thread overview]
Message-ID: <200510210105.20307.kernel@kolivas.org> (raw)
In-Reply-To: <64c763540510200612s1e3aa7dvefdac28dd8d24106@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 866 bytes --]
On Thu, 20 Oct 2005 23:12, Block Device wrote:
> Hi,
> I am using a custom workqueue thread in my module. How do I increase
> the priority of the workqueue threads ?
> I've seen that each workqueue contains an array of per-cpu structures
> which has a
> task_struct of the thread on a particular cpu. Since these threads are
> created from keventd
> I think they'll have the same priority as keventd. Also the per-cpu
> structure is something which is private to the workqueue
> implementation. Directly using it (from my driver) to increase the
> priority of the workqueue doesnt seem correct to me. Is there any
> interface or standard way of changing the priority of a workqueue.
By strange coincidence I was working on a patch to do this. Here's what I have
so far - I know the code is safe but I don't know if it does as advertised
yet ;)
Cheers,
Con
[-- Attachment #2: set_workqueue_nice.patch --]
[-- Type: text/x-diff, Size: 1643 bytes --]
Index: linux-2.6.14-rc4-ck1/include/linux/workqueue.h
===================================================================
--- linux-2.6.14-rc4-ck1.orig/include/linux/workqueue.h 2005-06-18 23:59:46.000000000 +1000
+++ linux-2.6.14-rc4-ck1/include/linux/workqueue.h 2005-10-11 16:03:09.000000000 +1000
@@ -56,6 +56,7 @@ extern struct workqueue_struct *__create
#define create_singlethread_workqueue(name) __create_workqueue((name), 1)
extern void destroy_workqueue(struct workqueue_struct *wq);
+extern void set_workqueue_nice(struct workqueue_struct *wq, long nice);
extern int FASTCALL(queue_work(struct workqueue_struct *wq, struct work_struct *work));
extern int FASTCALL(queue_delayed_work(struct workqueue_struct *wq, struct work_struct *work, unsigned long delay));
Index: linux-2.6.14-rc4-ck1/kernel/workqueue.c
===================================================================
--- linux-2.6.14-rc4-ck1.orig/kernel/workqueue.c 2005-10-11 15:56:13.000000000 +1000
+++ linux-2.6.14-rc4-ck1/kernel/workqueue.c 2005-10-11 16:03:09.000000000 +1000
@@ -383,6 +383,26 @@ void destroy_workqueue(struct workqueue_
kfree(wq);
}
+void set_workqueue_nice(struct workqueue_struct *wq, long nice)
+{
+ struct task_struct *p;
+ int cpu;
+
+ lock_cpu_hotplug();
+ if (is_single_threaded(wq)) {
+ p = wq->cpu_wq->thread;
+ set_user_nice(p, nice);
+ } else {
+ for_each_online_cpu(cpu) {
+ struct cpu_workqueue_struct *cwq = wq->cpu_wq + cpu;
+
+ p = cwq->thread;
+ set_user_nice(p, nice);
+ }
+ }
+ unlock_cpu_hotplug();
+}
+
static struct workqueue_struct *keventd_wq;
int fastcall schedule_work(struct work_struct *work)
next prev parent reply other threads:[~2005-10-20 15:05 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-10-20 13:12 Increase priority of a workqueue thread ? Block Device
2005-10-20 13:36 ` linux-os (Dick Johnson)
2005-10-20 15:05 ` Con Kolivas [this message]
2005-10-21 6:55 ` Block Device
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=200510210105.20307.kernel@kolivas.org \
--to=kernel@kolivas.org \
--cc=blockdevice@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