From 8fcdfb646d145f285341ef597568bb9e003ce28f Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Fri, 17 Jun 2016 12:50:45 +0200 Subject: Change page cache statistics Instead of reporting statistics about unreferenced objects (the object cache), report statistics about external objects (the page cache). * vm/vm_object.c (vm_object_cached_count): Remove variable. (vm_object_cache_add): Remove object cache stats updates. (vm_object_cache_remove): Likewise. (vm_object_terminate): Update page cache stats. * vm/vm_object.h (vm_object_cached_count): Remove variable. (vm_object_cached_pages): Likewise. (vm_object_cached_pages_lock_data): Likewise. (vm_object_cached_pages_update): Remove macro. (vm_object_external_count): New extern variable. (vm_object_external_pages): Likewise. * vm/vm_resident.c (vm_object_external_count): New variable. (vm_object_external_pages): Likewise. (vm_page_insert): Remove object cache stats updates and update page cache stats. (vm_page_replace): Likewise. (vm_page_remove): Likewise. * vm/vm_user.c (vm_cache_statistics): Report page cache stats instead of object cache stats. --- vm/vm_resident.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'vm/vm_resident.c') diff --git a/vm/vm_resident.c b/vm/vm_resident.c index 79481a7b..ed867f54 100644 --- a/vm/vm_resident.c +++ b/vm/vm_resident.c @@ -100,6 +100,8 @@ decl_simple_lock_data(,vm_page_queue_free_lock) unsigned int vm_page_free_wanted; int vm_page_fictitious_count; int vm_page_external_count; +int vm_object_external_count; +int vm_object_external_pages; /* * This variable isn't directly used. It's merely a placeholder for the @@ -374,9 +376,6 @@ void vm_page_insert( object->resident_page_count++; assert(object->resident_page_count != 0); - if (object->can_persist && (object->ref_count == 0)) - vm_object_cached_pages_update(1); - /* * Detect sequential access and inactivate previous page. * We ignore busy pages. @@ -391,6 +390,10 @@ void vm_page_insert( vm_page_deactivate(last_mem); } object->last_alloc = offset; + + if (!object->internal) { + vm_object_external_pages++; + } } /* @@ -444,9 +447,9 @@ void vm_page_replace( m->tabled = FALSE; object->resident_page_count--; - if (object->can_persist - && (object->ref_count == 0)) - vm_object_cached_pages_update(-1); + if (!object->internal) { + vm_object_external_pages--; + } /* * Return page to the free list. @@ -481,8 +484,9 @@ void vm_page_replace( object->resident_page_count++; assert(object->resident_page_count != 0); - if (object->can_persist && (object->ref_count == 0)) - vm_object_cached_pages_update(1); + if (!object->internal) { + vm_object_external_pages++; + } } /* @@ -539,8 +543,9 @@ void vm_page_remove( mem->tabled = FALSE; - if (mem->object->can_persist && (mem->object->ref_count == 0)) - vm_object_cached_pages_update(-1); + if (!mem->object->internal) { + vm_object_external_pages--; + } } /* -- cgit v1.2.3