PERFORCE change 188132 for review
Edward Tomasz Napierala
trasz at FreeBSD.org
Mon Jan 24 18:09:28 UTC 2011
http://p4web.freebsd.org/@@188132?ac=10
Change 188132 by trasz at trasz_victim on 2011/01/24 18:09:07
Get rid of %CPU dampening. This means the %CPU is not averaged now,
but it's at least sometimes correct.
Affected files ...
.. //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#61 edit
Differences ...
==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#61 (text+ko) ====
@@ -161,17 +161,6 @@
}
}
-static int
-container_resource_dampened(int resource)
-{
- switch (resource) {
- case RUSAGE_PCTCPU:
- return (1);
- default:
- return (0);
- }
-}
-
static void
container_add(struct container *dest, const struct container *src)
{
@@ -202,8 +191,7 @@
* Update resource usage in dest.
*/
for (i = 0; i <= RUSAGE_MAX; i++) {
- if (!container_resource_sloppy(i) &&
- !container_resource_dampened(i)) {
+ if (!container_resource_sloppy(i)) {
KASSERT(dest->c_resources[i] >= 0,
("resource usage propagation meltdown: dest < 0"));
KASSERT(src->c_resources[i] >= 0,
@@ -214,8 +202,7 @@
if (container_resource_reclaimable(i)) {
dest->c_resources[i] -= src->c_resources[i];
if (dest->c_resources[i] < 0) {
- KASSERT(container_resource_sloppy(i) ||
- container_resource_dampened(i),
+ KASSERT(container_resource_sloppy(i),
("container_sub: usage < 0"));
dest->c_resources[i] = 0;
}
@@ -250,8 +237,6 @@
continue;
if (!container_resource_reclaimable(i))
continue;
- if (container_resource_dampened(i))
- continue;
KASSERT(container->c_resources[i] == 0,
("destroying non-empty container: "
"%ju allocated for resource %d\n",
@@ -283,8 +268,7 @@
container->c_resources[resource] += amount;
if (container->c_resources[resource] < 0) {
- KASSERT(container_resource_sloppy(resource) ||
- container_resource_dampened(resource),
+ KASSERT(container_resource_sloppy(resource),
("container_alloc_resource: usage < 0"));
container->c_resources[resource] = 0;
}
@@ -653,6 +637,7 @@
rusage_set(p, RUSAGE_NPTS, 0);
rusage_set(p, RUSAGE_NTHR, 0);
rusage_set(p, RUSAGE_RSS, 0);
+ rusage_set(p, RUSAGE_PCTCPU, 0);
PROC_UNLOCK(p);
#ifdef RCTL
@@ -740,29 +725,6 @@
}
static void
-container_dampen_callback(struct container *container, void *arg2, void *arg3)
-{
- int orig, diff, hz;
-
- hz = *(int *)arg2;
-
- mtx_lock(&container_lock);
- orig = container->c_resources[RUSAGE_PCTCPU];
- KASSERT(orig >= 0, ("container_dampen_callback: orig < 0"));
- if (orig == 0) {
- mtx_unlock(&container_lock);
- return;
- }
- diff = orig / 10;
- if (diff == 0)
- diff = 1;
- container->c_resources[RUSAGE_PCTCPU] -= diff;
- KASSERT(container->c_resources[RUSAGE_PCTCPU] >= 0,
- ("container_dampen_callback: result < 0"));
- mtx_unlock(&container_lock);
-}
-
-static void
containerd(void)
{
struct thread *td;
@@ -771,11 +733,6 @@
uint64_t pctcpu, pctcpu_limit, runtime;
for (;;) {
- loginclass_container_foreach(container_dampen_callback, &hz,
- NULL);
- ui_container_foreach(container_dampen_callback, &hz, NULL);
- prison_container_foreach(container_dampen_callback, &hz, NULL);
-
sx_slock(&allproc_lock);
FOREACH_PROC_IN_SYSTEM(p) {
microuptime(&wallclock);
More information about the p4-projects
mailing list