On Thu, Apr 17, 2014 at 11:48:21AM -0700, Dan Williams wrote:
> The AHCI spec allows implementations to issue commands in tag order
> rather than FIFO order:
> 
>       5.3.2.12 P:SelectCmd
>       HBA sets pSlotLoc = (pSlotLoc + 1) mod (CAP.NCS + 1)
>       or HBA selects the command to issue that has had the
>       PxCI bit set to '1' longer than any other command
>       pending to be issued.
> 
> The result is that commands posted sequentially (time-wise) may play out
> of sequence when issued by hardware.
> 
> This behavior has likely been hidden by drives that arrange for commands
> to complete in issue order.  However, it appears recent drives (two from
> different vendors that we have found so far) inflict out-of-order
> completions as a matter of course.  So, we need to take care to maintain
> ordered submission, otherwise we risk triggering a drive to fall out of
> sequential-io automation and back to random-io processing, which incurs
> large latency and degrades throughput.
> 
> This issue was found in simple benchmarks where QD=2 seq-write
> performance was 30-50% *greater* than QD=32 seq-write performance.
> 
> Tagging for -stable and making the change globally since it has a low
> risk-to-reward ratio.  Also, word is that recent versions of an unnamed
> OS also does it this way now.  So, drives in the field are already
> experienced with this tag ordering scheme.
> 
> Cc: <[email protected]>
> Cc: Dave Jiang <[email protected]>
> Cc: Ed Ciechanowski <[email protected]>
> Reviewed-by: Matthew Wilcox <[email protected]>
> Signed-off-by: Dan Williams <[email protected]>

Applied to libata/for-3.15-fixes.

Thanks.

-- 
tejun
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to