diff options
author | Matthew Ahrens <[email protected]> | 2018-08-02 15:51:45 -0700 |
---|---|---|
committer | Tony Hutter <[email protected]> | 2018-11-08 14:38:28 -0800 |
commit | 45579c951587c5856ea3db7e429be4866c4dfe85 (patch) | |
tree | f88dfd41678159086ca0c7fb6156ea101d04380f /cmd | |
parent | b32f1279d4a09a932dcbfa79e125ce60cd8d75bf (diff) |
Reduce taskq and context-switch cost of zio pipe
When doing a read from disk, ZFS creates 3 ZIO's: a zio_null(), the
logical zio_read(), and then a physical zio. Currently, each of these
results in a separate taskq_dispatch(zio_execute).
On high-read-iops workloads, this causes a significant performance
impact. By processing all 3 ZIO's in a single taskq entry, we reduce the
overhead on taskq locking and context switching. We accomplish this by
allowing zio_done() to return a "next zio to execute" to zio_execute().
This results in a ~12% performance increase for random reads, from
96,000 iops to 108,000 iops (with recordsize=8k, on SSD's).
Reviewed by: Pavel Zakharov <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed by: George Wilson <[email protected]>
Signed-off-by: Matthew Ahrens <[email protected]>
External-issue: DLPX-59292
Closes #7736
Diffstat (limited to 'cmd')
0 files changed, 0 insertions, 0 deletions