diff options
author | dg <dg@FreeBSD.org> | 1994-10-15 13:33:09 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1994-10-15 13:33:09 +0000 |
commit | eb282b107c81103ce42f0b37144092efdb122e34 (patch) | |
tree | adf38595758c85a81c3a1f36384b83ab29d9da82 | |
parent | 0319b110ad1e36c981ce4a85afe1348f85054c3d (diff) | |
download | FreeBSD-src-eb282b107c81103ce42f0b37144092efdb122e34.zip FreeBSD-src-eb282b107c81103ce42f0b37144092efdb122e34.tar.gz |
1) Some of the counters in the vmmeter struct don't fit well into the Mach VM
scheme of things, so I've changed them to be more appropriate. page in/ous
are now associated with the pager that did them. Nuked v_fault as the
only fault of interest that wouldn't be already counted in v_trap is a VM
fault, and this is counted seperately.
2) Implemented most of the remaining counters and corrected the counting of
some that were done wrong. They are all almost correct now...just a few
minor ones left to fix.
-rw-r--r-- | sys/amd64/amd64/genassym.c | 6 | ||||
-rw-r--r-- | sys/i386/i386/genassym.c | 6 | ||||
-rw-r--r-- | sys/sys/vmmeter.h | 19 | ||||
-rw-r--r-- | sys/vm/swap_pager.c | 7 | ||||
-rw-r--r-- | sys/vm/vm_fault.c | 5 | ||||
-rw-r--r-- | sys/vm/vm_pageout.c | 7 | ||||
-rw-r--r-- | sys/vm/vnode_pager.c | 18 |
7 files changed, 37 insertions, 31 deletions
diff --git a/sys/amd64/amd64/genassym.c b/sys/amd64/amd64/genassym.c index 75836e1..eb6d9a2 100644 --- a/sys/amd64/amd64/genassym.c +++ b/sys/amd64/amd64/genassym.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)genassym.c 5.11 (Berkeley) 5/10/91 - * $Id: genassym.c,v 1.15 1994/10/06 09:22:44 rgrimes Exp $ + * $Id: genassym.c,v 1.16 1994/10/09 07:34:28 davidg Exp $ */ #include <sys/param.h> @@ -99,10 +99,6 @@ main() printf("#define\tV_SYSCALL %d\n", &vm->v_syscall); printf("#define\tV_INTR %d\n", &vm->v_intr); printf("#define\tV_SOFT %d\n", &vm->v_soft); -/* printf("#define\tV_PDMA %d\n", &vm->v_pdma); */ - printf("#define\tV_FAULTS %d\n", &vm->v_faults); -/* printf("#define\tV_PGREC %d\n", &vm->v_pgrec); */ -/* printf("#define\tV_FASTPGREC %d\n", &vm->v_fastpgrec); */ printf("#define\tUPAGES %d\n", UPAGES); printf("#define\tCLSIZE %d\n", CLSIZE); printf("#define\tNBPG %d\n", NBPG); diff --git a/sys/i386/i386/genassym.c b/sys/i386/i386/genassym.c index 75836e1..eb6d9a2 100644 --- a/sys/i386/i386/genassym.c +++ b/sys/i386/i386/genassym.c @@ -34,7 +34,7 @@ * SUCH DAMAGE. * * from: @(#)genassym.c 5.11 (Berkeley) 5/10/91 - * $Id: genassym.c,v 1.15 1994/10/06 09:22:44 rgrimes Exp $ + * $Id: genassym.c,v 1.16 1994/10/09 07:34:28 davidg Exp $ */ #include <sys/param.h> @@ -99,10 +99,6 @@ main() printf("#define\tV_SYSCALL %d\n", &vm->v_syscall); printf("#define\tV_INTR %d\n", &vm->v_intr); printf("#define\tV_SOFT %d\n", &vm->v_soft); -/* printf("#define\tV_PDMA %d\n", &vm->v_pdma); */ - printf("#define\tV_FAULTS %d\n", &vm->v_faults); -/* printf("#define\tV_PGREC %d\n", &vm->v_pgrec); */ -/* printf("#define\tV_FASTPGREC %d\n", &vm->v_fastpgrec); */ printf("#define\tUPAGES %d\n", UPAGES); printf("#define\tCLSIZE %d\n", CLSIZE); printf("#define\tNBPG %d\n", NBPG); diff --git a/sys/sys/vmmeter.h b/sys/sys/vmmeter.h index 6679ae0..2795097 100644 --- a/sys/sys/vmmeter.h +++ b/sys/sys/vmmeter.h @@ -31,7 +31,7 @@ * SUCH DAMAGE. * * @(#)vmmeter.h 8.1 (Berkeley) 6/2/93 - * $Id: vmmeter.h,v 1.3 1994/08/02 07:54:12 davidg Exp $ + * $Id: vmmeter.h,v 1.4 1994/08/21 04:42:14 paul Exp $ */ #ifndef _SYS_VMMETER_H_ @@ -49,7 +49,6 @@ struct vmmeter { unsigned v_syscall; /* calls to syscall() */ unsigned v_intr; /* device interrupts */ unsigned v_soft; /* software interrupts */ - unsigned v_faults; /* total faults taken */ /* * Virtual memory activity. */ @@ -57,14 +56,14 @@ struct vmmeter { unsigned v_hits; /* object cache hits */ unsigned v_vm_faults; /* number of address memory faults */ unsigned v_cow_faults; /* number of copy-on-writes */ - unsigned v_swpin; /* swapins */ - unsigned v_swpout; /* swapouts */ - unsigned v_pswpin; /* pages swapped in */ - unsigned v_pswpout; /* pages swapped out */ - unsigned v_pageins; /* number of pageins */ - unsigned v_pageouts; /* number of pageouts */ - unsigned v_pgpgin; /* pages paged in */ - unsigned v_pgpgout; /* pages paged out */ + unsigned v_swapin; /* swap pager pageins */ + unsigned v_swapout; /* swap pager pageouts */ + unsigned v_swappgsin; /* swap pager pages paged in */ + unsigned v_swappgsout; /* swap pager pages paged out */ + unsigned v_vnodein; /* vnode pager pageins */ + unsigned v_vnodeout; /* vnode pager pageouts */ + unsigned v_vnodepgsin; /* vnode_pager pages paged in */ + unsigned v_vnodepgsout; /* vnode pager pages paged out */ unsigned v_intrans; /* intransit blocking page faults */ unsigned v_reactivated; /* number of pages reactivated from free list */ unsigned v_rev; /* revolutions of the hand */ diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index d8f11fb..0da5541 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -39,7 +39,7 @@ * from: Utah $Hdr: swap_pager.c 1.4 91/04/30$ * * @(#)swap_pager.c 8.9 (Berkeley) 3/21/94 - * $Id: swap_pager.c,v 1.12 1994/10/14 01:58:52 davidg Exp $ + * $Id: swap_pager.c,v 1.13 1994/10/14 12:26:17 davidg Exp $ */ /* @@ -1081,6 +1081,8 @@ swap_pager_input(swp, m, count, reqpage) swp->sw_piip++; + cnt.v_swapin++; + cnt.v_swappgsin += count; /* * perform the I/O */ @@ -1457,6 +1459,9 @@ retrygetspace: bp->b_flags |= B_CALL; bp->b_iodone = swap_pager_iodone1; } + + cnt.v_swapout++; + cnt.v_swappgsout += count; /* * perform the I/O */ diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c index ab33027..45e9686 100644 --- a/sys/vm/vm_fault.c +++ b/sys/vm/vm_fault.c @@ -66,7 +66,7 @@ * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * - * $Id: vm_fault.c,v 1.7 1994/10/09 01:52:07 phk Exp $ + * $Id: vm_fault.c,v 1.8 1994/10/15 10:33:47 davidg Exp $ */ /* @@ -274,6 +274,7 @@ vm_fault(map, vaddr, fault_type, change_wiring) s = splhigh(); if (m->flags & (PG_BUSY|PG_VMIO)) { m->flags |= PG_WANTED; + cnt.v_intrans++; tsleep((caddr_t)m,PSWP,"vmpfw",0); } splx(s); @@ -371,7 +372,6 @@ vm_fault(map, vaddr, fault_type, change_wiring) * the routine. The reqpage return value is the index into the * marray for the vm_page_t passed to the routine. */ - cnt.v_pageins++; faultcount = vm_fault_additional_pages( first_object, first_offset, m, VM_FAULT_READ_BEHIND, VM_FAULT_READ_AHEAD, @@ -400,7 +400,6 @@ vm_fault(map, vaddr, fault_type, change_wiring) */ m = vm_page_lookup(object, offset); - cnt.v_pgpgin++; m->flags &= ~PG_FAKE; pmap_clear_modify(VM_PAGE_TO_PHYS(m)); hardfault++; diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index d99dd32..31fba30 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -65,7 +65,7 @@ * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. * - * $Id: vm_pageout.c,v 1.16 1994/10/09 01:52:15 phk Exp $ + * $Id: vm_pageout.c,v 1.17 1994/10/13 21:01:39 davidg Exp $ */ /* @@ -213,17 +213,12 @@ vm_pageout_clean(m, sync) pmap_page_protect(VM_PAGE_TO_PHYS(ms[i]), VM_PROT_READ); } object->paging_in_progress += pageout_count; - cnt.v_pageouts++; - cnt.v_pgpgout += pageout_count; } else { m->flags |= PG_BUSY; pmap_page_protect(VM_PAGE_TO_PHYS(m), VM_PROT_READ); - cnt.v_pageouts++; - cnt.v_pgpgout++; - object->paging_in_progress++; pager = vm_pager_allocate(PG_DFLT, (caddr_t)0, diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c index e424ab3..a194588 100644 --- a/sys/vm/vnode_pager.c +++ b/sys/vm/vnode_pager.c @@ -37,7 +37,7 @@ * SUCH DAMAGE. * * from: @(#)vnode_pager.c 7.5 (Berkeley) 4/20/91 - * $Id: vnode_pager.c,v 1.12 1994/10/14 08:57:25 jkh Exp $ + * $Id: vnode_pager.c,v 1.13 1994/10/14 12:26:18 davidg Exp $ */ /* @@ -809,6 +809,8 @@ vnode_pager_input(vnp, m, count, reqpage) vnode_pager_freepage(m[i]); } } + cnt.v_vnodein++; + cnt.v_vnodepgsin++; return vnode_pager_input_old(vnp, m[reqpage]); /* @@ -824,6 +826,8 @@ vnode_pager_input(vnp, m, count, reqpage) vnode_pager_freepage(m[i]); } } + cnt.v_vnodein++; + cnt.v_vnodepgsin++; return vnode_pager_input_smlfs(vnp, m[reqpage]); } /* @@ -1051,8 +1055,12 @@ vnode_pager_input(vnp, m, count, reqpage) bp->b_bcount = size; bp->b_bufsize = size; + cnt.v_vnodein++; + cnt.v_vnodepgsin += count; + /* do the input */ VOP_STRATEGY(bp); + if( counta) { for(i=0;i<counta;i++) { vm_page_deactivate(m[count+i]); @@ -1074,6 +1082,7 @@ vnode_pager_input(vnp, m, count, reqpage) bpa->b_bcount = sizea; bpa->b_bufsize = counta*PAGE_SIZE; + cnt.v_vnodepgsin += counta; VOP_STRATEGY(bpa); } @@ -1322,6 +1331,8 @@ retryoutput: pmap_clear_modify(VM_PAGE_TO_PHYS(m[0])); m[0]->flags |= PG_CLEAN; m[0]->flags &= ~PG_LAUNDRY; + cnt.v_vnodeout++; + cnt.v_vnodepgsout++; return rtvals[0]; } @@ -1340,6 +1351,8 @@ retryoutput: m[i]->flags &= ~PG_LAUNDRY; } } + cnt.v_vnodeout++; + cnt.v_vnodepgsout += count; return rtvals[0]; } @@ -1450,6 +1463,9 @@ retryoutput: bp->b_bcount = size; bp->b_bufsize = size; + cnt.v_vnodeout++; + cnt.v_vnodepgsout += count; + /* do the output */ VOP_STRATEGY(bp); |