ULE interactivity update

Bin Ren br260 at cam.ac.uk
Tue Mar 9 09:35:27 PST 2004


Hi,

in 'sys/kern/sched_ule.c', there is:

static void
sched_interact_update(struct ksegrp *kg)
{
        int sum;
                                                                                                                                                                                    
        sum = kg->kg_runtime + kg->kg_slptime;
        if (sum < SCHED_SLP_RUN_MAX)
                return;
        /*
         * If we have exceeded by more than 1/5th then the algorithm below
         * will not bring us back into range.  Dividing by two here forces
         * us into the range of [3/5 * SCHED_INTERACT_MAX, 
SCHED_INTERACT_MAX]
         */
        if (sum > (SCHED_INTERACT_MAX / 5) * 6) {
                kg->kg_runtime /= 2;
                kg->kg_slptime /= 2;
                return;
        }
        kg->kg_runtime = (kg->kg_runtime / 5) * 4;
        kg->kg_slptime = (kg->kg_slptime / 5) * 4;
}


Why here is 'SCHED_INTERACT_MAX' suddenly used instead of SCHED_SLP_RUN_MAX?
There is a huge difference between them, both in values and in meanings.

Thanks,
Bin


More information about the freebsd-hackers mailing list