]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/commit
MFC r277169: Reimplement TRIM throttling added in r248577.
authormav <mav@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 28 Jan 2015 02:55:20 +0000 (02:55 +0000)
committermav <mav@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Wed, 28 Jan 2015 02:55:20 +0000 (02:55 +0000)
commit66c1da9e0224180fc6fa41eec2e1eb4925787d6c
tree1a3f172129831a4d0f219b0190cdb2fa7d088e25
parent70794e0c00a1d7ea26cd004f7c0da3a81edaa136
MFC r277169: 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.

git-svn-id: svn://svn.freebsd.org/base/stable/10@277818 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c