OpenZFS 2.1-rc6 Released - Will Now Scale Worker Threads With CPU Core Count
OpenZFS 2.1 is headlined by adding Distributed Spare RAID "dRAID" and a new compatibility property for Zpool feature-sets, compatibility with newer versions of the Linux kernel (through 5.12 at the moment), and a variety of other improvements and fixes.
A notable new change to find with OpenZFS 2.1-rc6 is scaling the worker threads and Taskqs with the number of CPUs on the system. As for the change, "this patch introduces ZTI_SCALE macro, alike to ZTI_BATCH, but with multiple taskqs, depending on number of CPUs, to be used in places where lock scalability is needed, while request ordering is not so much. The code is made to create new taskq for ~6 worker threads (less for small systems, but more for very large) up to 80% of CPU cores (previous 75% was not good for rounding down). Both number of threads and threads per taskq are now tunable in case somebody really wants to use all of system power for ZFS."
This scaling with today's higher core count systems should really help with lower latency. The change during testing led to the 95% latency dropping from 77ms to 5ms and the maximum latency going from 204 ms to 7.5 ms. Testing also found this scaling to really help with latency and interactivity when deleting files with deduplication enabled.
More details on this late change for OpenZFS 2.1-rc6 via this recent merge request.
OpenZFS 2.1-rc6 also has early compatibility work for the Linux 5.13 Git kernel (though officially tops out at 5.12 for the moment), various FreeBSD fixes, man page improvements, and a variety of other fixes.
OpenZFS 2.1-rc6 for Linux and FreeBSD systems is available for testing from GitHub.