diff options
author | bde <bde@FreeBSD.org> | 1998-11-26 14:00:08 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1998-11-26 14:00:08 +0000 |
commit | 0d3ca540eaf1a42592a9e7bb4e4f2f99145d7c9d (patch) | |
tree | 14790acce7fc25f645299e88a64884d32f0489a3 /sys/kern/kern_synch.c | |
parent | 1c6d286a6231e75c69b9fa3db589cbd8cab204c8 (diff) | |
download | FreeBSD-src-0d3ca540eaf1a42592a9e7bb4e4f2f99145d7c9d.zip FreeBSD-src-0d3ca540eaf1a42592a9e7bb4e4f2f99145d7c9d.tar.gz |
Fixed scaling of p_pctcpu. It was wrong by a factor of stathz/hz.
Until recently, this was half compensated for in at least ps and top
by multiplying by 100/stathz to get a better wrong factor of 100/hz.
Diffstat (limited to 'sys/kern/kern_synch.c')
-rw-r--r-- | sys/kern/kern_synch.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index 2af5970..366a9d4 100644 --- a/sys/kern/kern_synch.c +++ b/sys/kern/kern_synch.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)kern_synch.c 8.9 (Berkeley) 5/19/95 - * $Id: kern_synch.c,v 1.64 1998/10/25 19:57:23 bde Exp $ + * $Id: kern_synch.c,v 1.65 1998/10/25 20:11:36 bde Exp $ */ #include "opt_ktrace.h" @@ -277,13 +277,13 @@ schedcpu(arg) * p_pctcpu is only for ps. */ #if (FSHIFT >= CCPU_SHIFT) - p->p_pctcpu += (hz == 100)? + p->p_pctcpu += (stathz == 100)? ((fixpt_t) p->p_cpticks) << (FSHIFT - CCPU_SHIFT): 100 * (((fixpt_t) p->p_cpticks) - << (FSHIFT - CCPU_SHIFT)) / hz; + << (FSHIFT - CCPU_SHIFT)) / stathz; #else p->p_pctcpu += ((FSCALE - ccpu) * - (p->p_cpticks * FSCALE / hz)) >> FSHIFT; + (p->p_cpticks * FSCALE / stathz)) >> FSHIFT; #endif p->p_cpticks = 0; newcpu = (u_int) decay_cpu(loadfac, p->p_estcpu) + p->p_nice; @@ -293,7 +293,7 @@ schedcpu(arg) #define PPQ (128 / NQS) /* priorities per queue */ if ((p != curproc) && #ifdef SMP - (u_char)p->p_oncpu == 0xff && /* idle */ + p->p_oncpu == 0xff && /* idle */ #endif p->p_stat == SRUN && (p->p_flag & P_INMEM) && @@ -635,7 +635,7 @@ mi_switch() #ifdef SIMPLELOCK_DEBUG if (p->p_simple_locks) - printf("sleep: holding simple lock\n"); + Debugger("sleep: holding simple lock\n"); #endif /* * Compute the amount of time during which the current @@ -651,9 +651,9 @@ mi_switch() */ if (p->p_stat != SZOMB && p->p_runtime > p->p_limit->p_cpulimit) { rlim = &p->p_rlimit[RLIMIT_CPU]; - if (p->p_runtime / (rlim_t)1000000 >= rlim->rlim_max) { + if (p->p_runtime / 1000000 >= rlim->rlim_max) killproc(p, "exceeded maximum CPU limit"); - } else { + else { psignal(p, SIGXCPU); if (rlim->rlim_cur < rlim->rlim_max) { /* XXX: we should make a private copy */ |