diff options
| author | Brian Feldman <green@FreeBSD.org> | 2000-01-28 20:40:29 +0000 |
|---|---|---|
| committer | Brian Feldman <green@FreeBSD.org> | 2000-01-28 20:40:29 +0000 |
| commit | 8950d2445635ef8789ae96d30feb4b868dc8d1ce (patch) | |
| tree | f85f144074065b4ddb76b34c202ece05b6d9127d | |
| parent | a6324d7034f8c6a7e67d322e09211a1ee7d77799 (diff) | |
Notes
| -rw-r--r-- | sys/kern/kern_resource.c | 33 | ||||
| -rw-r--r-- | sys/sys/proc.h | 11 | ||||
| -rw-r--r-- | sys/sys/resourcevar.h | 3 |
3 files changed, 23 insertions, 24 deletions
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c index 495175ed935b..0307369bb071 100644 --- a/sys/kern/kern_resource.c +++ b/sys/kern/kern_resource.c @@ -528,7 +528,7 @@ calcru(p, up, sp, ip) tu += (tv.tv_usec - switchtime.tv_usec) + (tv.tv_sec - switchtime.tv_sec) * (int64_t)1000000; } - ptu = p->p_stats->p_uu + p->p_stats->p_su + p->p_stats->p_iu; + ptu = p->p_uu + p->p_su + p->p_iu; if (tu < ptu || (int64_t)tu < 0) { /* XXX no %qd in kernel. Truncate. */ printf("calcru: negative time of %ld usec for pid %d (%s)\n", @@ -542,30 +542,29 @@ calcru(p, up, sp, ip) iu = tu - uu - su; /* Enforce monotonicity. */ - if (uu < p->p_stats->p_uu || su < p->p_stats->p_su || - iu < p->p_stats->p_iu) { - if (uu < p->p_stats->p_uu) - uu = p->p_stats->p_uu; - else if (uu + p->p_stats->p_su + p->p_stats->p_iu > tu) - uu = tu - p->p_stats->p_su - p->p_stats->p_iu; + if (uu < p->p_uu || su < p->p_su || iu < p->p_iu) { + if (uu < p->p_uu) + uu = p->p_uu; + else if (uu + p->p_su + p->p_iu > tu) + uu = tu - p->p_su - p->p_iu; if (st == 0) - su = p->p_stats->p_su; + su = p->p_su; else { su = ((tu - uu) * st) / (st + it); - if (su < p->p_stats->p_su) - su = p->p_stats->p_su; - else if (uu + su + p->p_stats->p_iu > tu) - su = tu - uu - p->p_stats->p_iu; + if (su < p->p_su) + su = p->p_su; + else if (uu + su + p->p_iu > tu) + su = tu - uu - p->p_iu; } - KASSERT(uu + su + p->p_stats->p_iu <= tu, + KASSERT(uu + su + p->p_iu <= tu, ("calcru: monotonisation botch 1")); iu = tu - uu - su; - KASSERT(iu >= p->p_stats->p_iu, + KASSERT(iu >= p->p_iu, ("calcru: monotonisation botch 2")); } - p->p_stats->p_uu = uu; - p->p_stats->p_su = su; - p->p_stats->p_iu = iu; + p->p_uu = uu; + p->p_su = su; + p->p_iu = iu; up->tv_sec = uu / 1000000; up->tv_usec = uu % 1000000; diff --git a/sys/sys/proc.h b/sys/sys/proc.h index f6af6d91b664..4c2eead9f775 100644 --- a/sys/sys/proc.h +++ b/sys/sys/proc.h @@ -172,10 +172,13 @@ struct proc { u_int p_slptime; /* Time since last blocked. */ struct itimerval p_realtimer; /* Alarm timer. */ - u_int64_t p_runtime; /* Real time in microsec. */ - u_quad_t p_uticks; /* Statclock hits in user mode. */ - u_quad_t p_sticks; /* Statclock hits in system mode. */ - u_quad_t p_iticks; /* Statclock hits processing intr. */ + u_int64_t p_runtime; /* Real time in microsec. */ + u_int64_t p_uu; /* Previous user time in microsec. */ + u_int64_t p_su; /* Previous system time in microsec. */ + u_int64_t p_iu; /* Previous interrupt time in usec. */ + u_int64_t p_uticks; /* Statclock hits in user mode. */ + u_int64_t p_sticks; /* Statclock hits in system mode. */ + u_int64_t p_iticks; /* Statclock hits processing intr. */ int p_traceflag; /* Kernel trace points. */ struct vnode *p_tracep; /* Trace to vnode. */ diff --git a/sys/sys/resourcevar.h b/sys/sys/resourcevar.h index 92ed5bf687bd..75a8f53994be 100644 --- a/sys/sys/resourcevar.h +++ b/sys/sys/resourcevar.h @@ -47,9 +47,6 @@ struct pstats { #define pstat_startzero p_ru struct rusage p_ru; /* stats for this proc */ struct rusage p_cru; /* sum of stats for reaped children */ - u_int64_t p_uu; /* previous user time (us) */ - u_int64_t p_su; /* previous system time (us) */ - u_int64_t p_iu; /* previous interrupt time (us) */ #define pstat_endzero pstat_startcopy #define pstat_startcopy p_timer |
