Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 2 Aug 2016 02:29:49 +0000 (UTC)
From:      Mark Johnston <markj@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r303653 - user/alc/PQ_LAUNDRY/sys/vm
Message-ID:  <201608020229.u722Tnas008257@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: markj
Date: Tue Aug  2 02:29:48 2016
New Revision: 303653
URL: https://svnweb.freebsd.org/changeset/base/303653

Log:
  Add a parameter to vm_pageout_launder() to indicate shortfall.
  
  Otherwise vm_pageout_launder() is repeating a computation of its caller.
  
  Suggested by:	alc

Modified:
  user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c

Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Tue Aug  2 00:15:08 2016	(r303652)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Tue Aug  2 02:29:48 2016	(r303653)
@@ -249,7 +249,8 @@ SYSCTL_INT(_vm, OID_AUTO, max_wired,
 	CTLFLAG_RW, &vm_page_max_wired, 0, "System-wide limit to wired page count");
 
 static boolean_t vm_pageout_fallback_object_lock(vm_page_t, vm_page_t *);
-static int vm_pageout_launder(struct vm_domain *vmd, int launder);
+static int vm_pageout_launder(struct vm_domain *vmd, int launder,
+    bool shortfall);
 static void vm_pageout_laundry_worker(void *arg);
 #if !defined(NO_SWAPPING)
 static void vm_pageout_map_deactivate_pages(vm_map_t, long);
@@ -892,14 +893,14 @@ unlock_mp:
  * Returns the number of pages successfully laundered.
  */
 static int
-vm_pageout_launder(struct vm_domain *vmd, int launder)
+vm_pageout_launder(struct vm_domain *vmd, int launder, bool shortfall)
 {
 	vm_page_t m, next;
 	struct vm_pagequeue *pq;
 	vm_object_t object;
 	int act_delta, error, maxscan, numpagedout, starting_target;
 	int vnodes_skipped;
-	boolean_t pageout_ok, queue_locked, shortfall;
+	boolean_t pageout_ok, queue_locked;
 
 	starting_target = launder;
 	vnodes_skipped = 0;
@@ -916,7 +917,6 @@ vm_pageout_launder(struct vm_domain *vmd
 	 */
 	pq = &vmd->vmd_pagequeues[PQ_LAUNDRY];
 	maxscan = pq->pq_cnt;
-	shortfall = vm_laundry_target() > 0;
 
 	vm_pagequeue_lock(pq);
 	queue_locked = TRUE;
@@ -1191,8 +1191,8 @@ vm_pageout_laundry_worker(void *arg)
 
 dolaundry:
 		if (launder > 0)
-			target -= min(vm_pageout_launder(domain, launder),
-			    target);
+			target -= min(vm_pageout_launder(domain, launder,
+			    shortfall > 0), target);
 
 		tsleep(&vm_cnt.v_laundry_count, PVM, "laundr",
 		    hz / VM_LAUNDER_INTERVAL);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201608020229.u722Tnas008257>