aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/libata.h
diff options
context:
space:
mode:
authorGrant Grundler <grundler@google.com>2010-04-14 18:43:32 -0700
committerJeff Garzik <jgarzik@redhat.com>2010-05-14 17:08:02 -0400
commit4f2c774856708bccecb74c0e6296e9e2c9136ee1 (patch)
tree33ebceafd0f2f21b155dde40344addf45e2cb4ed /include/linux/libata.h
parentfbaf666b854c04b2d8ebca17114ee409ddea08b5 (diff)
downloadkernel_samsung_espresso10-4f2c774856708bccecb74c0e6296e9e2c9136ee1.zip
kernel_samsung_espresso10-4f2c774856708bccecb74c0e6296e9e2c9136ee1.tar.gz
kernel_samsung_espresso10-4f2c774856708bccecb74c0e6296e9e2c9136ee1.tar.bz2
[libata] Disable R_OK (Early ACK) on SII 3726 PMP
In 2009, While running "cache read" performance test of drives behind SII PMP we encountered a "all 5 drives" timeout on more than 30% of the machines under test. This patch reduces the rate by a factor of about 70. Low enough that we didn't care to further investigate the issue. Performance impact with any sort of "normal" use was ~2%+ CPU and less than 1% throughput degradation. Worst case impact (cached read) was 6% IOPS reduction. This is with NCQ off (q=1) but I believe FIS based switching enabled in the SATA driver. The patch disables "Early ACK" in the 3726 port multiplier. "Early ACK" is issued when device sends a FIS to the host (via PMP) and the PMP sends an ACK immediately back to the device - well before the host gets the response. Under worst case IOPs load (cached read test) and more than 2 PMPs connected to a 4-port SATA controller, I suspect the time to service all of the PMPs is exceeding the PMPs ability to keep track of outstanding FIS it owes the Host. Reducing the number of PMPs to 2 (or 1) reduces the frequency by several orders of magnitude. Kudos to Gwendal for initial debugging of this issue. [Any errors in the description are mine, not his.] Patch is currently in production on Google servers. Signed-off-by: Grant Grundler <grundler@google.com> Signed-off-by: Gwendal Grignou <gwendal@google.com> Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'include/linux/libata.h')
0 files changed, 0 insertions, 0 deletions