ZFS Is there a way to limit async write speed when using SLOG?



Reaction score: 3
Messages: 34

Another probably slightly weird question.

I have a MySQL server using a ZFS HDD mirror with separate NVMe ZIL/SLOG. This means data is committed to nonvolatile storage (the SLOG) pretty much instantly, and ZFS can follow up with an asynchronous flush of dirty buffers to the HDDs at some point in the future.

This flush of dirty buffers seems to occur at a rapid pace, even though it doesn't have to (since the data is already committed). This seriously impacts random read performance. Is there a way to slow the write flushing, or space it out more?

One sysctl that stands out is vfs.zfs.vdev.async_write_max_active, but changing this does not seem to do anything, presumably because even with a queue depth of 1, the OS is still sending write requests as fast as the HDD will accept them.

Need something like vfs.zfs.l2arc_write_max (which limits the MB/s to L2ARC), but for main storage.

Thanks for any suggestions.