|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 09/24] xen/tools: tracing: improve tracing of context switches.
On 17/08/16 18:18, Dario Faggioli wrote:
> Right now, two out of the three events related to
> context switch (that is TRC_SCHED_SWITCH_INFPREV and
> TRC_SCHED_SWITCH_INFNEXT) only report the domain id,
> and not the vcpu id.
>
> That's omitting a useful piece of information, and
> even if we be figured that out by looking at other
> records, that's unnecessarily complicated (especially
> if working on a trace from a sctipt).
>
> This changes both the tracing code in Xen and the parsing
> code in tools at once, to avoid introducing transitional
> regressions.
>
> Signed-off-by: Dario Faggioli <dario.faggioli@xxxxxxxxxx>
Hmm, I'm tempted to complain about the lack of packing; but in any case
I think these traces are redundant with the runstate change information,
so there's no need to be terribly picky. :-)
Acked-by: George Dunlap <george.dunlap@xxxxxxxxxx>
> ---
> Cc: George Dunlap <george.dunlap@xxxxxxxxxxxxx>
> Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
> Cc: Wei Liu <wei.liu2@xxxxxxxxxx>
> ---
> tools/xentrace/formats | 4 ++--
> tools/xentrace/xenalyze.c | 17 +++++++++--------
> xen/common/schedule.c | 8 ++++----
> 3 files changed, 15 insertions(+), 14 deletions(-)
>
> diff --git a/tools/xentrace/formats b/tools/xentrace/formats
> index caafb5f..0de7990 100644
> --- a/tools/xentrace/formats
> +++ b/tools/xentrace/formats
> @@ -32,8 +32,8 @@
> 0x0002800b CPU%(cpu)d %(tsc)d (+%(reltsc)8d) s_timer_fn
> 0x0002800c CPU%(cpu)d %(tsc)d (+%(reltsc)8d) t_timer_fn
> 0x0002800d CPU%(cpu)d %(tsc)d (+%(reltsc)8d) dom_timer_fn
> -0x0002800e CPU%(cpu)d %(tsc)d (+%(reltsc)8d) switch_infprev [
> old_domid = 0x%(1)08x, runtime = %(2)d ]
> -0x0002800f CPU%(cpu)d %(tsc)d (+%(reltsc)8d) switch_infnext [
> new_domid = 0x%(1)08x, time = %(2)d, r_time = %(3)d ]
> +0x0002800e CPU%(cpu)d %(tsc)d (+%(reltsc)8d) switch_infprev [ dom:vcpu
> = 0x%(1)04x%(2)04x, runtime = %(3)d ]
> +0x0002800f CPU%(cpu)d %(tsc)d (+%(reltsc)8d) switch_infnext [
> new_dom:vcpu = 0x%(1)04x%(2)04x, time = %(3)d, r_time = %(4)d ]
> 0x00028010 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) domain_shutdown_code [
> dom:vcpu = 0x%(1)04x%(2)04x, reason = 0x%(3)08x ]
>
> 0x00022001 CPU%(cpu)d %(tsc)d (+%(reltsc)8d) csched:sched_tasklet
> diff --git a/tools/xentrace/xenalyze.c b/tools/xentrace/xenalyze.c
> index 11763a8..0b697d0 100644
> --- a/tools/xentrace/xenalyze.c
> +++ b/tools/xentrace/xenalyze.c
> @@ -7501,28 +7501,29 @@ void sched_process(struct pcpu_info *p)
> case TRC_SCHED_SWITCH_INFPREV:
> if(opt.dump_all) {
> struct {
> - unsigned int domid, runtime;
> + unsigned int domid, vcpuid, runtime;
> } *r = (typeof(r))ri->d;
>
> - printf(" %s sched_switch prev d%u, run for %u.%uus\n",
> - ri->dump_header, r->domid, r->runtime / 1000,
> - r->runtime % 1000);
> + printf(" %s sched_switch prev d%uv%d, run for %u.%uus\n",
> + ri->dump_header, r->domid, r->vcpuid,
> + r->runtime / 1000, r->runtime % 1000);
> }
> break;
> case TRC_SCHED_SWITCH_INFNEXT:
> if(opt.dump_all)
> {
> struct {
> - unsigned int domid, rsince;
> + unsigned int domid, vcpuid, rsince;
> int slice;
> } *r = (typeof(r))ri->d;
>
> - printf(" %s sched_switch next d%u", ri->dump_header,
> r->domid);
> + printf(" %s sched_switch next d%uv%u", ri->dump_header,
> + r->domid, r->vcpuid);
> if ( r->rsince != 0 )
> - printf(", was runnable for %u.%uus, ", r->rsince / 1000,
> + printf(", was runnable for %u.%uus", r->rsince / 1000,
> r->rsince % 1000);
> if ( r->slice > 0 )
> - printf("next slice %u.%uus", r->slice / 1000,
> + printf(", next slice %u.%uus", r->slice / 1000,
> r->slice % 1000);
> printf("\n");
> }
> diff --git a/xen/common/schedule.c b/xen/common/schedule.c
> index abe063d..5b444c4 100644
> --- a/xen/common/schedule.c
> +++ b/xen/common/schedule.c
> @@ -1390,11 +1390,11 @@ static void schedule(void)
> return continue_running(prev);
> }
>
> - TRACE_2D(TRC_SCHED_SWITCH_INFPREV,
> - prev->domain->domain_id,
> + TRACE_3D(TRC_SCHED_SWITCH_INFPREV,
> + prev->domain->domain_id, prev->vcpu_id,
> now - prev->runstate.state_entry_time);
> - TRACE_3D(TRC_SCHED_SWITCH_INFNEXT,
> - next->domain->domain_id,
> + TRACE_4D(TRC_SCHED_SWITCH_INFNEXT,
> + next->domain->domain_id, next->vcpu_id,
> (next->runstate.state == RUNSTATE_runnable) ?
> (now - next->runstate.state_entry_time) : 0,
> next_slice.time);
>
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |