[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 4/7] xen/tools: tracing: add record for credit1 runqueue stealing.
On 06/04/17 09:16, Dario Faggioli wrote: > Including whether we actually tried stealing a vCPU from > a given pCPU, or we skipped that one, because of lock > contention. > > Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx> > --- > Cc: George Dunlap <george.dunlap@xxxxxxxxxx> > Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> > Cc: Wei Liu <wei.liu2@xxxxxxxxxx> > --- > tools/xentrace/formats | 1 + > tools/xentrace/xenalyze.c | 11 +++++++++++ > xen/common/sched_credit.c | 6 +++++- > xen/include/xen/perfc_defn.h | 1 + > 4 files changed, 18 insertions(+), 1 deletion(-) > > diff --git a/tools/xentrace/formats b/tools/xentrace/formats > index a055231..8b31780 100644 > --- a/tools/xentrace/formats > +++ b/tools/xentrace/formats > @@ -47,6 +47,7 @@ > 0x00022008 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) csched:unboost [ > dom:vcpu = 0x%(1)04x%(2)04x ] > 0x00022009 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) csched:schedule [ > cpu[16]:tasklet[8]:idle[8] = %(1)08x ] > 0x0002200A CPU%(cpu)d %(tsc)d (+%(reltsc)8d) csched:ratelimit [ > dom:vcpu = 0x%(1)08x, runtime = %(2)d ] > +0x0002200B CPU%(cpu)d %(tsc)d (+%(reltsc)8d) csched:steal_check [ > peer_cpu = %(1)d, checked = %(2)d ] > > 0x00022201 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) csched2:tick > 0x00022202 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) csched2:runq_pos [ > dom:vcpu = 0x%(1)08x, pos = %(2)d] > diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c > index 029c89d..fa608ad 100644 > --- a/tools/xentrace/xenalyze.c > +++ b/tools/xentrace/xenalyze.c > @@ -7651,6 +7651,17 @@ void sched_process(struct pcpu_info *p) > r->runtime / 1000, r->runtime % 1000); > } > break; > + case TRC_SCHED_CLASS_EVT(CSCHED, 11): /* STEAL_CHECK */ > + if(opt.dump_all) { > + struct { > + unsigned int peer_cpu, check; > + } *r = (typeof(r))ri->d; > + > + printf(" %s csched:load_balance %s %u\n", > + ri->dump_header, r->check ? "checking" : "skipping", > + r->peer_cpu); > + } > + break; > /* CREDIT 2 (TRC_CSCHED2_xxx) */ > case TRC_SCHED_CLASS_EVT(CSCHED2, 1): /* TICK */ > case TRC_SCHED_CLASS_EVT(CSCHED2, 4): /* CREDIT_ADD */ > diff --git a/xen/common/sched_credit.c b/xen/common/sched_credit.c > index c753089..49caa0a 100644 > --- a/xen/common/sched_credit.c > +++ b/xen/common/sched_credit.c > @@ -134,6 +134,7 @@ > #define TRC_CSCHED_BOOST_END TRC_SCHED_CLASS_EVT(CSCHED, 8) > #define TRC_CSCHED_SCHEDULE TRC_SCHED_CLASS_EVT(CSCHED, 9) > #define TRC_CSCHED_RATELIMIT TRC_SCHED_CLASS_EVT(CSCHED, 10) > +#define TRC_CSCHED_STEAL_CHECK TRC_SCHED_CLASS_EVT(CSCHED, 11) > > > /* > @@ -1738,14 +1739,17 @@ csched_load_balance(struct csched_private *prv, int > cpu, > * balancing and trying to lock this CPU. > */ > spinlock_t *lock = pcpu_schedule_trylock(peer_cpu); > - > + SCHED_STAT_CRANK(steal_trylock); > if ( !lock ) > { > SCHED_STAT_CRANK(steal_trylock_failed); > + TRACE_2D(TRC_CSCHED_STEAL_CHECK, peer_cpu, /* skipp'n */ > 0); Was this to try to keep the line under 80 characters? :-) I think you could write "skipped" here and it would be the same number of characters; or just "skip" would be fine too. Let me know what you think and I can change it on check-in. Acked-by: George Dunlap <george.dunlap@xxxxxxxxxx> > peer_cpu = cpumask_cycle(peer_cpu, &workers); > continue; > } > > + TRACE_2D(TRC_CSCHED_STEAL_CHECK, peer_cpu, /* checked */ 1); > + > /* Any work over there to steal? */ > speer = cpumask_test_cpu(peer_cpu, online) ? > csched_runq_steal(peer_cpu, cpu, snext->pri, bstep) : > NULL; > diff --git a/xen/include/xen/perfc_defn.h b/xen/include/xen/perfc_defn.h > index 0d702f0..53849af 100644 > --- a/xen/include/xen/perfc_defn.h > +++ b/xen/include/xen/perfc_defn.h > @@ -48,6 +48,7 @@ PERFCOUNTER(vcpu_unpark, "csched: vcpu_unpark") > PERFCOUNTER(load_balance_idle, "csched: load_balance_idle") > PERFCOUNTER(load_balance_over, "csched: load_balance_over") > PERFCOUNTER(load_balance_other, "csched: load_balance_other") > +PERFCOUNTER(steal_trylock, "csched: steal_trylock") > PERFCOUNTER(steal_trylock_failed, "csched: steal_trylock_failed") > PERFCOUNTER(steal_peer_idle, "csched: steal_peer_idle") > PERFCOUNTER(migrate_queued, "csched: migrate_queued") > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |