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 {