mpi@ notes that alpha doesn't set schedhz anymore, so schedhz is
always zero and serves no purpose.
We could remove it (patch below). Or we could wait a bit to see if
schedclock() finds a future as an independent clock interrupt.
My guess is that roundrobin() (or something like it) will have a
future as a deadline clock interrupt -- when it fires, the running
thread is preempted if it is in userspace. Or something like that.
I don't know about schedclock(), though. I have a hard time imagining
the need to adjust the priority of the running thread *during* the
clock interrupt. Even as I write that down, it sounds like a hack.
This patch deletes the variable and its sole remaining reference in
statclock(). Note that schedclock() itself remains in place and still
runs at its default frequency, approximately (stathz / 8).
ok? wait a bit?
Index: sys/sched.h
===================================================================
RCS file: /cvs/src/sys/sys/sched.h,v
retrieving revision 1.61
diff -u -p -r1.61 sched.h
--- sys/sched.h 11 Aug 2023 22:02:50 -0000 1.61
+++ sys/sched.h 8 Sep 2023 18:28:32 -0000
@@ -146,7 +146,6 @@ struct cpustats {
#define ESTCPULIM(e) min((e), NICE_WEIGHT * PRIO_MAX - SCHED_PPQ)
extern uint32_t roundrobin_period;
-extern int schedhz; /* ideally: 16 */
struct proc;
void schedclock(struct proc *);
Index: kern/kern_clock.c
===================================================================
RCS file: /cvs/src/sys/kern/kern_clock.c,v
retrieving revision 1.115
diff -u -p -r1.115 kern_clock.c
--- kern/kern_clock.c 23 Aug 2023 01:55:45 -0000 1.115
+++ kern/kern_clock.c 8 Sep 2023 18:28:32 -0000
@@ -79,7 +79,6 @@
*/
int stathz;
-int schedhz;
int profhz;
int profprocs;
int ticks = INT_MAX - (15 * 60 * HZ);
@@ -295,13 +294,10 @@ statclock(struct clockframe *frame)
if (p != NULL) {
p->p_cpticks++;
/*
- * If no schedclock is provided, call it here at ~~12-25 Hz;
- * ~~16 Hz is best
+ * schedclock() runs every eighth statclock().
*/
- if (schedhz == 0) {
- if ((++spc->spc_schedticks & 3) == 0)
- schedclock(p);
- }
+ if ((++spc->spc_schedticks & 3) == 0)
+ schedclock(p);
}
}