svn commit: r314347 - in stable/11/sys: kern vm
Andriy Gapon
avg at FreeBSD.org
Mon Feb 27 17:18:07 UTC 2017
Author: avg
Date: Mon Feb 27 17:18:05 2017
New Revision: 314347
URL: https://svnweb.freebsd.org/changeset/base/314347
Log:
MFC r313730: try to fix RACCT_RSS accounting
Modified:
stable/11/sys/kern/kern_racct.c
stable/11/sys/vm/vm_pageout.c
Directory Properties:
stable/11/ (props changed)
Modified: stable/11/sys/kern/kern_racct.c
==============================================================================
--- stable/11/sys/kern/kern_racct.c Mon Feb 27 17:12:17 2017 (r314346)
+++ stable/11/sys/kern/kern_racct.c Mon Feb 27 17:18:05 2017 (r314347)
@@ -1014,10 +1014,13 @@ racct_proc_exit(struct proc *p)
racct_set_locked(p, RACCT_CPU, runtime, 0);
racct_add_cred_locked(p->p_ucred, RACCT_PCTCPU, pct);
+ KASSERT(p->p_racct->r_resources[RACCT_RSS] == 0,
+ ("process reaped with %ju allocated for RSS\n",
+ p->p_racct->r_resources[RACCT_RSS]));
for (i = 0; i <= RACCT_MAX; i++) {
if (p->p_racct->r_resources[i] == 0)
continue;
- if (!RACCT_IS_RECLAIMABLE(i))
+ if (!RACCT_IS_RECLAIMABLE(i))
continue;
racct_set_locked(p, i, 0, 0);
}
Modified: stable/11/sys/vm/vm_pageout.c
==============================================================================
--- stable/11/sys/vm/vm_pageout.c Mon Feb 27 17:12:17 2017 (r314346)
+++ stable/11/sys/vm/vm_pageout.c Mon Feb 27 17:18:05 2017 (r314347)
@@ -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;
More information about the svn-src-stable
mailing list