All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bart Van Assche <bvanassche@acm.org>
To: Christoph Hellwig <hch@infradead.org>
Cc: Ed Tsai <ed.tsai@mediatek.com>,
	axboe@kernel.dk, linux-block@vger.kernel.org,
	linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org,
	martin.petersen@oracle.com, stanley.chu@mediatek.com,
	peter.wang@mediatek.com, chun-hung.wu@mediatek.com,
	alice.chao@mediatek.com, powen.kao@mediatek.com,
	naomi.chu@mediatek.com, wsd_upstream@mediatek.com
Subject: Re: [PATCH 2/2] ufs: don't use the fair tag sharings
Date: Fri, 12 May 2023 11:12:40 -0700	[thread overview]
Message-ID: <2740ee82-e35f-1cbf-f5d0-373f94eb14a5@acm.org> (raw)
In-Reply-To: <ZF5G5ztMng8Xbd1W@infradead.org>

On 5/12/23 07:02, Christoph Hellwig wrote:
> On Thu, May 11, 2023 at 08:38:04AM -0700, Bart Van Assche wrote:
>> For which devices is the fair sharing algorithm useful? As far as I know the
>> legacy block layer did not have an equivalent of the fair sharing algorithm
>> and I'm not aware of any complaints about the legacy block layer regarding
>> to fairness. This is why I proposed in January to remove the fair sharing
>> code entirely. See also https://lore.kernel.org/linux-block/20230103195337.158625-1-bvanassche@acm.org/.
> 
> Because the old code did not do tag allocation itself?  Either way I
> don't think a "I'll opt out for a random driver" is the proper approach
> when you think it's not needed.  Especially not without any data
> explaining why just that driver is a special snowflake.

Hi Christoph,

I'm still wondering whether there are any drivers that benefit from the 
fair tag sharing algorithm. If the number of tags is large enough 
(NVMe), the number of tags exceeds the number of requests in flight and 
hence the fair tag sharing algorithm is not necessary.

The fair tag sharing algorithm has a negative impact on all SCSI devices 
with multiple logical units. This is because logical units are 
considered active until (request timeout) seconds have elapsed after the 
logical unit stopped being used (see also the blk_mq_tag_idle() call in 
blk_mq_timeout_work()). UFS users are hit by this because UFS 3.0 
devices have a limited queue depth (32) and because power management 
commands are submitted to a logical unit (WLUN). Hence, it happens often 
that the block layer "active queue" counter is equal to 2 while only one 
logical unit is being used actively (a logical unit backed by NAND 
flash). The performance difference between queue depths 16 and 32 for 
UFS devices is significant.

Is my understanding correct that in the legacy block layer 
implementation blk_queue_start_tag() had to be called to assign a tag to 
a request? I haven't found any code in the Linux kernel v4.20 
implementation of blk_queue_start_tag() that implements fairness in case 
a request tag map (struct blk_queue_tag) is shared across request queues 
(one request queue per logical unit in case of SCSI). Do you agree with 
my conclusion that from the point of view of the SCSI core in general 
and the UFS driver in particular the fair tag sharing algorithm in the 
blk-mq code introduced a performance regression?

Thanks,

Bart.

  reply	other threads:[~2023-05-12 18:12 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-09  6:52 [PATCH 0/2] block: improve the share tag set performance Ed Tsai
2023-05-09  6:52 ` [PATCH 1/2] block: make the fair sharing of tag configurable Ed Tsai
2023-05-09 21:33   ` kernel test robot
2023-05-11 15:33   ` Christoph Hellwig
2023-05-22  5:30   ` kernel test robot
2023-05-09  6:52 ` [PATCH 2/2] ufs: don't use the fair tag sharings Ed Tsai
2023-05-09  8:03   ` Avri Altman
2023-05-09 14:04     ` Bart Van Assche
2023-05-09 16:19       ` Avri Altman
2023-05-09 16:30         ` Bart Van Assche
2023-05-10  5:21           ` Avri Altman
2023-05-10 15:56             ` Bart Van Assche
2023-05-11 15:34   ` Christoph Hellwig
2023-05-11 15:38     ` Bart Van Assche
2023-05-12 14:02       ` Christoph Hellwig
2023-05-12 18:12         ` Bart Van Assche [this message]
2023-05-13  3:09           ` Yu Kuai
2023-05-16 15:12             ` Bart Van Assche
2023-05-17  7:49               ` Yu Kuai
2023-05-17 18:23                 ` Bart Van Assche
2023-05-18  1:49                   ` Yu Kuai
2023-05-18  2:23                     ` Bart Van Assche
2023-05-18  7:55                       ` Yu Kuai
2023-06-13 14:07                         ` Bart Van Assche
2023-06-14  1:58                           ` Yu Kuai
2023-05-10 22:56 ` [PATCH 0/2] block: improve the share tag set performance Bart Van Assche

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=2740ee82-e35f-1cbf-f5d0-373f94eb14a5@acm.org \
    --to=bvanassche@acm.org \
    --cc=alice.chao@mediatek.com \
    --cc=axboe@kernel.dk \
    --cc=chun-hung.wu@mediatek.com \
    --cc=ed.tsai@mediatek.com \
    --cc=hch@infradead.org \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=naomi.chu@mediatek.com \
    --cc=peter.wang@mediatek.com \
    --cc=powen.kao@mediatek.com \
    --cc=stanley.chu@mediatek.com \
    --cc=wsd_upstream@mediatek.com \
    /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.