Date: Mon, 25 Dec 2017 19:36:04 +0000 (UTC) From: Alan Cox <alc@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r327179 - head/sys/vm Message-ID: <201712251936.vBPJa4qY049937@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: alc Date: Mon Dec 25 19:36:04 2017 New Revision: 327179 URL: https://svnweb.freebsd.org/changeset/base/327179 Log: Make the vm object bypass and collapse counters per CPU. Requested by: mjg Reviewed by: kib, markj MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D13611 Modified: head/sys/vm/vm_object.c Modified: head/sys/vm/vm_object.c ============================================================================== --- head/sys/vm/vm_object.c Mon Dec 25 19:08:39 2017 (r327178) +++ head/sys/vm/vm_object.c Mon Dec 25 19:36:04 2017 (r327179) @@ -148,14 +148,25 @@ struct vm_object kernel_object_store; static SYSCTL_NODE(_vm_stats, OID_AUTO, object, CTLFLAG_RD, 0, "VM object stats"); -static long object_collapses; -SYSCTL_LONG(_vm_stats_object, OID_AUTO, collapses, CTLFLAG_RD, - &object_collapses, 0, "VM object collapses"); +static counter_u64_t object_collapses = EARLY_COUNTER; +SYSCTL_COUNTER_U64(_vm_stats_object, OID_AUTO, collapses, CTLFLAG_RD, + &object_collapses, + "VM object collapses"); -static long object_bypasses; -SYSCTL_LONG(_vm_stats_object, OID_AUTO, bypasses, CTLFLAG_RD, - &object_bypasses, 0, "VM object bypasses"); +static counter_u64_t object_bypasses = EARLY_COUNTER; +SYSCTL_COUNTER_U64(_vm_stats_object, OID_AUTO, bypasses, CTLFLAG_RD, + &object_bypasses, + "VM object bypasses"); +static void +counter_startup(void) +{ + + object_collapses = counter_u64_alloc(M_WAITOK); + object_bypasses = counter_u64_alloc(M_WAITOK); +} +SYSINIT(object_counters, SI_SUB_CPU, SI_ORDER_ANY, counter_startup, NULL); + static uma_zone_t obj_zone; static int vm_object_zinit(void *mem, int size, int flags); @@ -1875,7 +1886,7 @@ vm_object_collapse(vm_object_t object) vm_object_destroy(backing_object); vm_object_pip_wakeup(object); - object_collapses++; + counter_u64_add(object_collapses, 1); } else { /* * If we do not entirely shadow the backing object, @@ -1916,7 +1927,7 @@ vm_object_collapse(vm_object_t object) */ backing_object->ref_count--; VM_OBJECT_WUNLOCK(backing_object); - object_bypasses++; + counter_u64_add(object_bypasses, 1); } /*
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201712251936.vBPJa4qY049937>