it seems that a "new" sequential scrub algorithm for ZFS is causing head aches on some of our Nested systems.
The "new" metadata scan reads through the structure of the pool and gathers an in-memory queue of I/Os, sorted by size and offset on disk. The issuing phase will then issue the scrub I/Os as sequentially as possible, greatly improving performance.
what happens if the in-memory queue of I/O does not find enough RAM available?
The problem re-appeared as soon as I re-enabled both scrub prefetch and the new algorithm together.
New Code:
vfs.zfs.zfs_scan_legacy 0
vfs.zfs.no_scrub_prefetch 1
Old Code:
vfs.zfs.zfs_scan_legacy 1
vfs.zfs.no_scrub_prefetch 0
If you are experiencing extreme system slownes during (virtual) disk scrub you might want to test if the "old code" will work for you.
The "new" metadata scan reads through the structure of the pool and gathers an in-memory queue of I/Os, sorted by size and offset on disk. The issuing phase will then issue the scrub I/Os as sequentially as possible, greatly improving performance.
what happens if the in-memory queue of I/O does not find enough RAM available?
The problem re-appeared as soon as I re-enabled both scrub prefetch and the new algorithm together.
New Code:
vfs.zfs.zfs_scan_legacy 0
vfs.zfs.no_scrub_prefetch 1
Old Code:
vfs.zfs.zfs_scan_legacy 1
vfs.zfs.no_scrub_prefetch 0
If you are experiencing extreme system slownes during (virtual) disk scrub you might want to test if the "old code" will work for you.