diff options
| author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2019-08-15 21:04:34 +0000 |
|---|---|---|
| committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2019-08-15 21:04:34 +0000 |
| commit | adf665b5e735d87cf7d6b4e8932fb7dce88e42ad (patch) | |
| tree | e65c5347c0c0e56004b4812a74ca46897e8127e6 /usr/src | |
| parent | 347d48002595b630e29ac3081e3427710c2d0bd4 (diff) | |
| download | illumos-joyent-adf665b5e735d87cf7d6b4e8932fb7dce88e42ad.tar.gz | |
OS-7917 excessive zil_commit latency
Reviewed by: Kody Kantor <kody.kantor@joyent.com>
Approved by: Kody Kantor <kody.kantor@joyent.com>
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; |
