2009-12-08 07:47:53

by Gui, Jianfeng/归 剑峰

[permalink] [raw]
Subject: [PATCH] cfq: Optimization for close cooperating queue searching

It doesn't make any sense to try to find out a close cooperating
queue if current cfqq is the only one in the group.

Signed-off-by: Gui Jianfeng <[email protected]>
---
block/cfq-iosched.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
index cfb0b2f..89b5dd9 100644
--- a/block/cfq-iosched.c
+++ b/block/cfq-iosched.c
@@ -1750,6 +1750,12 @@ static struct cfq_queue *cfq_close_cooperator(struct cfq_data *cfqd,
return NULL;

/*
+ * Don't search priority tree if it's the only queue in the group.
+ */
+ if (cur_cfqq->cfqg->nr_cfqq == 1)
+ return NULL;
+
+ /*
* We should notice if some of the queues are cooperating, eg
* working closely on the same area of the disk. In that case,
* we can group them together and don't waste time idling.
--
1.5.4.rc3


2009-12-08 07:54:46

by Jens Axboe

[permalink] [raw]
Subject: Re: [PATCH] cfq: Optimization for close cooperating queue searching

On Tue, Dec 08 2009, Gui Jianfeng wrote:
> It doesn't make any sense to try to find out a close cooperating
> queue if current cfqq is the only one in the group.
>
> Signed-off-by: Gui Jianfeng <[email protected]>
> ---
> block/cfq-iosched.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
> index cfb0b2f..89b5dd9 100644
> --- a/block/cfq-iosched.c
> +++ b/block/cfq-iosched.c
> @@ -1750,6 +1750,12 @@ static struct cfq_queue *cfq_close_cooperator(struct cfq_data *cfqd,
> return NULL;
>
> /*
> + * Don't search priority tree if it's the only queue in the group.
> + */
> + if (cur_cfqq->cfqg->nr_cfqq == 1)
> + return NULL;
> +
> + /*
> * We should notice if some of the queues are cooperating, eg
> * working closely on the same area of the disk. In that case,
> * we can group them together and don't waste time idling.
> --
> 1.5.4.rc3

Good point, thanks applied.

--
Jens Axboe

2009-12-08 14:42:40

by Vivek Goyal

[permalink] [raw]
Subject: Re: [PATCH] cfq: Optimization for close cooperating queue searching

On Tue, Dec 08, 2009 at 03:43:41PM +0800, Gui Jianfeng wrote:
> It doesn't make any sense to try to find out a close cooperating
> queue if current cfqq is the only one in the group.
>
> Signed-off-by: Gui Jianfeng <[email protected]>

Thanks Gui. Looks good.

Vivek

> ---
> block/cfq-iosched.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
> index cfb0b2f..89b5dd9 100644
> --- a/block/cfq-iosched.c
> +++ b/block/cfq-iosched.c
> @@ -1750,6 +1750,12 @@ static struct cfq_queue *cfq_close_cooperator(struct cfq_data *cfqd,
> return NULL;
>
> /*
> + * Don't search priority tree if it's the only queue in the group.
> + */
> + if (cur_cfqq->cfqg->nr_cfqq == 1)
> + return NULL;
> +
> + /*
> * We should notice if some of the queues are cooperating, eg
> * working closely on the same area of the disk. In that case,
> * we can group them together and don't waste time idling.
> --
> 1.5.4.rc3