%cpu
authorBill Joy <bill@ucbvax.Berkeley.EDU>
Sun, 12 Oct 1980 13:32:11 +0000 (05:32 -0800)
committerBill Joy <bill@ucbvax.Berkeley.EDU>
Sun, 12 Oct 1980 13:32:11 +0000 (05:32 -0800)
SCCS-vsn: sys/kern/kern_clock.c 3.20
SCCS-vsn: sys/kern/kern_proc.c 3.25
SCCS-vsn: sys/kern/kern_synch.c 3.15

usr/src/sys/kern/kern_clock.c
usr/src/sys/kern/kern_proc.c
usr/src/sys/kern/kern_synch.c

index 5b29708..84eef57 100644 (file)
@@ -1,4 +1,4 @@
-/*     %H%     3.19    kern_clock.c    */
+/*     %H%     3.20    kern_clock.c    */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #define        SCHMAG  9/10
 
 
 #define        SCHMAG  9/10
 
+/*
+ * Constant for decay filter for cpu usage.
+ */
+double ccpu = 0.93550698503161773774;          /* exp(-1/15) */
 
 /*
 
 /*
- * clock is called straight from
+ * Clock is called straight from
  * the real time clock interrupt.
  *
  * Functions:
  * the real time clock interrupt.
  *
  * Functions:
@@ -150,6 +154,7 @@ out:
        dk_time[cpstate][dk_busy&(DK_NSTATES-1)]++;
        if (!noproc) {
                pp = u.u_procp;
        dk_time[cpstate][dk_busy&(DK_NSTATES-1)]++;
        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 +211,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;
index 4f5ffeb..56f9909 100644 (file)
@@ -1,4 +1,4 @@
-/*     kern_proc.c     3.24    %G%     */
+/*     kern_proc.c     3.25    %G%     */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -411,7 +411,8 @@ exit(rv)
        else
                p->p_siga1 = 0;
        (void) spl0();
        else
                p->p_siga1 = 0;
        (void) spl0();
-       p->p_aveflt = 0;
+       p->p_cpticks = 0;
+       p->p_pctcpu = 0;
        for(i=0; i<NSIG; i++)
                u.u_signal[i] = SIG_IGN;
        /*
        for(i=0; i<NSIG; i++)
                u.u_signal[i] = SIG_IGN;
        /*
index 77169e7..8950124 100644 (file)
@@ -1,4 +1,4 @@
-/*     kern_synch.c    3.14    %G%     */
+/*     kern_synch.c    3.15    %G%     */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -342,8 +342,8 @@ retry:
        rpp->p_rssize = 0;
        rpp->p_wchan = 0;
        rpp->p_slptime = 0;
        rpp->p_rssize = 0;
        rpp->p_wchan = 0;
        rpp->p_slptime = 0;
-       rpp->p_aveflt = rip->p_aveflt;
-       rpp->p_faults = 0;
+       rpp->p_pctcpu = 0;
+       rpp->p_cpticks = 0;
        n = PIDHASH(rpp->p_pid);
        p->p_idhash = pidhash[n];
        pidhash[n] = rpp - proc;
        n = PIDHASH(rpp->p_pid);
        p->p_idhash = pidhash[n];
        pidhash[n] = rpp - proc;