diff options
author | Garrett D'Amore <[email protected]> | 2011-11-07 16:26:52 -0800 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2011-12-14 09:19:30 -0800 |
commit | a38718a63d79116d6cb614dd2821e2a3955e5c8c (patch) | |
tree | 05bdaf166ff065cedd2951380d92c65c7545b9cd /module/zfs/spa.c | |
parent | 30a9524e45f76d4c7860bcbf5567aeaa8aeb7a82 (diff) |
Illumos #734: Use taskq_dispatch_ent() interface
It has been observed that some of the hottest locks are those
of the zio taskqs. Contention on these locks can limit the
rate at which zios are dispatched which limits performance.
This upstream change from Illumos uses new interface to the
taskqs which allow them to utilize a prealloc'ed taskq_ent_t.
This removes the need to perform an allocation at dispatch
time while holding the contended lock. This has the effect
of improving system performance.
Reviewed by: Albert Lee <[email protected]>
Reviewed by: Richard Lowe <[email protected]>
Reviewed by: Alexey Zaytsev <[email protected]>
Reviewed by: Jason Brian King <[email protected]>
Reviewed by: George Wilson <[email protected]>
Reviewed by: Adam Leventhal <[email protected]>
Approved by: Gordon Ross <[email protected]>
References to Illumos issue:
https://www.illumos.org/issues/734
Ported-by: Prakash Surya <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #482
Diffstat (limited to 'module/zfs/spa.c')
-rw-r--r-- | module/zfs/spa.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/module/zfs/spa.c b/module/zfs/spa.c index 868a0d9d2..0b9649723 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -22,6 +22,9 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ /* * This file contains all the routines used when modifying on-disk SPA state. @@ -665,7 +668,7 @@ spa_create_zio_taskqs(spa_t *spa) const zio_taskq_info_t *ztip = &zio_taskqs[t][q]; enum zti_modes mode = ztip->zti_mode; uint_t value = ztip->zti_value; - uint_t flags = TASKQ_PREPOPULATE; + uint_t flags = 0; char name[32]; if (t == ZIO_TYPE_WRITE) |