From: Omar Sandoval <osandov@osandov.com>
To: Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org, osandov@fb.com, efault@gmx.de,
paolo.valente@linaro.org
Subject: Re: [PATCH 7/9] bfq-iosched: update shallow depth to smallest one used
Date: Thu, 10 May 2018 10:03:06 -0700 [thread overview]
Message-ID: <20180510170306.GG30485@vader> (raw)
In-Reply-To: <1525969467-12476-8-git-send-email-axboe@kernel.dk>
On Thu, May 10, 2018 at 10:24:25AM -0600, Jens Axboe wrote:
> If our shallow depth is smaller than the wake batching of sbitmap,
> we can introduce hangs. Ensure that sbitmap knows how low we'll go.
>
> Acked-by: Paolo Valente <paolo.valente@linaro.org>
Reviewed-by: Omar Sandoval <osandov@fb.com>
> Signed-off-by: Jens Axboe <axboe@kernel.dk>
> ---
> block/bfq-iosched.c | 17 ++++++++++++++---
> 1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
> index 10294124d597..b622e73a326a 100644
> --- a/block/bfq-iosched.c
> +++ b/block/bfq-iosched.c
> @@ -5081,10 +5081,13 @@ void bfq_put_async_queues(struct bfq_data *bfqd, struct bfq_group *bfqg)
>
> /*
> * See the comments on bfq_limit_depth for the purpose of
> - * the depths set in the function.
> + * the depths set in the function. Return minimum shallow depth we'll use.
> */
> -static void bfq_update_depths(struct bfq_data *bfqd, struct sbitmap_queue *bt)
> +static unsigned int bfq_update_depths(struct bfq_data *bfqd,
> + struct sbitmap_queue *bt)
> {
> + unsigned int i, j, min_shallow = UINT_MAX;
> +
> /*
> * In-word depths if no bfq_queue is being weight-raised:
> * leaving 25% of tags only for sync reads.
> @@ -5115,14 +5118,22 @@ static void bfq_update_depths(struct bfq_data *bfqd, struct sbitmap_queue *bt)
> bfqd->word_depths[1][0] = max(((1U << bt->sb.shift) * 3) >> 4, 1U);
> /* no more than ~37% of tags for sync writes (~20% extra tags) */
> bfqd->word_depths[1][1] = max(((1U << bt->sb.shift) * 6) >> 4, 1U);
> +
> + for (i = 0; i < 2; i++)
> + for (j = 0; j < 2; j++)
> + min_shallow = min(min_shallow, bfqd->word_depths[i][j]);
> +
> + return min_shallow;
> }
>
> static int bfq_init_hctx(struct blk_mq_hw_ctx *hctx, unsigned int index)
> {
> struct bfq_data *bfqd = hctx->queue->elevator->elevator_data;
> struct blk_mq_tags *tags = hctx->sched_tags;
> + unsigned int min_shallow;
>
> - bfq_update_depths(bfqd, &tags->bitmap_tags);
> + min_shallow = bfq_update_depths(bfqd, &tags->bitmap_tags);
> + sbitmap_queue_min_shallow_depth(&tags->bitmap_tags, min_shallow);
> return 0;
> }
>
> --
> 2.7.4
>
next prev parent reply other threads:[~2018-05-10 17:03 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-10 16:24 [PATCHSET v3 0/9] blk-mq-sched and sbitmap shallow depth Jens Axboe
2018-05-10 16:24 ` [PATCH 1/9] blk-mq: don't call into depth limiting for reserved tags Jens Axboe
2018-05-10 16:59 ` Omar Sandoval
2018-05-10 16:24 ` [PATCH 2/9] bfq-iosched: don't worry about reserved tags in limit_depth Jens Axboe
2018-05-10 16:59 ` Omar Sandoval
2018-05-10 16:24 ` [PATCH 3/9] bfq: calculate shallow depths at init time Jens Axboe
2018-05-10 17:00 ` Omar Sandoval
2018-05-10 16:24 ` [PATCH 4/9] bfq-iosched: remove unused variable Jens Axboe
2018-05-10 17:00 ` Omar Sandoval
2018-05-10 16:24 ` [PATCH 5/9] sbitmap: fix missed wakeups caused by sbitmap_queue_get_shallow() Jens Axboe
2018-05-10 17:01 ` Omar Sandoval
2018-05-10 17:09 ` Jens Axboe
2018-05-10 16:24 ` [PATCH 6/9] sbitmap: warn if using smaller shallow depth than was setup Jens Axboe
2018-05-10 17:02 ` Omar Sandoval
2018-05-10 17:09 ` Jens Axboe
2018-05-10 16:24 ` [PATCH 7/9] bfq-iosched: update shallow depth to smallest one used Jens Axboe
2018-05-10 17:03 ` Omar Sandoval [this message]
2018-05-10 16:24 ` [PATCH 8/9] kyber-iosched: update shallow depth when setting up hardware queue Jens Axboe
2018-05-10 17:03 ` Omar Sandoval
2018-05-10 16:24 ` [PATCH 9/9] sbitmap: fix race in wait batch accounting Jens Axboe
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=20180510170306.GG30485@vader \
--to=osandov@osandov.com \
--cc=axboe@kernel.dk \
--cc=efault@gmx.de \
--cc=linux-block@vger.kernel.org \
--cc=osandov@fb.com \
--cc=paolo.valente@linaro.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.