Hello, just some status updates:
1) The scheduler seems to be working with the per-mach run queues now.
2) fork balancing is done for newly created processes. At the moment
this simply compares m->loads of all maches; it'll improved later to make
this process more efficient.
(Note: Perhaps it would be more helpful to balance during an *exec* instead
of a fork?)
Example of fork balancing:
redbean# {while()}& -- say pid of this background job is 156
redbean# cat /proc/156/mp -- note, I added mp proc entries to say
which mach it last run on
3
redbean# {while()}& -- launch another rc job, pid 157
redbean# cat /proc/157/mp
2
redbean# {while()}% -- launch yet another rc job, pid 158
redbean# cat /proc/158/mp
1
3) Misc updates: steal code is gone, runproc is slightly simpler (no
redundant calls to dequeueproc, just do it in one go if possible)
Next up: I'll be refining the load balancing scheme with my mentor.