Module Name: src Committed By: matt Date: Fri Jan 7 01:11:13 UTC 2011
Modified Files: src/sys/kern [matt-nb5-pq3]: kern_clock.c src/sys/sys [matt-nb5-pq3]: cpu_data.h Log Message: Accumulate syscall, context switch, and other uvmexp counts in cpu_data and merge into uvmexp. (smaller less impact change than the one for HEAD). To generate a diff of this commit: cvs rdiff -u -r1.126 -r1.126.20.1 src/sys/kern/kern_clock.c cvs rdiff -u -r1.27 -r1.27.20.1 src/sys/sys/cpu_data.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/kern/kern_clock.c diff -u src/sys/kern/kern_clock.c:1.126 src/sys/kern/kern_clock.c:1.126.20.1 --- src/sys/kern/kern_clock.c:1.126 Sun Oct 5 21:57:20 2008 +++ src/sys/kern/kern_clock.c Fri Jan 7 01:11:13 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_clock.c,v 1.126 2008/10/05 21:57:20 pooka Exp $ */ +/* $NetBSD: kern_clock.c,v 1.126.20.1 2011/01/07 01:11:13 matt Exp $ */ /*- * Copyright (c) 2000, 2004, 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -69,7 +69,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_clock.c,v 1.126 2008/10/05 21:57:20 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_clock.c,v 1.126.20.1 2011/01/07 01:11:13 matt Exp $"); #include "opt_ntp.h" #include "opt_perfctrs.h" @@ -321,13 +321,23 @@ ci = l->l_cpu; - /* Accumulate syscall and context switch counts. */ + /* + * Accumulate syscall, context switch, and other uvmexp counts. There + * is a small window where we could loose an counter increment but + * the overhead just isn't worth it to have perfect statistics. + */ atomic_add_int((unsigned *)&uvmexp.swtch, ci->ci_data.cpu_nswtch); ci->ci_data.cpu_nswtch = 0; atomic_add_int((unsigned *)&uvmexp.syscalls, ci->ci_data.cpu_nsyscall); ci->ci_data.cpu_nsyscall = 0; atomic_add_int((unsigned *)&uvmexp.traps, ci->ci_data.cpu_ntrap); ci->ci_data.cpu_ntrap = 0; + atomic_add_int((unsigned *)&uvmexp.intrs, ci->ci_data.cpu_nintr); + ci->ci_data.cpu_nintr = 0; + atomic_add_int((unsigned *)&uvmexp.softs, ci->ci_data.cpu_nsoft); + ci->ci_data.cpu_nsoft = 0; + atomic_add_int((unsigned *)&uvmexp.faults, ci->ci_data.cpu_nfault); + ci->ci_data.cpu_nfault = 0; if ((l->l_flag & LW_IDLE) != 0) return; Index: src/sys/sys/cpu_data.h diff -u src/sys/sys/cpu_data.h:1.27 src/sys/sys/cpu_data.h:1.27.20.1 --- src/sys/sys/cpu_data.h:1.27 Tue Jun 3 15:50:22 2008 +++ src/sys/sys/cpu_data.h Fri Jan 7 01:11:13 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: cpu_data.h,v 1.27 2008/06/03 15:50:22 ad Exp $ */ +/* $NetBSD: cpu_data.h,v 1.27.20.1 2011/01/07 01:11:13 matt Exp $ */ /*- * Copyright (c) 2004, 2006, 2007, 2008 The NetBSD Foundation, Inc. @@ -86,6 +86,9 @@ u_int cpu_nsyscall; /* syscall counter */ u_int cpu_ntrap; /* trap counter */ u_int cpu_nswtch; /* context switch counter */ + u_int cpu_nintr; /* interrupt count */ + u_int cpu_nsoft; /* soft interrupt count */ + u_int cpu_nfault; /* pagefault counter */ void *cpu_uvm; /* uvm per-cpu data */ void *cpu_softcpu; /* soft interrupt table */ TAILQ_HEAD(,buf) cpu_biodone; /* finished block xfers */