 
	
| [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 Mon, 2013-02-25 at 09:29 +0000, 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.
> 
Ok. At least I was right in the "missing something" part. :-) TBH, I
figured it had to be something related to that, but was failing to spot
it... Sorry for the noise and thanks for the explanation!
Dario
-- 
<<This happens because I choose it to happen!>> (Raistlin Majere)
-----------------------------------------------------------------
Dario Faggioli, Ph.D, http://about.me/dario.faggioli
Senior Software Engineer, Citrix Systems R&D Ltd., Cambridge (UK)
Attachment:
signature.asc _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel 
 
 | 
|  | Lists.xenproject.org is hosted with RackSpace, monitoring our |