diff options
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/kern_clock.c | 22 | ||||
-rw-r--r-- | sys/kern/kern_synch.c | 26 | ||||
-rw-r--r-- | sys/kern/kern_tc.c | 22 | ||||
-rw-r--r-- | sys/kern/subr_smp.c | 9 |
4 files changed, 29 insertions, 50 deletions
diff --git a/sys/kern/kern_clock.c b/sys/kern/kern_clock.c index 2d8a350..a8d492d 100644 --- a/sys/kern/kern_clock.c +++ b/sys/kern/kern_clock.c @@ -446,28 +446,8 @@ statclock(frame) * programs: the amount of time in each cpu state. */ - /* - * We adjust the priority of the current process. The priority of - * a process gets worse as it accumulates CPU time. The cpu usage - * estimator (p_estcpu) is increased here. The formula for computing - * priorities (in kern_synch.c) will compute a different value each - * time p_estcpu increases by 4. The cpu usage estimator ramps up - * quite quickly when the process is running (linearly), and decays - * away exponentially, at a rate which is proportionally slower when - * the system is busy. The basic principal is that the system will - * 90% forget that the process used a lot of CPU time in 5 * loadav - * seconds. This causes the system to favor processes which haven't - * run much recently, and to round-robin among other processes. - */ if (p != NULL) { - p->p_cpticks++; - if (++p->p_estcpu == 0) - p->p_estcpu--; - if ((p->p_estcpu & 3) == 0) { - resetpriority(p); - if (p->p_priority >= PUSER) - p->p_priority = p->p_usrpri; - } + schedclock(p); /* Update resource usage integrals and maximums. */ if ((pstats = p->p_stats) != NULL && diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index 4811669..f14980b 100644 --- a/sys/kern/kern_synch.c +++ b/sys/kern/kern_synch.c @@ -899,3 +899,29 @@ sched_setup(dummy) schedcpu(NULL); } +/* + * We adjust the priority of the current process. The priority of + * a process gets worse as it accumulates CPU time. The cpu usage + * estimator (p_estcpu) is increased here. The formula for computing + * priorities (in kern_synch.c) will compute a different value each + * time p_estcpu increases by 4. The cpu usage estimator ramps up + * quite quickly when the process is running (linearly), and decays + * away exponentially, at a rate which is proportionally slower when + * the system is busy. The basic principal is that the system will + * 90% forget that the process used a lot of CPU time in 5 * loadav + * seconds. This causes the system to favor processes which haven't + * run much recently, and to round-robin among other processes. + */ +void +schedclock(p) + struct proc *p; +{ + p->p_cpticks++; + if (++p->p_estcpu == 0) + p->p_estcpu--; + if ((p->p_estcpu & 3) == 0) { + resetpriority(p); + if (p->p_priority >= PUSER) + p->p_priority = p->p_usrpri; + } +} diff --git a/sys/kern/kern_tc.c b/sys/kern/kern_tc.c index 2d8a350..a8d492d 100644 --- a/sys/kern/kern_tc.c +++ b/sys/kern/kern_tc.c @@ -446,28 +446,8 @@ statclock(frame) * programs: the amount of time in each cpu state. */ - /* - * We adjust the priority of the current process. The priority of - * a process gets worse as it accumulates CPU time. The cpu usage - * estimator (p_estcpu) is increased here. The formula for computing - * priorities (in kern_synch.c) will compute a different value each - * time p_estcpu increases by 4. The cpu usage estimator ramps up - * quite quickly when the process is running (linearly), and decays - * away exponentially, at a rate which is proportionally slower when - * the system is busy. The basic principal is that the system will - * 90% forget that the process used a lot of CPU time in 5 * loadav - * seconds. This causes the system to favor processes which haven't - * run much recently, and to round-robin among other processes. - */ if (p != NULL) { - p->p_cpticks++; - if (++p->p_estcpu == 0) - p->p_estcpu--; - if ((p->p_estcpu & 3) == 0) { - resetpriority(p); - if (p->p_priority >= PUSER) - p->p_priority = p->p_usrpri; - } + schedclock(p); /* Update resource usage integrals and maximums. */ if ((pstats = p->p_stats) != NULL && diff --git a/sys/kern/subr_smp.c b/sys/kern/subr_smp.c index d101973..b565cee 100644 --- a/sys/kern/subr_smp.c +++ b/sys/kern/subr_smp.c @@ -2323,14 +2323,7 @@ forwarded_statclock(int id, int pscnt, int *astmap) cp_time[CP_INTR]++; } if (p != NULL) { - p->p_cpticks++; - if (++p->p_estcpu == 0) - p->p_estcpu--; - if ((p->p_estcpu & 3) == 0) { - resetpriority(p); - if (p->p_priority >= PUSER) - p->p_priority = p->p_usrpri; - } + schedclock(p); /* Update resource usage integrals and maximums. */ if ((pstats = p->p_stats) != NULL && |