Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Mar 2013 12:33:40 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r247786 - user/attilio/vmc-playground/sys/vm
Message-ID:  <201303041233.r24CXeHD049012@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Mon Mar  4 12:33:40 2013
New Revision: 247786
URL: http://svnweb.freebsd.org/changeset/base/247786

Log:
  Evaluations on the likelyhood of empty object cache cannot be made in
  general way but must be evaluated case by case.
  Embedd the decision in the caller themselves rather than in a
  general purpose KPI.
  
  Sponsored by:	EMC / Isilon storage division
  Reported by:	alc
  Reviewed by:	alc

Modified:
  user/attilio/vmc-playground/sys/vm/vm_object.c
  user/attilio/vmc-playground/sys/vm/vm_object.h
  user/attilio/vmc-playground/sys/vm/vm_page.c

Modified: user/attilio/vmc-playground/sys/vm/vm_object.c
==============================================================================
--- user/attilio/vmc-playground/sys/vm/vm_object.c	Mon Mar  4 12:20:48 2013	(r247785)
+++ user/attilio/vmc-playground/sys/vm/vm_object.c	Mon Mar  4 12:33:40 2013	(r247786)
@@ -755,7 +755,7 @@ vm_object_terminate(vm_object_t object)
 	if (__predict_false(!LIST_EMPTY(&object->rvq)))
 		vm_reserv_break_all(object);
 #endif
-	if (!vm_object_cache_is_empty(object))
+	if (__predict_false(!vm_object_cache_is_empty(object)))
 		vm_page_cache_free(object, 0, 0);
 
 	/*
@@ -1380,7 +1380,7 @@ retry:
 		 * should still be OBJT_DEFAULT and orig_object should not
 		 * contain any cached pages within the specified range.
 		 */
-		if (!vm_object_cache_is_empty(orig_object))
+		if (__predict_false(!vm_object_cache_is_empty(orig_object)))
 			vm_page_cache_transfer(orig_object, offidxstart,
 			    new_object);
 	}
@@ -1729,7 +1729,8 @@ vm_object_collapse(vm_object_t object)
 				/*
 				 * Free any cached pages from backing_object.
 				 */
-				if (!vm_object_cache_is_empty(backing_object))
+				if (__predict_false(
+				    !vm_object_cache_is_empty(backing_object)))
 					vm_page_cache_free(backing_object, 0, 0);
 			}
 			/*
@@ -1923,7 +1924,7 @@ again:
 	}
 	vm_object_pip_wakeup(object);
 skipmemq:
-	if (!vm_object_cache_is_empty(object))
+	if (__predict_false(!vm_object_cache_is_empty(object)))
 		vm_page_cache_free(object, start, end);
 }
 

Modified: user/attilio/vmc-playground/sys/vm/vm_object.h
==============================================================================
--- user/attilio/vmc-playground/sys/vm/vm_object.h	Mon Mar  4 12:20:48 2013	(r247785)
+++ user/attilio/vmc-playground/sys/vm/vm_object.h	Mon Mar  4 12:33:40 2013	(r247786)
@@ -235,7 +235,7 @@ static __inline boolean_t
 vm_object_cache_is_empty(vm_object_t object)
 {
 
-	return (__predict_true(object->cache.rt_root == 0));
+	return (object->cache.rt_root == 0);
 }
 
 vm_object_t vm_object_allocate (objtype_t, vm_pindex_t);

Modified: user/attilio/vmc-playground/sys/vm/vm_page.c
==============================================================================
--- user/attilio/vmc-playground/sys/vm/vm_page.c	Mon Mar  4 12:20:48 2013	(r247785)
+++ user/attilio/vmc-playground/sys/vm/vm_page.c	Mon Mar  4 12:33:40 2013	(r247786)
@@ -1017,7 +1017,7 @@ vm_page_cache_free(vm_object_t object, v
 	boolean_t empty;
 
 	mtx_lock(&vm_page_queue_free_mtx);
-	if (vm_object_cache_is_empty(object)) {
+	if (__predict_false(vm_object_cache_is_empty(object))) {
 		mtx_unlock(&vm_page_queue_free_mtx);
 		return;
 	}
@@ -1136,7 +1136,7 @@ vm_page_is_cached(vm_object_t object, vm
 	 * exist.
 	 */
 	VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
-	if (vm_object_cache_is_empty(object))
+	if (__predict_true(vm_object_cache_is_empty(object)))
 		return (FALSE);
 	mtx_lock(&vm_page_queue_free_mtx);
 	m = vm_page_cache_lookup(object, pindex);



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