[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] credit: track residual from divisions done during accounting



>>> On 25.02.13 at 12:12, David Vrabel <david.vrabel@xxxxxxxxxx> wrote:
> On 25/02/13 09:29, Jan Beulich wrote:
>>>>> On 22.02.13 at 18:26, Dario Faggioli <dario.faggioli@xxxxxxxxxx> wrote:
>>> On Mon, 2013-02-18 at 12:37 +0000, Jan Beulich wrote:
>>>> --- a/xen/common/sched_credit.c
>>>> +++ b/xen/common/sched_credit.c
>>>>
>>>> @@ -242,6 +244,7 @@ __runq_remove(struct csched_vcpu *svc)
>>>>  static void burn_credits(struct csched_vcpu *svc, s_time_t now)
>>>>  {
>>>>      s_time_t delta;
>>>> +    uint64_t val;
>>>>      unsigned int credits;
>>>>  
>>>>      /* Assert svc is current */
>>>> @@ -250,7 +253,10 @@ static void burn_credits(struct csched_v
>>>>      if ( (delta = now - svc->start_time) <= 0 )
>>>>          return;
>>>>  
>>>> -    credits = (delta*CSCHED_CREDITS_PER_MSEC + MILLISECS(1)/2) / 
> MILLISECS(1);
>>>> +    val = delta * CSCHED_CREDITS_PER_MSEC + svc->residual;
>>>> +    svc->residual = do_div(val, MILLISECS(1));
>>>> +    credits = val;
>>>> +    ASSERT(credits == val);
>>>
>>> I may be missing something, but how can the assert ever be false, given
>>> the assignment right before it?
>> 
>> val being wider than credit, this checks that there was no truncation.
> 
> ASSERT(val <= UINT_MAX);
> 
> Would be clearer.

A matter of taste perhaps...

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.