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.
next prev parent 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