On 03/05/16 22:46, Dario Faggioli wrote: > All calculations that involve load_last_update uses quantities > shifted by LOADAVG_GRANULARITY_SHIFT, so make sure that this > is true even when the field is assigned a value for the first > time, during vcpu allocation. > > Also, during migration, while the loads of both the source and > destination runqueues certainly need changing, the vcpu being > moved does not change its running/non-running status, and its > calculated load should hence not be affected. > > Signed-off-by: Dario Faggioli <dario.faggi...@citrix.com>
Looks good, thanks. Reviewed-by: George Dunlap <george.dun...@citrix.com> I suppose the code that sets 'svc->load_last_update = now' should probably have changed the variable name to make it clear that now != NOW(). Maybe next time I'm looking through that code I'll do a bit of renaming. > --- > Cc: George Dunlap <george.dun...@citrix.com> > Cc: Wei Liu <wei.l...@citrix.com> > --- > xen/common/sched_credit2.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c > index 803cc44..393364a 100644 > --- a/xen/common/sched_credit2.c > +++ b/xen/common/sched_credit2.c > @@ -867,7 +867,7 @@ csched2_alloc_vdata(const struct scheduler *ops, struct > vcpu *vc, void *dd) > svc->weight = svc->sdom->weight; > /* Starting load of 50% */ > svc->avgload = 1ULL << (CSCHED2_PRIV(ops)->load_window_shift - 1); > - svc->load_last_update = NOW(); > + svc->load_last_update = NOW() >> LOADAVG_GRANULARITY_SHIFT; > } > else > { > @@ -1301,7 +1301,7 @@ static void migrate(const struct scheduler *ops, > if ( __vcpu_on_runq(svc) ) > { > __runq_remove(svc); > - update_load(ops, svc->rqd, svc, -1, now); > + update_load(ops, svc->rqd, NULL, -1, now); > on_runq=1; > } > __runq_deassign(svc); > @@ -1314,7 +1314,7 @@ static void migrate(const struct scheduler *ops, > __runq_assign(svc, trqd); > if ( on_runq ) > { > - update_load(ops, svc->rqd, svc, 1, now); > + update_load(ops, svc->rqd, NULL, 1, now); > runq_insert(ops, svc->vcpu->processor, svc); > runq_tickle(ops, svc->vcpu->processor, svc, now); > SCHED_STAT_CRANK(migrate_on_runq); > _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel