PERFORCE change 185409 for review
Edward Tomasz Napierala
trasz at FreeBSD.org
Fri Nov 5 19:36:26 UTC 2010
http://p4web.freebsd.org/@@185409?ac=10
Change 185409 by trasz at trasz_victim on 2010/11/05 19:36:20
Add cpu percentage accounting.
Affected files ...
.. //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#31 edit
.. //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#96 edit
.. //depot/projects/soc2009/trasz_limits/sys/kern/kern_resource.c#50 edit
.. //depot/projects/soc2009/trasz_limits/sys/sys/container.h#14 edit
Differences ...
==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_container.c#31 (text+ko) ====
@@ -93,6 +93,7 @@
case RUSAGE_NPROC:
case RUSAGE_NTHR:
case RUSAGE_WALLCLOCK:
+ case RUSAGE_PCTCPU:
return (0);
default:
return (1);
@@ -106,6 +107,7 @@
switch (resource) {
case RUSAGE_RSS:
case RUSAGE_WALLCLOCK:
+ case RUSAGE_PCTCPU:
return (0);
default:
return (1);
@@ -578,6 +580,7 @@
/*
* XXX: Free this some other way.
*/
+ rusage_set(p, RUSAGE_PCTCPU, 0);
rusage_set(p, RUSAGE_FSIZE, 0);
rusage_set(p, RUSAGE_NPTS, 0);
rusage_set(p, RUSAGE_NTHR, 0);
==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_hrl.c#96 (text+ko) ====
@@ -112,6 +112,7 @@
{ "nshm", RUSAGE_NSHM },
{ "shmsize", RUSAGE_SHMSIZE },
{ "wallclock", RUSAGE_WALLCLOCK },
+ { "pctcpu", RUSAGE_PCTCPU },
{ NULL, -1 }};
static struct dict actionnames[] = {
==== //depot/projects/soc2009/trasz_limits/sys/kern/kern_resource.c#50 (text+ko) ====
@@ -626,6 +626,7 @@
static void
rusage_cpu_task_fn(void *arg, int pending)
{
+ int pctcpu;
struct thread *td;
struct proc *p;
struct timeval wallclock;
@@ -633,14 +634,20 @@
sx_slock(&allproc_lock);
FOREACH_PROC_IN_SYSTEM(p) {
PROC_SLOCK(p);
+ pctcpu = 0;
FOREACH_THREAD_IN_PROC(p, td) {
ruxagg(p, td);
+ thread_lock(td);
+ pctcpu += sched_pctcpu(td);
+ thread_unlock(td);
}
PROC_SUNLOCK(p);
rusage_set(p, RUSAGE_CPU, cputick2usec(p->p_rux.rux_runtime));
microuptime(&wallclock);
timevalsub(&wallclock, &p->p_stats->p_start);
rusage_set(p, RUSAGE_WALLCLOCK, wallclock.tv_sec * 1000000 + wallclock.tv_usec);
+ pctcpu = ((pctcpu * 10000 + FSCALE / 2) >> FSHIFT) / 100;
+ rusage_set(p, RUSAGE_PCTCPU, pctcpu);
}
sx_sunlock(&allproc_lock);
==== //depot/projects/soc2009/trasz_limits/sys/sys/container.h#14 (text+ko) ====
@@ -76,7 +76,8 @@
#define RUSAGE_NSHM 21
#define RUSAGE_SHMSIZE 22
#define RUSAGE_WALLCLOCK 23
-#define RUSAGE_MAX RUSAGE_WALLCLOCK
+#define RUSAGE_PCTCPU 24
+#define RUSAGE_MAX RUSAGE_PCTCPU
/*
* 'container' defines resource consumption for a particular
More information about the p4-projects
mailing list