User: Password:
Subscribe / Log in / New account

Fair-user scheduler

From:  Srivatsa Vaddagiri <>
To:, Ingo Molnar <>, Nick Piggin <>, Andrew Morton <>
Subject:  [RFC] Fair-user scheduler
Date:  Fri, 26 Jan 2007 11:31:42 +0530
Archive-link:  Article, Thread

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!




Copyright © 2007, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds