svn commit: r303866 - in user/alc/PQ_LAUNDRY/sys: sys vm

Mark Johnston markj at FreeBSD.org
Tue Aug 9 04:41:35 UTC 2016


Author: markj
Date: Tue Aug  9 04:41:33 2016
New Revision: 303866
URL: https://svnweb.freebsd.org/changeset/base/303866

Log:
  Repurpose v_reactivate to count reactivations by the pagedaemon threads.
  
  Suggested and reviewed by:	alc

Modified:
  user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h
  user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c
  user/alc/PQ_LAUNDRY/sys/vm/vm_page.c
  user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c

Modified: user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h	Tue Aug  9 03:47:38 2016	(r303865)
+++ user/alc/PQ_LAUNDRY/sys/sys/vmmeter.h	Tue Aug  9 04:41:33 2016	(r303866)
@@ -75,7 +75,7 @@ struct vmmeter {
 	u_int v_vnodepgsin;	/* (p) vnode_pager pages paged in */
 	u_int v_vnodepgsout;	/* (p) vnode pager pages paged out */
 	u_int v_intrans;	/* (p) intransit blocking page faults */
-	u_int v_reactivated;	/* (f) pages reactivated from free list */
+	u_int v_reactivated;	/* (p) pages reactivated by the pagedaemon */
 	u_int v_pdwakeups;	/* (p) times daemon has awaken from sleep */
 	u_int v_pdpages;	/* (p) pages analyzed by daemon */
 

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c	Tue Aug  9 03:47:38 2016	(r303865)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_meter.c	Tue Aug  9 04:41:33 2016	(r303866)
@@ -286,7 +286,7 @@ VM_STATS_VM(v_vnodeout, "Vnode pager pag
 VM_STATS_VM(v_vnodepgsin, "Vnode pages paged in");
 VM_STATS_VM(v_vnodepgsout, "Vnode pages paged out");
 VM_STATS_VM(v_intrans, "In transit page faults");
-VM_STATS_VM(v_reactivated, "Pages reactivated from free list");
+VM_STATS_VM(v_reactivated, "Pages reactivated by pagedaemon");
 VM_STATS_VM(v_pdwakeups, "Pagedaemon wakeups");
 VM_STATS_VM(v_pdpages, "Pages analyzed by pagedaemon");
 VM_STATS_VM(v_tcached, "Total pages cached");

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_page.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_page.c	Tue Aug  9 03:47:38 2016	(r303865)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_page.c	Tue Aug  9 04:41:33 2016	(r303866)
@@ -1727,9 +1727,7 @@ vm_page_alloc(vm_object_t object, vm_pin
 		    ("vm_page_alloc: cached page %p is PG_ZERO", m));
 		KASSERT(m->valid != 0,
 		    ("vm_page_alloc: cached page %p is invalid", m));
-		if (m->object == object && m->pindex == pindex)
-			vm_cnt.v_reactivated++;
-		else
+		if (m->object != object || m->pindex != pindex)
 			m->valid = 0;
 		m_object = m->object;
 		vm_page_cache_remove(m);

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Tue Aug  9 03:47:38 2016	(r303865)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Tue Aug  9 04:41:33 2016	(r303866)
@@ -954,6 +954,7 @@ vm_pageout_launder(struct vm_domain *vmd
 		}
 		if (act_delta != 0) {
 			if (object->ref_count != 0) {
+				PCPU_INC(cnt.v_reactivated);
 				vm_page_activate(m);
 
 				/*
@@ -1351,6 +1352,7 @@ unlock_page:
 		}
 		if (act_delta != 0) {
 			if (object->ref_count != 0) {
+				PCPU_INC(cnt.v_reactivated);
 				vm_page_activate(m);
 
 				/*


More information about the svn-src-user mailing list