From: Con Kolivas <kernel@kolivas.org>
To: Jens Axboe <axboe@suse.de>
Cc: ck list <ck@vds.kolivas.org>, linux list <linux-kernel@vger.kernel.org>
Subject: [patch] cfq: ioprio inherit rt class
Date: Sat, 27 May 2006 11:50:41 +1000 [thread overview]
Message-ID: <200605271150.41924.kernel@kolivas.org> (raw)
Jens, ml
I was wondering if cfq io priorities should be explicitly set to the realtime
class when no io priority is specified from realtime tasks as in the
following patch? (rt_task() will need to be modified to suit the PI changes in
-mm)
---
Set cfq io priority class to realtime and scale the priority according to the
rt priority when no io priority is explicitly set in realtime tasks.
Signed-off-by: Con Kolivas <kernel@kolivas.org>
---
block/cfq-iosched.c | 4 ++--
include/linux/ioprio.h | 12 +++++++++++-
2 files changed, 13 insertions(+), 3 deletions(-)
Index: linux-2.6.17-rc5-ck2/block/cfq-iosched.c
===================================================================
--- linux-2.6.17-rc5-ck2.orig/block/cfq-iosched.c 2006-05-25 21:32:45.000000000 +1000
+++ linux-2.6.17-rc5-ck2/block/cfq-iosched.c 2006-05-25 23:55:22.000000000 +1000
@@ -1334,10 +1334,10 @@ static void cfq_init_prio_data(struct cf
printk(KERN_ERR "cfq: bad prio %x\n", ioprio_class);
case IOPRIO_CLASS_NONE:
/*
- * no prio set, place us in the middle of the BE classes
+ * Select class and ioprio according to policy and nice
*/
+ cfqq->ioprio_class = task_policy_ioprio_class(tsk);
cfqq->ioprio = task_nice_ioprio(tsk);
- cfqq->ioprio_class = IOPRIO_CLASS_BE;
break;
case IOPRIO_CLASS_RT:
cfqq->ioprio = task_ioprio(tsk);
Index: linux-2.6.17-rc5-ck2/include/linux/ioprio.h
===================================================================
--- linux-2.6.17-rc5-ck2.orig/include/linux/ioprio.h 2006-05-25 23:02:06.000000000 +1000
+++ linux-2.6.17-rc5-ck2/include/linux/ioprio.h 2006-05-25 23:55:22.000000000 +1000
@@ -22,7 +22,7 @@
* class, the default for any process. IDLE is the idle scheduling class, it
* is only served when no one else is using the disk.
*/
-enum {
+enum ioprio_class {
IOPRIO_CLASS_NONE,
IOPRIO_CLASS_RT,
IOPRIO_CLASS_BE,
@@ -51,8 +51,18 @@ static inline int task_ioprio(struct tas
return IOPRIO_PRIO_DATA(task->ioprio);
}
+static inline enum ioprio_class
+ task_policy_ioprio_class(struct task_struct *task)
+{
+ if (rt_task(task))
+ return IOPRIO_CLASS_RT;
+ return IOPRIO_CLASS_BE;
+}
+
static inline int task_nice_ioprio(struct task_struct *task)
{
+ if (rt_task(task))
+ return (task->rt_priority * IOPRIO_BE_NR / MAX_RT_PRIO);
return (task_nice(task) + 20) / 5;
}
--
-ck
next reply other threads:[~2006-05-27 1:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-27 1:50 Con Kolivas [this message]
2006-05-27 2:08 ` [patch] cfq: ioprio inherit rt class Con Kolivas
2006-06-02 17:12 ` [ck] " Jens Axboe
2006-06-03 0:10 ` Con Kolivas
2006-06-03 17:40 ` Lee Revell
2006-06-03 18:52 ` Horst von Brand
2006-06-04 1:37 ` Con Kolivas
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=200605271150.41924.kernel@kolivas.org \
--to=kernel@kolivas.org \
--cc=axboe@suse.de \
--cc=ck@vds.kolivas.org \
--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 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.