Thread (6 messages) 6 messages, 2 authors, 2016-12-06

Re: [PATCH v7 0/4] Enabling ATA Command Priorities

From: Tejun Heo <tj@kernel.org>
Date: 2016-12-06 18:37:38
Also in: linux-block, lkml

Adam,

On Tue, Dec 06, 2016 at 09:18:01AM -0800, Adam Manzanares wrote:
From: Adam Manzanares <redacted>

This patch builds ATA commands with high priority if the iocontext of a process
is set to real time. The goal of the patch is to improve tail latencies of 
workloads that use higher queue depths. This requires setting the iocontext 
ioprio on the request when it is initialized

This patch has been tested with an Ultrastar HE8 HDD and cuts the 
the p99.99 tail latency of foreground IO from 2s down to 72ms when
using the deadline scheduler. This patch works independently of the
scheduler so it can be used with all of the currently available 
request based schedulers. 

Foreground IO, for the previously described results, is an async fio job 
submitting 4K read requests at a QD of 1 to the HDD. The foreground IO is set 
with the iopriority class of real time. The background workload is another fio
job submitting read requests at a QD of 32 to the same HDD with default 
iopriority.

This feature is enabled for ATA devices by setting the ata ncq_prio_enable 
device attribute to 1. An ATA device is also checked to see if the device 
supports per command priority.

v7:
 - Run ncq prio support check when sysfs variable set (zero day bug fix)
 - Fixes from TJ merged in
 - Merge fix for linux-next incorporated
The previous version has already been merged into libata/for-4.10.
Can you please send me an incremental patch on top of it?  The tree
can be fetched from

 git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git for-4.10

Thanks.

-- 
tejun
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help