From: Jan Kara <jack@suse.cz>
To: axboe@kernel.dk
Cc: Tejun Heo <tj@kernel.org>,
linux-kernel@vger.kernel.org, Jeff Moyer <jmoyer@redhat.com>,
Jan Kara <jack@suse.com>
Subject: [PATCH 3/5] cfq-iosched: Allow sync noidle workloads to preempt each other
Date: Tue, 12 Jan 2016 16:24:17 +0100 [thread overview]
Message-ID: <1452612259-5480-4-git-send-email-jack@suse.cz> (raw)
In-Reply-To: <1452612259-5480-1-git-send-email-jack@suse.cz>
From: Jan Kara <jack@suse.com>
The original idea with preemption of sync noidle queues (introduced in
commit 718eee0579b8 "cfq-iosched: fairness for sync no-idle queues") was
that we service all sync noidle queues together, we don't idle on any of
the queues individually and we idle only if there is no sync noidle
queue to be served. This intention also matches the original test:
if (cfqd->serving_type == SYNC_NOIDLE_WORKLOAD
&& new_cfqq->service_tree == cfqq->service_tree)
return true;
However since at that time cfqq->service_tree was not set for idling
queues, this test was unreliable and was replaced in commit e4a229196a7c
"cfq-iosched: fix no-idle preemption logic" by:
if (cfqd->serving_type == SYNC_NOIDLE_WORKLOAD &&
cfqq_type(new_cfqq) == SYNC_NOIDLE_WORKLOAD &&
new_cfqq->service_tree->count == 1)
return true;
That was a reliable test but was actually doing something different -
now we preempt sync noidle queue only if the new queue is the only one
busy in the service tree.
These days cfq queue is kept in service tree even if it is idling and
thus the original check would be safe again. But since we actually check
that cfq queues are in the same cgroup, of the same priority class and
workload type (sync noidle), we know that new_cfqq is fine to preempt
cfqq. So just remove the service tree check.
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jan Kara <jack@suse.com>
---
block/cfq-iosched.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index 2544c219c00c..98569c2f373e 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -3969,7 +3969,6 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq,
/* Allow preemption only if we are idling on sync-noidle tree */
if (cfqd->serving_wl_type == SYNC_NOIDLE_WORKLOAD &&
cfqq_type(new_cfqq) == SYNC_NOIDLE_WORKLOAD &&
- new_cfqq->service_tree->count == 2 &&
RB_EMPTY_ROOT(&cfqq->sort_list))
return true;
--
2.6.2
next prev parent reply other threads:[~2016-01-12 15:24 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-12 15:24 [PATCH 0/5 v3] SYNC_NOIDLE preemption for ancestor cgroups Jan Kara
2016-01-12 15:24 ` [PATCH 1/5] cfq-iosched: Don't group_idle if cfqq has big thinktime Jan Kara
2016-01-12 16:17 ` Tejun Heo
2016-01-12 15:24 ` [PATCH 2/5] cfq-iosched: Reorder checks in cfq_should_preempt() Jan Kara
2016-01-12 15:24 ` Jan Kara [this message]
2016-01-12 15:24 ` [PATCH 4/5] cgroup: Export cgroup_is_descendant() Jan Kara
2016-01-12 15:24 ` [PATCH 5/5] cfq-iosched: Allow parent cgroup to preempt its child Jan Kara
2016-01-12 17:10 ` [PATCH 0/5 v3] SYNC_NOIDLE preemption for ancestor cgroups Jens Axboe
2016-02-04 16:43 ` Jan Kara
2016-02-04 16:47 ` Jens Axboe
-- strict thread matches above, loose matches on Subject: below --
2016-01-07 15:28 [PATCH 0/5 v2] " Jan Kara
2016-01-07 15:28 ` [PATCH 3/5] cfq-iosched: Allow sync noidle workloads to preempt each other Jan Kara
2016-01-08 18:13 ` Tejun Heo
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=1452612259-5480-4-git-send-email-jack@suse.cz \
--to=jack@suse.cz \
--cc=axboe@kernel.dk \
--cc=jack@suse.com \
--cc=jmoyer@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=tj@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
Powered by JetHome