Module Name: src Committed By: christos Date: Tue May 8 19:33:57 UTC 2018
Modified Files: src/sys/uvm: uvm_extern.h uvm_fault.c uvm_fault_i.h Log Message: don't store the rssmax in the lwp rusage, it is a per proc property. Instead utilize an unused field in the vmspace struct to store it. Also conditionalize on platforms that have pmap statistics available. To generate a diff of this commit: cvs rdiff -u -r1.210 -r1.211 src/sys/uvm/uvm_extern.h cvs rdiff -u -r1.203 -r1.204 src/sys/uvm/uvm_fault.c cvs rdiff -u -r1.30 -r1.31 src/sys/uvm/uvm_fault_i.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/uvm/uvm_extern.h diff -u src/sys/uvm/uvm_extern.h:1.210 src/sys/uvm/uvm_extern.h:1.211 --- src/sys/uvm/uvm_extern.h:1.210 Fri Apr 20 15:02:18 2018 +++ src/sys/uvm/uvm_extern.h Tue May 8 15:33:57 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_extern.h,v 1.210 2018/04/20 19:02:18 jdolecek Exp $ */ +/* $NetBSD: uvm_extern.h,v 1.211 2018/05/08 19:33:57 christos Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -557,7 +557,7 @@ struct vmspace { /* we copy from vm_startcopy to the end of the structure on fork */ #define vm_startcopy vm_rssize segsz_t vm_rssize; /* current resident set size in pages */ - segsz_t vm_swrss; /* resident set size before last swap */ + segsz_t vm_rssmax; /* max resident size in pages */ segsz_t vm_tsize; /* text size (pages) XXX */ segsz_t vm_dsize; /* data size (pages) XXX */ segsz_t vm_ssize; /* stack size (pages) */ Index: src/sys/uvm/uvm_fault.c diff -u src/sys/uvm/uvm_fault.c:1.203 src/sys/uvm/uvm_fault.c:1.204 --- src/sys/uvm/uvm_fault.c:1.203 Mon May 7 17:00:14 2018 +++ src/sys/uvm/uvm_fault.c Tue May 8 15:33:57 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_fault.c,v 1.203 2018/05/07 21:00:14 christos Exp $ */ +/* $NetBSD: uvm_fault.c,v 1.204 2018/05/08 19:33:57 christos Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: uvm_fault.c,v 1.203 2018/05/07 21:00:14 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: uvm_fault.c,v 1.204 2018/05/08 19:33:57 christos Exp $"); #include "opt_uvmhist.h" @@ -661,24 +661,22 @@ void uvmfault_update_stats(struct uvm_faultinfo *ufi) { struct vm_map *map; + struct vmspace *vm; struct proc *p; - struct lwp *l; vsize_t res; map = ufi->orig_map; p = curproc; KASSERT(p != NULL); - if (&p->p_vmspace->vm_map != map) + vm = p->p_vmspace; + + if (&vm->vm_map != map) return; res = pmap_resident_count(map->pmap); - /* Convert res from pages to kilobytes. */ - res <<= (PAGE_SHIFT - 10); - - l = curlwp; - if (l->l_ru.ru_maxrss < res) - l->l_ru.ru_maxrss = res; + if (vm->vm_rssmax < res) + vm->vm_rssmax = res; } /* Index: src/sys/uvm/uvm_fault_i.h diff -u src/sys/uvm/uvm_fault_i.h:1.30 src/sys/uvm/uvm_fault_i.h:1.31 --- src/sys/uvm/uvm_fault_i.h:1.30 Mon May 7 17:00:14 2018 +++ src/sys/uvm/uvm_fault_i.h Tue May 8 15:33:57 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: uvm_fault_i.h,v 1.30 2018/05/07 21:00:14 christos Exp $ */ +/* $NetBSD: uvm_fault_i.h,v 1.31 2018/05/08 19:33:57 christos Exp $ */ /* * Copyright (c) 1997 Charles D. Cranor and Washington University. @@ -52,7 +52,9 @@ uvmfault_unlockmaps(struct uvm_faultinfo return; } +#ifndef __HAVE_NO_PMAP_STATS uvmfault_update_stats(ufi); +#endif if (write_locked) { vm_map_unlock(ufi->map); } else {