Re: [PATCH v2] block: Improve shared tag set performance

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/18/23 14:46, Bart Van Assche wrote:
On 1/18/23 14:14, Keith Busch wrote:
On Tue, Jan 03, 2023 at 11:53:37AM -0800, Bart Van Assche wrote:
This algorithm hurts performance for UFS devices because UFS devices
have multiple logical units. One of these logical units (WLUN) is used
to submit control commands, e.g. START STOP UNIT. If any request is
submitted to the WLUN, the queue depth is reduced from 31 to 15 or
lower for data LUNs.

Can you give the WLUN it's own tagset instead?

Hi Keith,

Does that mean creating an additional tagset for the WLUN and statically allocating all tags from the WLUN tagset that are used by other LUNs? That approach would have the following disadvantages:
- The maximum queue depth for other LUNs would be reduced from 31 to 30.
   This would have a small but noticeable negative performance impact.
- The code removed by this patch negatively impacts performance of all
   SCSI hosts with two or more data LUNs and also of all NVMe controllers
   that export two or more namespaces if there are significant
   differences in the number of I/O operations per second for different
   LUNs/namespaces. This is why I think that this should be solved in the
   block layer instead of modifying each block driver individually.

(replying to my own e-mail)

Hi Keith,

An additional concern about the approach of using multiple tag sets per SCSI host: this approach is not compatible with any code that iterates over tag sets. Examples of functions that iterate over tag sets are blk_mq_tagset_busy_iter(), scsi_host_busy(), scsi_host_complete_all_commands() and scsi_host_busy_iter(). scsi_host_busy() is used by e.g. scsi_host_queue_ready() and scsi_eh_wakeup(). So I think this approach would break the SCSI core in a subtle way.

Bart.




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux