Author: gallatin
Date: Thu Oct 24 18:39:05 2019
New Revision: 354029
URL: https://svnweb.freebsd.org/changeset/base/354029

Log:
  Add a tunable to set the pgcache zone's maxcache
  
  When it is set to 0 (the default), a heavy Netflix-style web workload
  suffers from heavy lock contention on the vm page free queue called from
  vm_page_zone_{import,release}() as the buckets are frequently drained.
  When setting the maxcache, this contention goes away.
  
  We should eventually try to autotune this, as well as make this
  zone eligable for uma_reclaim().
  
  Reviewed by:  alc, markj
  Not Objected to by: jeff
  Sponsored by: Netflix
  Differential Revision:        https://reviews.freebsd.org/D22112

Modified:
  head/sys/vm/vm_page.c

Modified: head/sys/vm/vm_page.c
==============================================================================
--- head/sys/vm/vm_page.c       Thu Oct 24 18:13:26 2019        (r354028)
+++ head/sys/vm/vm_page.c       Thu Oct 24 18:39:05 2019        (r354029)
@@ -216,8 +216,10 @@ vm_page_init_cache_zones(void *dummy __unused)
 {
        struct vm_domain *vmd;
        struct vm_pgcache *pgcache;
-       int domain, pool;
+       int domain, maxcache, pool;
 
+       maxcache = 0;
+       TUNABLE_INT_FETCH("vm.pgcache_zone_max", &maxcache);
        for (domain = 0; domain < vm_ndomains; domain++) {
                vmd = VM_DOMAIN(domain);
 
@@ -237,7 +239,7 @@ vm_page_init_cache_zones(void *dummy __unused)
                            sizeof(struct vm_page), NULL, NULL, NULL, NULL,
                            vm_page_zone_import, vm_page_zone_release, pgcache,
                            UMA_ZONE_MAXBUCKET | UMA_ZONE_VM);
-                       (void)uma_zone_set_maxcache(pgcache->zone, 0);
+                       (void)uma_zone_set_maxcache(pgcache->zone, maxcache);
                }
        }
 }
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to