Current Linux CPU scheduler doesnt recognize process aggregates while
allocating bandwidth. As a result of this, an user could simply spawn large 
number of processes and get more bandwidth than others.

Here's a patch that provides fair allocation for all users in a system.

Some benchmark numbers with and without the patch applied follows:


                        user "vatsa"                user "guest"
                    (make -s -j4 bzImage)      (make -s -j20 bzImage)

2.6.20-rc5              472.07s (real)             257.48s (real)
2.6.20-rc5+fairsched    766.74s (real)             766.73s (real)


(Numbers taken on a 2way Intel x86_64 box)

Eventually something like this can be extended to do weighted fair share
scheduling for:

        - KVM
        - containers
        - resource management

Salient features of the patch:

        - Based on Ingo's RTLIMIT_RT_CPU patch [1]. Primary difference between 
          RTLIMIT_RT_CPU patch and this one is that this patch handles 
          starvation of lower priority tasks in a group and also accounting
          is token based (rather than decaying avg).

        - Retains existing one-runqueue-per-cpu design

        - breaks O(1) (ouch!)
                Best way to avoid this is to split runqueue to be per-user and
                per-cpu, which I have not implemented to keep the patch simple.

        - Fairsched aware SMP load balance NOT addressed (yet)

Comments/flames wellcome!


References:

1. 
http://kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.11-rc2/2.6.11-rc2-mm2/broken-out/rlimit_rt_cpu.patch

-- 
Regards,
vatsa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to