On Wednesday 01 of February 2012, Christoph Hellwig wrote:
> This series improves handling of large number of dquots. It replaced
> the direct recycling of dquots from the freelist with a shrinker, removes
> the upper bound of dquots, and uses per-filesystem structures for all
> quota state, including switching from a hash to a radix-tree for lookups.
> For repeated lookups of dquots out of a large pool I see improvements
> betwen 50% and 500% compared to the previous code. All these tests
> have been performed with Q_XQUOTASYNC already disabled as it would
> change the result to much for both the old and new code.
Thanks for this improvement!
On 3.0.17 my script that executes ~130k of Q_XQUOTAGET lookups does it's job
in 1m35s-1m45s and most of that is sys time.
3.3.0git + quota patchsets does the same thing in 23s and when cache gets hot
it goes down to 9s-10s but sys time is only ~1s.
Note that I'm using xfs_quota patched to avoid doing XQUOTASYNC, so that time
is mostly XQUOTAGET also on 3.0.17 kernel.
Of course the best test would be to test 3.3 without and with quota patchsets
but I don't think there were any other improvements between 3.0 and 3.3 that
could get such speed improvement for tons of XQUOTAGET calls.
ps. my 3.3.0git kernel had this patchset and "[PATCH 0/3] include reservations
in quota reportin" included
3.3git + quota patchsets
Arkadiusz Miśkiewicz PLD/Linux Team
arekm / maven.pl http://ftp.pld-linux.org/