One of the few weak spots of the ZFS is fragmentation.
In order to know fragmentation level, do:
sudo zpool list
You need to keep free space in your pool, as it is indispensable, mainly for copy-on-write actions and snapshots.
Performance declines at about 80% utilisation. So, try to keep pools always below 80%.
When you hit 85% used, performance will degrade dramatically. In any case, never go above 90%.
Currently, the only way to defragment is to:
- copy everything off to a different pool (ZFS send)
- destroy the fragmented pool,
- recreate the pool
- copy everything back (ZFS receive)