svn commit: r306712 - head/sys/vm

Alan Cox alc at FreeBSD.org
Wed Oct 5 17:32:08 UTC 2016


Author: alc
Date: Wed Oct  5 17:32:06 2016
New Revision: 306712
URL: https://svnweb.freebsd.org/changeset/base/306712

Log:
  Make the page daemon's notion of what kind of pass is being performed
  by vm_pageout_scan() local to vm_pageout_worker().  There is no reason
  to store the pass in the NUMA domain structure.
  
  Reviewed by:	kib
  MFC after:	3 weeks

Modified:
  head/sys/vm/vm_page.c
  head/sys/vm/vm_page.h
  head/sys/vm/vm_pageout.c

Modified: head/sys/vm/vm_page.c
==============================================================================
--- head/sys/vm/vm_page.c	Wed Oct  5 17:26:32 2016	(r306711)
+++ head/sys/vm/vm_page.c	Wed Oct  5 17:32:06 2016	(r306712)
@@ -394,7 +394,6 @@ vm_page_domain_init(struct vm_domain *vm
 	vmd->vmd_free_count = 0;
 	vmd->vmd_segs = 0;
 	vmd->vmd_oom = FALSE;
-	vmd->vmd_pass = 0;
 	for (i = 0; i < PQ_COUNT; i++) {
 		pq = &vmd->vmd_pagequeues[i];
 		TAILQ_INIT(&pq->pq_pl);
@@ -3928,14 +3927,12 @@ DB_SHOW_COMMAND(pageq, vm_page_print_pag
 	db_printf("pq_free %d pq_cache %d\n",
 	    vm_cnt.v_free_count, vm_cnt.v_cache_count);
 	for (dom = 0; dom < vm_ndomains; dom++) {
-		db_printf(
-	"dom %d page_cnt %d free %d pq_act %d pq_inact %d pass %d\n",
+		db_printf("dom %d page_cnt %d free %d pq_act %d pq_inact %d\n",
 		    dom,
 		    vm_dom[dom].vmd_page_count,
 		    vm_dom[dom].vmd_free_count,
 		    vm_dom[dom].vmd_pagequeues[PQ_ACTIVE].pq_cnt,
-		    vm_dom[dom].vmd_pagequeues[PQ_INACTIVE].pq_cnt,
-		    vm_dom[dom].vmd_pass);
+		    vm_dom[dom].vmd_pagequeues[PQ_INACTIVE].pq_cnt);
 	}
 }
 

Modified: head/sys/vm/vm_page.h
==============================================================================
--- head/sys/vm/vm_page.h	Wed Oct  5 17:26:32 2016	(r306711)
+++ head/sys/vm/vm_page.h	Wed Oct  5 17:32:06 2016	(r306712)
@@ -226,7 +226,6 @@ struct vm_domain {
 	u_int vmd_free_count;
 	long vmd_segs;	/* bitmask of the segments */
 	boolean_t vmd_oom;
-	int vmd_pass;	/* local pagedaemon pass */
 	int vmd_oom_seq;
 	int vmd_last_active_scan;
 	struct vm_page vmd_marker; /* marker for pagedaemon private use */

Modified: head/sys/vm/vm_pageout.c
==============================================================================
--- head/sys/vm/vm_pageout.c	Wed Oct  5 17:26:32 2016	(r306711)
+++ head/sys/vm/vm_pageout.c	Wed Oct  5 17:32:06 2016	(r306712)
@@ -1509,11 +1509,12 @@ static void
 vm_pageout_worker(void *arg)
 {
 	struct vm_domain *domain;
-	int domidx;
+	int domidx, pass;
 	bool target_met;
 
 	domidx = (uintptr_t)arg;
 	domain = &vm_dom[domidx];
+	pass = 0;
 	target_met = true;
 
 	/*
@@ -1575,9 +1576,9 @@ vm_pageout_worker(void *arg)
 			 * and try again later.
 			 */
 			mtx_unlock(&vm_page_queue_free_mtx);
-			if (domain->vmd_pass > 1)
+			if (pass > 1)
 				pause("psleep", hz / 2);
-			domain->vmd_pass++;
+			pass++;
 		} else {
 			/*
 			 * Yes.  Sleep until pages need to be reclaimed or
@@ -1587,12 +1588,12 @@ vm_pageout_worker(void *arg)
 			    &vm_page_queue_free_mtx, PDROP | PVM, "psleep",
 			    hz) == 0) {
 				PCPU_INC(cnt.v_pdwakeups);
-				domain->vmd_pass = 1;
+				pass = 1;
 			} else
-				domain->vmd_pass = 0;
+				pass = 0;
 		}
 
-		target_met = vm_pageout_scan(domain, domain->vmd_pass);
+		target_met = vm_pageout_scan(domain, pass);
 	}
 }
 


More information about the svn-src-all mailing list