projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
change %cpu constant; new disk monitoring/cpu scheme
[unix-history]
/
usr
/
src
/
sys
/
kern
/
kern_clock.c
diff --git
a/usr/src/sys/kern/kern_clock.c
b/usr/src/sys/kern/kern_clock.c
index
5b29708
..
3247eda
100644
(file)
--- a/
usr/src/sys/kern/kern_clock.c
+++ b/
usr/src/sys/kern/kern_clock.c
@@
-1,4
+1,4
@@
-/* %H% 3.
19
kern_clock.c */
+/* %H% 3.
21
kern_clock.c */
#include "../h/param.h"
#include "../h/systm.h"
#include "../h/param.h"
#include "../h/systm.h"
@@
-19,9
+19,13
@@
#define SCHMAG 9/10
#define SCHMAG 9/10
+/*
+ * Constant for decay filter for cpu usage.
+ */
+double ccpu = 0.95122942450071400909; /* exp(-1/20) */
/*
/*
- *
c
lock is called straight from
+ *
C
lock is called straight from
* the real time clock interrupt.
*
* Functions:
* the real time clock interrupt.
*
* Functions:
@@
-50,7
+54,7
@@
caddr_t pc;
register struct callo *p1, *p2;
register struct proc *pp;
register int s;
register struct callo *p1, *p2;
register struct proc *pp;
register int s;
- int a, cpstate;
+ int a, cpstate
, i
;
/*
* reprime clock
/*
* reprime clock
@@
-147,9
+151,13
@@
out:
else
u.u_vm.vm_stime++;
}
else
u.u_vm.vm_stime++;
}
- dk_time[cpstate][dk_busy&(DK_NSTATES-1)]++;
+ cp_time[cpstate]++;
+ for (i = 0; i < DK_NDRIVE; i++)
+ if (dk_busy&(1<<i))
+ dk_time[i]++;
if (!noproc) {
pp = u.u_procp;
if (!noproc) {
pp = u.u_procp;
+ pp->p_cpticks++;
if(++pp->p_cpu == 0)
pp->p_cpu--;
if(pp->p_cpu % 16 == 0) {
if(++pp->p_cpu == 0)
pp->p_cpu--;
if(pp->p_cpu % 16 == 0) {
@@
-206,10
+214,10
@@
out:
if(pp->p_stat==SSLEEP||pp->p_stat==SSTOP)
if (pp->p_slptime != 127)
pp->p_slptime++;
if(pp->p_stat==SSLEEP||pp->p_stat==SSTOP)
if (pp->p_slptime != 127)
pp->p_slptime++;
- if
(pp->p_flag&SLOAD) {
- ave(pp->p_aveflt, pp->p_faults, 5);
-
pp->p_faults = 0
;
- }
+ if
(pp->p_flag&SLOAD)
+ pp->p_pctcpu = ccpu * pp->p_pctcpu +
+
(1.0 - ccpu) * (pp->p_cpticks/(float)HZ)
;
+ pp->p_cpticks = 0;
a = (pp->p_cpu & 0377)*SCHMAG + pp->p_nice - NZERO;
if(a < 0)
a = 0;
a = (pp->p_cpu & 0377)*SCHMAG + pp->p_nice - NZERO;
if(a < 0)
a = 0;