From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: [PATCH] Credit1: Tweak reset condition Date: Mon, 9 Aug 2010 12:38:33 +0100 Message-ID: <1a29b22ef2e9ade8e478.1281353913@gdunlap-desktop> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com Cc: george.dunlap@eu.citrix.com List-Id: xen-devel@lists.xenproject.org VMs that don't use their full timeslice are guaranteed to flip back and forth between "active" and "inactive". If we set credit to 0 when setting "inactive", then when the VM comes back to "active" again, it will effectively be behind most other vcpus in credit. This causes the credit1 to effectively discriminate *against* VMs which use less than their full timeslice. Instead of setting credit to 0, divide it in half (shifting by one bit for more efficiency). This gets rid of some of the system credit while allowing non-cpu-bound VMs to keep some priority advantage. Signed-off-by: George Dunlap diff -r 6f07d9ac1e7c -r 1a29b22ef2e9 xen/common/sched_credit.c --- a/xen/common/sched_credit.c Thu Aug 05 14:41:14 2010 +0100 +++ b/xen/common/sched_credit.c Mon Aug 09 12:38:12 2010 +0100 @@ -1069,7 +1069,9 @@ if ( credit > CSCHED_CREDITS_PER_TSLICE ) { __csched_vcpu_acct_stop_locked(prv, svc); - credit = 0; + /* Divide credits in half, so that when it starts + * accounting again, it starts a little bit "ahead" */ + credit >>= 1; atomic_set(&svc->credit, credit); } }