summaryrefslogtreecommitdiffstats
path: root/sys/vm
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2017-02-27 17:18:05 +0000
committeravg <avg@FreeBSD.org>2017-02-27 17:18:05 +0000
commit1dc77a085c43cbefecfb63a858041224e8f737b1 (patch)
treecd8490ba37d9b406b7b079840003b297bb31b430 /sys/vm
parentc7136ea0d82fe5c962d32f90368c4a60517eed35 (diff)
downloadFreeBSD-src-1dc77a085c43cbefecfb63a858041224e8f737b1.zip
FreeBSD-src-1dc77a085c43cbefecfb63a858041224e8f737b1.tar.gz
MFC r313730: try to fix RACCT_RSS accounting
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_pageout.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c
index ed9d439..a2b2ddb 100644
--- a/sys/vm/vm_pageout.c
+++ b/sys/vm/vm_pageout.c
@@ -1806,12 +1806,14 @@ again:
if (size >= limit) {
vm_pageout_map_deactivate_pages(
&vm->vm_map, limit);
+ size = vmspace_resident_count(vm);
}
#ifdef RACCT
if (racct_enable) {
rsize = IDX_TO_OFF(size);
PROC_LOCK(p);
- racct_set(p, RACCT_RSS, rsize);
+ if (p->p_state == PRS_NORMAL)
+ racct_set(p, RACCT_RSS, rsize);
ravailable = racct_get_available(p, RACCT_RSS);
PROC_UNLOCK(p);
if (rsize > ravailable) {
@@ -1837,7 +1839,8 @@ again:
size = vmspace_resident_count(vm);
rsize = IDX_TO_OFF(size);
PROC_LOCK(p);
- racct_set(p, RACCT_RSS, rsize);
+ if (p->p_state == PRS_NORMAL)
+ racct_set(p, RACCT_RSS, rsize);
PROC_UNLOCK(p);
if (rsize > ravailable)
tryagain = 1;
OpenPOWER on IntegriCloud