freebsd-nq/sys/cddl
Alexander Motin d4f46a775d Reimplement TRIM throttling added in r248577.
Previous throttling implementation approached problem from the wrong side.
It significantly limited useful delaying of TRIM requests and aggregation
potential, while not so much controlled TRIM burstiness under heavy load.

With this change random 4K write benchmarks (probably the worst case for
TRIM) show me IOPS increase by 20%, average latency reduction by 30%, peak
TRIM bursts reduction by 3 times and same peak TRIM map size (memory usage).

Also the new logic does not force map size down so heavily, really allowing
to keep deleted data for 32 TXG or 30 seconds under moderate load.  It was
practically impossible with old throttling logic, which pushed map down to
only 64 segments.

Reviewed by:	smh
MFC after:	2 weeks
Sponsored by:	iXsystems, Inc.
2015-01-14 09:39:57 +00:00
..
boot/zfs MFV r274273: 2014-11-10 08:20:21 +00:00
compat/opensolaris remove opensolaris cyclic code, replace with high-precision callouts 2014-12-07 11:21:41 +00:00
contrib/opensolaris Reimplement TRIM throttling added in r248577. 2015-01-14 09:39:57 +00:00
dev Restore the trap type argument to the DTrace trap hook, removed in r268600. 2014-12-23 15:38:19 +00:00