diff options
Diffstat (limited to 'usr/src')
| -rw-r--r-- | usr/src/uts/common/fs/zfs/zil.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/usr/src/uts/common/fs/zfs/zil.c b/usr/src/uts/common/fs/zfs/zil.c index fb8b62936a..c0b90b6a13 100644 --- a/usr/src/uts/common/fs/zfs/zil.c +++ b/usr/src/uts/common/fs/zfs/zil.c @@ -107,8 +107,23 @@ boolean_t zil_nocacheflush = B_FALSE; * Limit SLOG write size per commit executed with synchronous priority. * Any writes above that will be executed with lower (asynchronous) priority * to limit potential SLOG device abuse by single active ZIL writer. + * + * The default upstream value for zil_slog_bulk is: + * uint64_t zil_slog_bulk = 768 * 1024; + * For SmartOS, we default to using a high value to essentially disable this + * behavior. + * + * Because the default value of this tunable forces some zil_commit writes down + * to io_priority ZIO_PRIORITY_ASYNC_WRITE, those zio's would be in the same + * zio pipeline queue as all of the async spa_sync zio's. This can lead to + * serious latency problems for the user-level application code because it is + * blocked on completion of the zil_commit. We see this when a spa_sync zio is + * running slow (e.g. when metaslab loading takes a long time in the + * zio_dva_allocate pipeline stage), thus delaying all zio's backed up in the + * ZIO_PRIORITY_ASYNC_WRITE queue. For SmartOS, we choose to keep all + * zil_commmit zio's at ZIO_PRIORITY_SYNC_WRITE. */ -uint64_t zil_slog_bulk = 768 * 1024; +uint64_t zil_slog_bulk = 0x100000000ULL; static kmem_cache_t *zil_lwb_cache; static kmem_cache_t *zil_zcw_cache; |
