svn commit: r366378 - head/sys/vm
Mark Johnston
markj at FreeBSD.org
Fri Oct 2 19:04:10 UTC 2020
Author: markj
Date: Fri Oct 2 19:04:09 2020
New Revision: 366378
URL: https://svnweb.freebsd.org/changeset/base/366378
Log:
uma: Use LIFO for non-SMR bucket caches
When SMR was introduced, zone_put_bucket() was changed to always place
full buckets at the end of the queue. However, it is generally
preferable to use recently used buckets since their items are more
likely to be resident in cache. So, for buckets that have no constraint
on item reuse, use a last-in-first-out ordering as we did before.
Reviewed by: rlibby
Tested by: dhw, glebius
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D26426
Modified:
head/sys/vm/uma_core.c
Modified: head/sys/vm/uma_core.c
==============================================================================
--- head/sys/vm/uma_core.c Fri Oct 2 19:03:42 2020 (r366377)
+++ head/sys/vm/uma_core.c Fri Oct 2 19:04:09 2020 (r366378)
@@ -733,7 +733,15 @@ zone_put_bucket(uma_zone_t zone, int domain, uma_bucke
zone_domain_imax_set(zdom, zdom->uzd_nitems);
if (STAILQ_EMPTY(&zdom->uzd_buckets))
zdom->uzd_seq = bucket->ub_seq;
- STAILQ_INSERT_TAIL(&zdom->uzd_buckets, bucket, ub_link);
+
+ /*
+ * Try to promote reuse of recently used items. For items
+ * protected by SMR, try to defer reuse to minimize polling.
+ */
+ if (bucket->ub_seq == SMR_SEQ_INVALID)
+ STAILQ_INSERT_HEAD(&zdom->uzd_buckets, bucket, ub_link);
+ else
+ STAILQ_INSERT_TAIL(&zdom->uzd_buckets, bucket, ub_link);
ZDOM_UNLOCK(zdom);
return;
}
More information about the svn-src-all
mailing list