Re: [PATCH 1/2] libata: switch to using block layer tagging support

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

 



James Bottomley wrote:
On Wed, 2009-05-20 at 11:08 -0700, Gwendal Grignou wrote:
Form the ATA and SATA spec, NCQ is per device. It is possible to
assign the same tag on different port, the disks and PMP will not
care.
However, today, we assign tag on a port basis [see
__ata_qc_from_tag()], therefore only 32 commands can be inflight to
all devices behind a given port.

Being able to a do a mapping qc <---> {pmp port, tag} instead of just
qc <---> {tag} will provide a performance boost when disks supporting
NCQ are connected behind a PMP. Maybe it can be done, by moving qcmd
from ata_port to ata_link.

As Tejun said, the patch needs more work to be able to support same
tag used on 2 different links behind the same port.
Also, given we are changing the amount of commands we sent to the
controller, we would have to change can_queue from ATA_MAX_QUEUE to
ATA_MAX_QUEUE*n, where n is the number of ports supported by the
controller [max SATA_PMP_MAX_PORTS, but some controller, like SiI3132
only supports 5 devices, and other may only support n = 1]

When done, the patch will require a great amount of testing, given we
will exercise the controllers in a brand new way. A white list might
be necessary.

Jens, using SCSI tagging for ata commands is a great idea, but it is
no small feat...

So realistically, you want one block queue per PMP port rather than an
artificial limits adjustment on the single queue per output phy ... this
shouldn't be too hard: it is exactly the way the SAS transport class
(and libsas) works today for expander connected SAS devices.

Well... The limiting factor is "ATA command slots per SATA phy", which defines $N active ATA commands per port. If a SATA NCQ device is attached, you may have $N active ATA commands queued. If two SATA NCQ devices are attached to a PMP, which is attached to the SATA controller, the two devices share the limit of $N active ATA commands queued. If 32 devices are attached to a PMP, all 32 devices share the $N command queue limit.

But additionally, as Tejun demonstrated, you might have a mix of NCQ and non-NCQ devices attached to the PMP.

Thus, it is a case of nested limits:

- $N maximum active commands per port; typically N==32
- $M maximum active commands per device; typically N==1 or N==32

Regards,

	Jeff




--
To unsubscribe from this list: send the line "unsubscribe linux-ide" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux