Hi everyone, This, hopefully, simple series aims at making it easier to look at and interpret hypervisor scheduling related traces.
In fact, it includes improvements for both how xentrace_format and xenalyze decode and pretty print a trace collected with scheduling events enabled, either generic scheduling events or specific events from one of our scheduler. In fact: - patches 11-14 improve xenalyze own understanding and dumping of scheduling events - patches 07-10 improve the 'formats' file that should be used for xentrace_format, for the same purpose - patches 04-06 are small hypervisor changes required for making the improvement possible - patches 02-03 are refinements on the position of some trace points - patch 01 is not really related to this series, it's just Credit1's code cleanup After this series, for instance, 'xenalyze --dump-all' looks like this: 0.000575665 -..--..x ..... . d?v? runstate_change d0v10 runnable->running 0.000621704 -..--..x ..... . d0v10 vcpu_block d0v10 0.000623592 -..--..x ..... . d0v10 sched_switch prev d0, run for 48.488us 0.000623792 -..--..x ..... . d0v10 sched_switch next d32767, was runnable for 48.488us, 0.000624017 -..--..x ..... . d0v10 sched_switch prev d0v10 next d32767v7 0.000624309 -..--..x ..... . d0v10 runstate_change d0v10 running->blocked 0.000624650 -..--..x ..... . d?v? runstate_change d32767v7 runnable->running 0.000806574 x..--..- ..... . d32767v0 vcpu_wake d0v0 0.000806954 x..--..- ..... . d32767v0 runstate_change d0v0 blocked->runnable 0.000807697 x..--..- ..... . d32767v0 csched:runq_tickle, cpu 0 0.000810162 x..--..- ..... . d32767v0 sched_switch prev d32767, run for 279.105us 0.000810340 x..--..- ..... . d32767v0 sched_switch next d0, was runnable for 2.516us, next slice 30000.0us 0.000810625 x..--..- ..... . d32767v0 sched_switch prev d32767v0 next d0v0 0.000810850 x..--..- ..... . d32767v0 runstate_change d32767v0 running->runnable 0.000811205 x..--..- ..... . d?v? runstate_change d0v0 runnable->running 0.000833005 |..--..- ..x.. . d32768v11 vcpu_wake d0v8 0.000833596 |..--..- ..x.. . d32768v11 runstate_change d0v8 blocked->runnable Thanks and Regards, Dario --- Dario Faggioli (14): xen: sched: __runq_tickle takes a useless cpu parameter xen: sched: move up the trace record for vcpu_wake and vcpu_sleep xen: sched: fi position of TRC_SCHED_DOM_{ADD,REM} xen: credit2: pack trace data better for xentrace_format xen: RTDS: pack trace data better for xentrace_format xen: sched: tracing: enable TSC tracing for all events xentrace: formats: update format of scheduling events xentrace: formats: add events from Credit scheduler xentrace: formats: add events from Credit2 scheduler xentrace: formats: add events from RTDS scheduler xenalyze: handle scheduling events xenalyze: handle Credit1 scheduler events xenalyze: handle Credit2 scheduler events xenalyze: handle RTDS scheduler events tools/xentrace/formats | 44 ++++- tools/xentrace/xenalyze.c | 373 ++++++++++++++++++++++++++++++++++++++++---- xen/common/domain.c | 1 xen/common/sched_credit.c | 12 + xen/common/sched_credit2.c | 22 +-- xen/common/sched_rt.c | 29 +-- xen/common/schedule.c | 20 +- 7 files changed, 411 insertions(+), 90 deletions(-) -- <<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) _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel