Follow-up to #346 / SCHED_MIC (#385).
#346 asks that, when the system is loaded, new/burst threads be steered to E/LP (or non-x3D) cores while long-running threads keep their placement. SCHED_MIC currently spills to lower classes purely by load and is task-age-blind — it does not distinguish new vs long-running threads.
Goal: use thread runtime (e.g. td_sched runtime/slptime) to bias initial placement of low-runtime threads toward efficiency cores when the system is oversubscribed, while long-running threads retain their class preference.
Relevant code: sched_pickcpu() and the cost function in sys/kern/sched_mic.c.
Follow-up to #346 / SCHED_MIC (#385).
#346 asks that, when the system is loaded, new/burst threads be steered to E/LP (or non-x3D) cores while long-running threads keep their placement. SCHED_MIC currently spills to lower classes purely by load and is task-age-blind — it does not distinguish new vs long-running threads.
Goal: use thread runtime (e.g.
td_schedruntime/slptime) to bias initial placement of low-runtime threads toward efficiency cores when the system is oversubscribed, while long-running threads retain their class preference.Relevant code:
sched_pickcpu()and the cost function insys/kern/sched_mic.c.