xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] Credit1: Tweak reset condition
@ 2010-08-09 11:38 George Dunlap
  2010-08-09 12:31 ` Tim Deegan
  0 siblings, 1 reply; 3+ messages in thread
From: George Dunlap @ 2010-08-09 11:38 UTC (permalink / raw)
  To: xen-devel; +Cc: george.dunlap

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 <george.dunlap@eu.citrix.com>

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);
                 }
             }

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Credit1: Tweak reset condition
  2010-08-09 11:38 [PATCH] Credit1: Tweak reset condition George Dunlap
@ 2010-08-09 12:31 ` Tim Deegan
  2010-08-09 12:49   ` George Dunlap
  0 siblings, 1 reply; 3+ messages in thread
From: Tim Deegan @ 2010-08-09 12:31 UTC (permalink / raw)
  To: George Dunlap; +Cc: xen-devel@lists.xensource.com

Hi, 

At 12:38 +0100 on 09 Aug (1281357513), George Dunlap wrote:
> 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).

"credit" here is signed, and the compiler is allowed to use either a
signed or an unsigned shift for >>.  Better to code it as /=2 and trust
the compiler to DTRT with a constant division.

Cheers,

Tim.

>  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 <george.dunlap@eu.citrix.com>
> 
> 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);
>                  }
>              }
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel

-- 
Tim Deegan <Tim.Deegan@citrix.com>
Principal Software Engineer, XenServer Engineering
Citrix Systems UK Ltd.  (Company #02937203, SL9 0BG)

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] Credit1: Tweak reset condition
  2010-08-09 12:31 ` Tim Deegan
@ 2010-08-09 12:49   ` George Dunlap
  0 siblings, 0 replies; 3+ messages in thread
From: George Dunlap @ 2010-08-09 12:49 UTC (permalink / raw)
  To: Tim Deegan; +Cc: xen-devel@lists.xensource.com

If we wanted to be clever, we could rely upon the fact that this
condition only happens when credit > CSCHED_CREDITS_PER_TSLICE, which
is a positive value.

But I'm all for being defensive and using /= 2 instead.

 -George

On Mon, Aug 9, 2010 at 1:31 PM, Tim Deegan <Tim.Deegan@citrix.com> wrote:
> Hi,
>
> At 12:38 +0100 on 09 Aug (1281357513), George Dunlap wrote:
>> 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).
>
> "credit" here is signed, and the compiler is allowed to use either a
> signed or an unsigned shift for >>.  Better to code it as /=2 and trust
> the compiler to DTRT with a constant division.
>
> Cheers,
>
> Tim.
>
>>  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 <george.dunlap@eu.citrix.com>
>>
>> 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);
>>                  }
>>              }
>>
>> _______________________________________________
>> Xen-devel mailing list
>> Xen-devel@lists.xensource.com
>> http://lists.xensource.com/xen-devel
>
> --
> Tim Deegan <Tim.Deegan@citrix.com>
> Principal Software Engineer, XenServer Engineering
> Citrix Systems UK Ltd.  (Company #02937203, SL9 0BG)
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xensource.com
> http://lists.xensource.com/xen-devel
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2010-08-09 12:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-09 11:38 [PATCH] Credit1: Tweak reset condition George Dunlap
2010-08-09 12:31 ` Tim Deegan
2010-08-09 12:49   ` George Dunlap

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).