From 3f94b8020476b37f3dea74bad476a832cbd3c6b7 Mon Sep 17 00:00:00 2001 From: Richard Elling Date: Sat, 1 Sep 2018 16:59:38 -0700 Subject: [PATCH] initial commit, migrating from draft status --- Async-Write.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Async-Write.md diff --git a/Async-Write.md b/Async-Write.md new file mode 100644 index 0000000..14d803c --- /dev/null +++ b/Async-Write.md @@ -0,0 +1,33 @@ +### Async Writes + +The number of concurrent operations issued for the async write I/O class +follows a piece-wise linear function defined by a few adjustable points. + +``` + | o---------| <-- zfs_vdev_async_write_max_active + ^ | /^ | + | | / | | +active | / | | + I/O | / | | +count | / | | + | / | | + |-------o | | <-- zfs_vdev_async_write_min_active + 0|_______^______|_________| + 0% | | 100% of zfs_dirty_data_max + | | + | `-- zfs_vdev_async_write_active_max_dirty_percent + `--------- zfs_vdev_async_write_active_min_dirty_percent +``` + +Until the amount of dirty data exceeds a minimum percentage of the dirty +data allowed in the pool, the I/O scheduler will limit the number of +concurrent operations to the minimum. As that threshold is crossed, the +number of concurrent operations issued increases linearly to the maximum at +the specified maximum percentage of the dirty data allowed in the pool. + +Ideally, the amount of dirty data on a busy pool will stay in the sloped +part of the function between zfs_vdev_async_write_active_min_dirty_percent +and zfs_vdev_async_write_active_max_dirty_percent. If it exceeds the +maximum percentage, this indicates that the rate of incoming data is +greater than the rate that the backend storage can handle. In this case, we +must further throttle incoming writes, as described in the next section.