New write throttling in ZFS
Roch reports in The new ZFS write throttle about a new algorithm in ZFS for throttling writes appearing in upcoming versions of Opensolaris. Every five seconds ZFS commits changes to it´s pools to the disk, even when you are not forcing this syncing. Whenever your harddrives doesn´t keep up with the amount of writes from the transaction group, it was possible, that ZFS trottled writing application to ensure that the you can write all the outstanding data in the transaction groups. Depending of the amount of the data and the speed of your harddisks this state could last a few seconds.
The new behaviour is much better from my point of view. Roch writes in his article:
So the new steady state behavior of write intensive workloads is that, starting with an empty TXG, all threads will be allowed to dirty memory at full speed until a first threshold of bytes in the TXG is reached. At that time, every write system call will be delayed by 1 tick thus significantly slowing down the pace of writes. If the previous TXG completes it's I/Os, then the current TXG will then be allowed to resume at full speed. But in the unlikely event that a workload, despite the per write 1-tick delay, manages to fill up the TXG up to the full threshold we will be forced to throttle all writes in order to allow the storage to catch up.
This new mechanism should keep away this complete write throttling pauses really effectively.