svn commit: r243070 - head/sys/kern
Edward Tomasz Napierala
trasz at FreeBSD.org
Thu Nov 15 14:11:35 UTC 2012
Author: trasz
Date: Thu Nov 15 14:11:34 2012
New Revision: 243070
URL: http://svnweb.freebsd.org/changeset/base/243070
Log:
Fix kassert that's not really valid for %CPU accounting. The problem
here is race between decaying the resource usage in containers, and updating
per-process usage; basically, the former may cause per-container usage
to get smaller than per-process usage.
Submitted by: Rudo Tomori
Modified:
head/sys/kern/kern_racct.c
Modified: head/sys/kern/kern_racct.c
==============================================================================
--- head/sys/kern/kern_racct.c Thu Nov 15 14:10:51 2012 (r243069)
+++ head/sys/kern/kern_racct.c Thu Nov 15 14:11:34 2012 (r243070)
@@ -403,7 +403,7 @@ racct_sub_racct(struct racct *dest, cons
* Update resource usage in dest.
*/
for (i = 0; i <= RACCT_MAX; i++) {
- if (!RACCT_IS_SLOPPY(i)) {
+ if (!RACCT_IS_SLOPPY(i) && !RACCT_IS_DECAYING(i)) {
KASSERT(dest->r_resources[i] >= 0,
("racct propagation meltdown: dest < 0"));
KASSERT(src->r_resources[i] >= 0,
@@ -414,7 +414,8 @@ racct_sub_racct(struct racct *dest, cons
if (RACCT_CAN_DROP(i)) {
dest->r_resources[i] -= src->r_resources[i];
if (dest->r_resources[i] < 0) {
- KASSERT(RACCT_IS_SLOPPY(i),
+ KASSERT(RACCT_IS_SLOPPY(i) ||
+ RACCT_IS_DECAYING(i),
("racct_sub_racct: usage < 0"));
dest->r_resources[i] = 0;
}
More information about the svn-src-all
mailing list