public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Bart Van Assche <bvanassche@acm.org>
To: Christoph Hellwig <hch@lst.de>
Cc: "Martin K . Petersen" <martin.petersen@oracle.com>,
	linux-scsi@vger.kernel.org, linux-block@vger.kernel.org,
	Jens Axboe <axboe@kernel.dk>
Subject: Re: [PATCH v15 00/19] Improve write performance for zoned UFS devices
Date: Mon, 27 Nov 2023 11:35:48 -0800	[thread overview]
Message-ID: <a9748872-0608-4ab9-8986-a82eff17ca9f@acm.org> (raw)
In-Reply-To: <20231127070939.GB27870@lst.de>

On 11/26/23 23:09, Christoph Hellwig wrote:
> I still think it is a very bad idea to add this amount of complexity to
> the SCSI code, for a model that can't work for the general case and
> diverges from the established NVMe model.

Hi Christoph,

Here is some additional background information:
* UFS vendors prefer the SCSI command set because they combine it with the
   M-PHY transport layer. This combination is more power efficient than NVMe
   over PCIe. According to the information I have available power consumption
   in the M-PHY hibernation state is lower than in the PCIe L2 state. I have
   not yet heard about any attempts to combine the NVMe command set with the
   M-PHY transport layer. Even if this would be possible, it would fragment
   the mobile storage market. This would increase the price of mobile storage
   devices which is undesirable.
* I think that the "established NVMe model" in your email refers to the NVMe
   zone append command. As you know there is no zone append in the SCSI ZBC
   standard.
* Using the software implementation of REQ_OP_ZONE_APPEND in drivers/scsi/sd_zbc.c
   is not an option. REQ_OP_ZONE_APPEND commands are serialized by that
   implementation. This serialization is unavoidable because a SCSI device
   may respond with a unit attention condition to any SCSI command. Hence,
   even if REQ_OP_ZONE_APPEND commands are submitted in order, these may be
   executed out-of-order. We do not want any serialization of SCSI commands
   because this has a significant negative performance impact on IOPS for UFS
   devices. The latest UFS devices support more than 300 K IOPS.
* Serialization in the I/O scheduler of zoned writes also reduces IOPS more
   than what is acceptable.

Hence the approach of this patch series to support pipelining of zoned writes
even if no I/O scheduler has been configured.

I think the amount of complexity introduced by this patch series in the SCSI
core is reasonable. No new states are introduced in the SCSI core. A single
call to a function that reorders pending SCSI commands is introduced in the
SCSI error handler (scsi_call_prepare_resubmit()).

Thanks,

Bart.

  reply	other threads:[~2023-11-27 19:35 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-14 21:16 [PATCH v15 00/19] Improve write performance for zoned UFS devices​ Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 01/19] block: Introduce more member variables related to zone write locking Bart Van Assche
2023-11-19 23:29   ` Damien Le Moal
2023-11-20 20:44     ` Bart Van Assche
2023-11-20 23:02       ` Damien Le Moal
2023-11-20 23:58         ` Bart Van Assche
2023-11-21  1:21           ` Damien Le Moal
2023-11-21  2:12             ` Damien Le Moal
2023-11-14 21:16 ` [PATCH v15 02/19] block: Only use write locking if necessary Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 03/19] block: Preserve the order of requeued zoned writes Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 04/19] block/mq-deadline: Only use zone locking if necessary Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 05/19] scsi: Pass SCSI host pointer to scsi_eh_flush_done_q() Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 06/19] scsi: core: Introduce a mechanism for reordering requests in the error handler Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 07/19] scsi: core: Add unit tests for scsi_call_prepare_resubmit() Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 08/19] scsi: sd: Support sorting commands by LBA before resubmitting Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 09/19] scsi: sd: Add a unit test for sd_cmp_sector() Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 10/19] scsi: core: Retry unaligned zoned writes Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 11/19] scsi: sd_zbc: Only require an I/O scheduler if needed Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 12/19] scsi: scsi_debug: Add the preserves_write_order module parameter Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 13/19] scsi: scsi_debug: Support injecting unaligned write errors Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 14/19] scsi: ufs: hisi: Rework the code that disables auto-hibernation Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 15/19] scsi: ufs: Rename ufshcd_auto_hibern8_enable() and make it static Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 16/19] scsi: ufs: Change the return type of ufshcd_auto_hibern8_update() Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 17/19] scsi: ufs: Simplify ufshcd_auto_hibern8_update() Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 18/19] scsi: ufs: Forbid auto-hibernation without I/O scheduler Bart Van Assche
2023-11-14 21:16 ` [PATCH v15 19/19] scsi: ufs: Inform the block layer about write ordering Bart Van Assche
2023-11-28  1:45   ` Can Guo
2023-11-28 21:49     ` Bart Van Assche
2023-11-27  7:09 ` [PATCH v15 00/19] Improve write performance for zoned UFS devices​ Christoph Hellwig
2023-11-27 19:35   ` Bart Van Assche [this message]
2023-11-28 12:53     ` [PATCH v15 00/19] Improve write performance for zoned UFS devices Christoph Hellwig
2023-11-28 17:36       ` 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=a9748872-0608-4ab9-8986-a82eff17ca9f@acm.org \
    --to=bvanassche@acm.org \
    --cc=axboe@kernel.dk \
    --cc=hch@lst.de \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox