Difference between revisions of "ZFS on high latency devices"

Jump to navigation Jump to search
m
no edit summary
m
m
Line 138: Line 138:


* Open up batch taskq, aggregation limits, write threads, and ZIO throttle:
* Open up batch taskq, aggregation limits, write threads, and ZIO throttle:
/etc/modprobe.d/zfs.conf:


<pre>
<pre>
$ /etc/modprobe.d/zfs.conf:
# This is only a preliminary config used to help test ZFS flow
$ # zfs_delay_scale =
# Do not adopt this as a long-term configuration!
$ options zfs zfs_delay_scale = 1000 * blocksize / {expected writes per sec in MB/s)
# Fill out all non-static values before copying to /etc/modprobe.d/zfs.conf
$ # so 1000 * 128k / 384 = 333000
#
$ # make the taskq the limiting part of the flow
# zfs_delay_scale =
$ options zfs zfs_sync_taskq_batch_pct=1
options zfs zfs_delay_scale = 1000 * blocksize / {expected writes per sec in MB/s)
$ # disabling the throttle greatly aids merge
# so 1000 * 128k / 384 = 333000
$ options zfs zio_dva_throttle_enabled=0
# make the taskq the limiting part of the flow
$ # txg commit every 30 seconds
options zfs zfs_sync_taskq_batch_pct=1
$ options zfs zfs_txg_timeout=30
# disabling the throttle greatly aids merge
$ # start txg commit just before writers ramp up
options zfs zio_dva_throttle_enabled=0
$ options zfs zfs_dirty_data_sync = {zfs_dirty_data_max * zfs_async_dirty_min * 0.9}
# txg commit every 30 seconds
$ # save last 100 txg's information
options zfs zfs_txg_timeout=30
$ options zfs zfs_txg_history=100
# start txg commit just before writers ramp up
$ # IO aggregation
options zfs zfs_dirty_data_sync = {zfs_dirty_data_max * zfs_async_dirty_min * 0.9}
$ # limit total agg to 3.5m and read gap to 0.75m
# save last 100 txg's information
$ options zfs zfs_vdev_aggregation_limit=blocksize * K * 3
options zfs zfs_txg_history=100
$ options zfs zfs_vdev_write_gap_limit=ashift * 4 (16k for ashift=12)
# IO aggregation
$ options zfs zfs_vdev_read_gap_limit=blocksize + 64k
# limit total agg to 3.5m and read gap to 0.75m
$ # initial thread settings
options zfs zfs_vdev_aggregation_limit=blocksize * K * 3
$ options zfs zfs_vdev_sync_read_min_active=4
options zfs zfs_vdev_write_gap_limit=ashift * 4 (16k for ashift=12)
$ options zfs zfs_vdev_sync_read_max_active=30
options zfs zfs_vdev_read_gap_limit=blocksize + 64k
$ options zfs zfs_vdev_sync_write_min_active=10
# initial thread settings
$ options zfs zfs_vdev_sync_write_max_active=20
options zfs zfs_vdev_sync_read_min_active=4
$ options zfs zfs_vdev_async_read_min_active=2
options zfs zfs_vdev_sync_read_max_active=30
$ options zfs zfs_vdev_async_read_max_active=30
options zfs zfs_vdev_sync_write_min_active=10
$ options zfs zfs_vdev_async_write_min_active=2
options zfs zfs_vdev_sync_write_max_active=20
$ options zfs zfs_vdev_async_write_max_active=30
options zfs zfs_vdev_async_read_min_active=2
options zfs zfs_vdev_async_read_max_active=30
options zfs zfs_vdev_async_write_min_active=2
options zfs zfs_vdev_async_write_max_active=30
</pre>
</pre>


Editor
17

edits

Navigation menu