From owner-svn-src-user@FreeBSD.ORG Mon Mar 4 12:33:41 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 6A153E10; Mon, 4 Mar 2013 12:33:41 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 58CFA1638; Mon, 4 Mar 2013 12:33:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id r24CXfG6049018; Mon, 4 Mar 2013 12:33:41 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r24CXeHD049012; Mon, 4 Mar 2013 12:33:40 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201303041233.r24CXeHD049012@svn.freebsd.org> From: Attilio Rao Date: Mon, 4 Mar 2013 12:33:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247786 - user/attilio/vmc-playground/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Mar 2013 12:33:41 -0000 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);