Re: [PATCH v3 22/23] trace-cmd: Save the trace clocks in TRACECLOCK option

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 24, 2021 at 11:24 PM Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>
> On Wed, 24 Mar 2021 15:04:17 +0200
> "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@xxxxxxxxx> wrote:
>
> > Save the content of the trace_clock file in the TRACECLOCK option in
> > the trace.dat file. The clocks can be printed with "trace-cmd dump
> > --options" command.
> > These clocks were saved right before the tracing data in the file, but
> > this patch set changed that logic. Now only the selected clock is saved
> > in the file before the tracing data.
> > Having all supported trace clocks in the file is useful for debug
> > purposes. Adding clocks in the existing TRACECLOCK option is save and
> > will not break the older versions of trace-cmd.
> >
> > Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@xxxxxxxxx>
> > ---
> >  tracecmd/trace-record.c | 6 +++++-
> >  1 file changed, 5 insertions(+), 1 deletion(-)
> >
> > diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c
> > index 2fc6723a..f4c27ef1 100644
> > --- a/tracecmd/trace-record.c
> > +++ b/tracecmd/trace-record.c
> > @@ -4138,6 +4138,7 @@ enum {
> >  static void add_options(struct tracecmd_output *handle, struct common_record_context *ctx)
> >  {
> >       int type = 0;
> > +     char *clocks;
> >
> >       if (ctx->date2ts) {
> >               if (ctx->data_flags & DATA_FL_DATE)
> > @@ -4149,12 +4150,15 @@ static void add_options(struct tracecmd_output *handle, struct common_record_con
> >       if (type)
> >               tracecmd_add_option(handle, type, strlen(ctx->date2ts)+1, ctx->date2ts);
> >
> > -     tracecmd_add_option(handle, TRACECMD_OPTION_TRACECLOCK, 0, NULL);
> > +     clocks = tracefs_instance_file_read(NULL, "trace_clock", NULL);
> > +     tracecmd_add_option(handle, TRACECMD_OPTION_TRACECLOCK,
> > +                         clocks ? strlen(clocks)+1 : 0, clocks);
>
> Strange. Even after applying this patch, I still get:
>
> # ./tracecmd/trace-cmd dump
>
>  Tracing meta data in file trace.dat:
>         [Initial format]
>                 6       [Version]
>                 0       [Little endian]
>                 8       [Bytes in a long]
>                 4096    [Page size, bytes]
>         [Header page, 205 bytes]
>         [Header event, 205 bytes]
>         [Ftrace format, 15 events]
>         [Events format, 104 systems]
>         [Kallsyms, 6978379 bytes]
>         [Trace printk, 4997 bytes]
>         [Saved command lines, 1987 bytes]
>         8 [CPUs with tracing data]
>         [13 options]
>         [Flyrecord tracing data]
>         [Tracing clock]
>                  No tracing clock saved in the file
>
>
> Seems to be that it skips over the options unless you explicitly ask for it.

Going to fix it in v4. The way it should work:
 1. "trace-cmd dump" && "trace-cmd dump --clock": [Tracing clock] -
dump the clock written just before the tracing data. This clock is
valid only if there is a TRACECLOCK option in the file. Here is prints
"No tracing clock saved in the file" because options are not parsed
and TRACECLOCK is not detected, going to fix this. This should be the
first user specified clock with "-C ..." option, or the clock of the
first trace instance.
 2. "trace-cmd dump --options" - dump the content of the TRACECLOCK
option, all clocks from "trace_clock" of the top instance, during the
trace session. The selected clock here could be different from the one
in the previous point, if the top instance is not used in the tracing.
The idea is to have all supported clocks here, the selected one is
written before the tracing data - that way the old trace-cmd logic
will still work.

>
> -- Steve
>
> >       add_option_hooks(handle);
> >       add_uname(handle);
> >       add_version(handle);
> >       if (!no_top_instance())
> >               add_trace_id(handle, &top_instance);
> > +     free(clocks);
> >  }
> >
> >  static void write_guest_file(struct buffer_instance *instance)
>


-- 
Tzvetomir (Ceco) Stoyanov
VMware Open Source Technology Center



[Index of Archives]     [Linux USB Development]     [Linux USB Development]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux