Message ID | 20191128085409.289684-15-tz.stoyanov@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Timestamp synchronization of host - guest tracing session | expand |
On Thu, Nov 28, 2019 at 11:01 AM Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> wrote: > > When tracing host and guest machines, both should use the same > tracing clock for event timestamps. If a clock is specified > as host tracing argument, with option "-C clock_name", the same > is injected as guest tracing argument. If the user wants to use > different tracing clocks, it can specify it using "-C clock_name" > as guest tracing argument. In that case, the one specified by > the user has higher priority. > > Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> > --- > tracecmd/trace-record.c | 19 +++++++++++++++++-- > 1 file changed, 17 insertions(+), 2 deletions(-) > > diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c > index 49730d6..e7fb1bd 100644 > --- a/tracecmd/trace-record.c > +++ b/tracecmd/trace-record.c > @@ -5405,6 +5405,8 @@ static void parse_record_options(int argc, > char *sav; > int name_counter = 0; > int neg_event = 0; > + struct buffer_instance *instance; > + bool guest_config = false; guest_config is a bit vague of a name for what it's used here. Maybe has_clock_arg? > > init_common_record_context(ctx, curr_cmd); > > @@ -5562,6 +5564,7 @@ static void parse_record_options(int argc, > break; > case 'C': > ctx->instance->ftrace->clock = optarg; > + guest_config = true; > break; > case 'v': > neg_event = 1; > @@ -5779,14 +5782,26 @@ static void parse_record_options(int argc, > > /* If --date is specified, prepend it to all guest VM flags */ > if (ctx->date) { > - struct buffer_instance *instance; > - > for_all_instances(instance) { > if (is_guest(instance)) > add_argv(instance, "--date", true); > } > } > > + if (guest_config) { > + /* If -C is specified, prepend clock to all guest VM flags */ > + for_all_instances(instance) { > + if (top_instance.ftrace->clock) { > + if (is_guest(instance)) { > + add_argv(instance, > + (char *)top_instance.ftrace->clock, > + true); > + add_argv(instance, "-C", true); Shouldn't those two add_arvgv() calls be swapped? > + } > + } > + } > + } > + > if (!ctx->filtered && ctx->instance->filter_mod) > add_func(&ctx->instance->filter_funcs, > ctx->instance->filter_mod, "*"); > -- > 2.23.0 > Cheers, -- Slavi
On Thu, Nov 28, 2019 at 4:45 PM Slavomir Kaslev <slavomir.kaslev@gmail.com> wrote: > ... > > + struct buffer_instance *instance; > > + bool guest_config = false; > > guest_config is a bit vague of a name for what it's used here. Maybe > has_clock_arg? > The same flag is used for similar host config, which is applied to guests - in the following patches from the series. > > > > init_common_record_context(ctx, curr_cmd); > > ... > > + if (guest_config) { > > + /* If -C is specified, prepend clock to all guest VM flags */ > > + for_all_instances(instance) { > > + if (top_instance.ftrace->clock) { > > + if (is_guest(instance)) { > > + add_argv(instance, > > + (char *)top_instance.ftrace->clock, > > + true); > > + add_argv(instance, "-C", true); > > Shouldn't those two add_arvgv() calls be swapped? It is a little bit confusing, add_argv() actually prepends the arguments - so the last call puts the first argument in the list. The user specified arguments are always after those. When the args are parsed in the guest, in case of duplication, the last one wins. > > > + } > > + } > > + } > > + } > > + > > if (!ctx->filtered && ctx->instance->filter_mod) > > add_func(&ctx->instance->filter_funcs, > > ctx->instance->filter_mod, "*"); > > -- > > 2.23.0 > > > > Cheers, > > -- Slavi
diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c index 49730d6..e7fb1bd 100644 --- a/tracecmd/trace-record.c +++ b/tracecmd/trace-record.c @@ -5405,6 +5405,8 @@ static void parse_record_options(int argc, char *sav; int name_counter = 0; int neg_event = 0; + struct buffer_instance *instance; + bool guest_config = false; init_common_record_context(ctx, curr_cmd); @@ -5562,6 +5564,7 @@ static void parse_record_options(int argc, break; case 'C': ctx->instance->ftrace->clock = optarg; + guest_config = true; break; case 'v': neg_event = 1; @@ -5779,14 +5782,26 @@ static void parse_record_options(int argc, /* If --date is specified, prepend it to all guest VM flags */ if (ctx->date) { - struct buffer_instance *instance; - for_all_instances(instance) { if (is_guest(instance)) add_argv(instance, "--date", true); } } + if (guest_config) { + /* If -C is specified, prepend clock to all guest VM flags */ + for_all_instances(instance) { + if (top_instance.ftrace->clock) { + if (is_guest(instance)) { + add_argv(instance, + (char *)top_instance.ftrace->clock, + true); + add_argv(instance, "-C", true); + } + } + } + } + if (!ctx->filtered && ctx->instance->filter_mod) add_func(&ctx->instance->filter_funcs, ctx->instance->filter_mod, "*");
When tracing host and guest machines, both should use the same tracing clock for event timestamps. If a clock is specified as host tracing argument, with option "-C clock_name", the same is injected as guest tracing argument. If the user wants to use different tracing clocks, it can specify it using "-C clock_name" as guest tracing argument. In that case, the one specified by the user has higher priority. Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- tracecmd/trace-record.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-)