All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ming Lei <ming.lei@redhat.com>
To: Jan Kara <jack@suse.cz>
Cc: Jens Axboe <axboe@kernel.dk>, linux-block@vger.kernel.org
Subject: Re: [PATCH 1/2] Revert "blk-mq, elevator: Count requests per hctx to improve performance"
Date: Tue, 12 Jan 2021 10:14:14 +0800	[thread overview]
Message-ID: <20210112021414.GB60605@T590> (raw)
In-Reply-To: <20210111164717.21937-2-jack@suse.cz>

On Mon, Jan 11, 2021 at 05:47:16PM +0100, Jan Kara wrote:
> This reverts commit b445547ec1bbd3e7bf4b1c142550942f70527d95.
> 
> Since both mq-deadline and BFQ completely ignore hctx they are passed to
> their dispatch function and dispatch whatever request they deem fit
> checking whether any request for a particular hctx is queued is just
> pointless since we'll very likely get a request from a different hctx
> anyway. In the following commit we'll deal with lock contention in these
> IO schedulers in presence of multiple HW queues in a different way.
> 
> Signed-off-by: Jan Kara <jack@suse.cz>
> ---
>  block/bfq-iosched.c    | 5 -----
>  block/blk-mq.c         | 1 -
>  block/mq-deadline.c    | 6 ------
>  include/linux/blk-mq.h | 4 ----
>  4 files changed, 16 deletions(-)
> 
> diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
> index 9e81d1052091..a99dfaa75a8c 100644
> --- a/block/bfq-iosched.c
> +++ b/block/bfq-iosched.c
> @@ -4640,9 +4640,6 @@ static bool bfq_has_work(struct blk_mq_hw_ctx *hctx)
>  {
>  	struct bfq_data *bfqd = hctx->queue->elevator->elevator_data;
>  
> -	if (!atomic_read(&hctx->elevator_queued))
> -		return false;
> -
>  	/*
>  	 * Avoiding lock: a race on bfqd->busy_queues should cause at
>  	 * most a call to dispatch for nothing
> @@ -5557,7 +5554,6 @@ static void bfq_insert_requests(struct blk_mq_hw_ctx *hctx,
>  		rq = list_first_entry(list, struct request, queuelist);
>  		list_del_init(&rq->queuelist);
>  		bfq_insert_request(hctx, rq, at_head);
> -		atomic_inc(&hctx->elevator_queued);
>  	}
>  }
>  
> @@ -5925,7 +5921,6 @@ static void bfq_finish_requeue_request(struct request *rq)
>  
>  		bfq_completed_request(bfqq, bfqd);
>  		bfq_finish_requeue_request_body(bfqq);
> -		atomic_dec(&rq->mq_hctx->elevator_queued);
>  
>  		spin_unlock_irqrestore(&bfqd->lock, flags);
>  	} else {
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index f285a9123a8b..57f3482b2c26 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -2653,7 +2653,6 @@ blk_mq_alloc_hctx(struct request_queue *q, struct blk_mq_tag_set *set,
>  		goto free_hctx;
>  
>  	atomic_set(&hctx->nr_active, 0);
> -	atomic_set(&hctx->elevator_queued, 0);
>  	if (node == NUMA_NO_NODE)
>  		node = set->numa_node;
>  	hctx->numa_node = node;
> diff --git a/block/mq-deadline.c b/block/mq-deadline.c
> index 800ac902809b..b57470e154c8 100644
> --- a/block/mq-deadline.c
> +++ b/block/mq-deadline.c
> @@ -386,8 +386,6 @@ static struct request *dd_dispatch_request(struct blk_mq_hw_ctx *hctx)
>  	spin_lock(&dd->lock);
>  	rq = __dd_dispatch_request(dd);
>  	spin_unlock(&dd->lock);
> -	if (rq)
> -		atomic_dec(&rq->mq_hctx->elevator_queued);
>  
>  	return rq;
>  }
> @@ -535,7 +533,6 @@ static void dd_insert_requests(struct blk_mq_hw_ctx *hctx,
>  		rq = list_first_entry(list, struct request, queuelist);
>  		list_del_init(&rq->queuelist);
>  		dd_insert_request(hctx, rq, at_head);
> -		atomic_inc(&hctx->elevator_queued);
>  	}
>  	spin_unlock(&dd->lock);
>  }
> @@ -582,9 +579,6 @@ static bool dd_has_work(struct blk_mq_hw_ctx *hctx)
>  {
>  	struct deadline_data *dd = hctx->queue->elevator->elevator_data;
>  
> -	if (!atomic_read(&hctx->elevator_queued))
> -		return false;
> -
>  	return !list_empty_careful(&dd->dispatch) ||
>  		!list_empty_careful(&dd->fifo_list[0]) ||
>  		!list_empty_careful(&dd->fifo_list[1]);
> diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
> index d705b174d346..b4b9604bbfd7 100644
> --- a/include/linux/blk-mq.h
> +++ b/include/linux/blk-mq.h
> @@ -140,10 +140,6 @@ struct blk_mq_hw_ctx {
>  	 * shared across request queues.
>  	 */
>  	atomic_t		nr_active;
> -	/**
> -	 * @elevator_queued: Number of queued requests on hctx.
> -	 */
> -	atomic_t                elevator_queued;
>  
>  	/** @cpuhp_online: List to store request if CPU is going to die */
>  	struct hlist_node	cpuhp_online;
> -- 
> 2.26.2
> 

Reviewed-by: Ming Lei <ming.lei@redhat.com>

-- 
Ming


  reply	other threads:[~2021-01-12  2:15 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-11 16:47 [PATCH 0/2 v3] blk-mq: Improve performance of non-mq IO schedulers with multiple HW queues Jan Kara
2021-01-11 16:47 ` [PATCH 1/2] Revert "blk-mq, elevator: Count requests per hctx to improve performance" Jan Kara
2021-01-12  2:14   ` Ming Lei [this message]
2021-01-11 16:47 ` [PATCH 2/2] blk-mq: Improve performance of non-mq IO schedulers with multiple HW queues Jan Kara
2021-01-12  2:15   ` Ming Lei
2021-01-22 14:11 ` [PATCH 0/2 v3] " Jan Kara
2021-01-25  1:20 ` Jens Axboe
2021-02-03 16:18   ` John Garry
2021-02-03 16:54     ` Jan Kara
  -- strict thread matches above, loose matches on Subject: below --
2021-01-06 10:24 [PATCH 0/2 v2] " Jan Kara
2021-01-06 10:24 ` [PATCH 1/2] Revert "blk-mq, elevator: Count requests per hctx to improve performance" Jan Kara
2020-12-18 21:44 [PATCH 0/2 RFC] blk-mq: Improve performance of non-mq IO schedulers with multiple HW queues Jan Kara
2020-12-18 21:44 ` [PATCH 1/2] Revert "blk-mq, elevator: Count requests per hctx to improve performance" Jan Kara

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=20210112021414.GB60605@T590 \
    --to=ming.lei@redhat.com \
    --cc=axboe@kernel.dk \
    --cc=jack@suse.cz \
    --cc=linux-block@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.