Re: [PATCH v3 4/5] trace-cmd split: Enable support for buffer selection

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

 





On 2/12/24 00:35, Steven Rostedt wrote:
On Mon, 5 Feb 2024 14:38:38 +0100
Pierre Gondois <pierre.gondois@xxxxxxx> wrote:
  >
So what I'm thinking is that the -B buffers default to the same buffer as
the top buffer unless specified differently.

Here's what I think would work. We add four new options.

   --top
   -B <instance>
   -t
   -b

Where --top represents the "top" instance.

-B represents the <instance>

-t can be used after -B to make it a top instance.

-b can be used before any -B to make the top instance into its own instance.

This set of parameters sounds good to me.


Rules:

    --top can not come after -B.
    -t must come after -B
    -b must come before -B

IIUC, these rules are described in the syntax below.


There can only be one top instance, and all named instances must be unique.
That is, you can't have two instances called "foo".

We have: trace-cmd split <TOP_COMMANDS> <INSTANCE_COMMANDS>

    TOP_COMMANDS :: nil | TOP_PARAMS

    INSTANCE_COMMANDS :: nil | -B name INSTANCE_PARAMS INSTANCE_COMMANDS

    TOP_PARAMS :: nil | TOP_OPTIONS TOP_PARAMS

    TOP_OPTIONS :: --top | -b name | -o file

    INSTANCE_PARAMS :: nil | INSTANCE_OPTIONS INSTANCE_PARAMS

    INSTANCE_OPTIONS :: nil | -t | -o file

I think it might also be difficult to place the top instance in multiple output
files (or the intention was to do it in multiple steps ?). For instance, from a
trace containing a top instance and foo/bar instances, what would be the command
to obtain:
- a foo.dat file containing the top + foo instances
- a bar.dat file containing the top + bar instances

Does that need to be done in a single command, or two commands?

   trace-cmd split --top -B foo
   trace-cmd split --top -B bar

?

Yes ok, we can do that.



If this was:
    trace-cmd split --top -o foo.dat --top -o bar.dat -B foo -o foo.dat -B bar -o bar.dat
I think it would be clearer to revolve around the output file:
    trace-cmd split --top -B foo -o foo.dat --top -B bar -o bar.dat
but this is open to debate.

My concern is that if we want to do that in one command it can cause
the code and parameters to become too complex. But I'm not against the
idea. I personally think that if we allow too much it may become too
confusing.

Ok ok, we can limit the command to one output file.



---

Also, if one wants to place all the instance in one output.dat file, IIUC all the
instances will have to be nominatively selected right ?


Examples:

   trace-cmd split --top -B foo

Will make a trace.dat.1 that has top and foo in it.

   trace-cmd split --top

Will make a trace.dat.1 that only has the top instance

   trace-cmd split -B foo

Will make a trace.dat.1 that only has foo in it.

   trace-cmd split -B foo -t

Will make a trace.dat.1 that only has foo in it. It will also promote the
instance foo to the top instance (it will lose its "foo" name).

   trace-cmd split --top -o buba.dat -B foo

Will create a buba.dat that has both top and foo in it

  From the syntax above, I would have thought that this would be parsed as:
- <TOP_COMMANDS>: '--top -o buba.dat'
- <INSTANCE_COMMANDS>: '-B foo'

and so that the 'foo' instance would end up in the default trace.dat.1
as there is no output file specified.

No, I was saying that -B will default to the top file, not the default
file. If the top file is specified, then the -B will also be in that file.

Ok right. I think I got confused due to the possibility to have multiple
output files when expanding 'trace-cmd split <TOP_COMMANDS> <INSTANCE_COMMANDS>'

I think the description should match this then:
  trace-cmd split [OTHER_OPTIONS] [--top [-b name]] [-o output_file] [-B instance_name [-t]]*
    [start-time [end-time]]
# The '-t' option can only be used once per command line

or:
  trace-cmd split <TOP_COMMANDS> <OUTPUT_COMMAND> <INSTANCE_COMMANDS>

  TOP_COMMANDS :: nil | --top TOP_PARAMS
  TOP_PARAMS :: nil | -b name

  OUTPUT_COMMAND :: nil | -o output_file

  INSTANCE_COMMANDS :: nil | -B name INSTANCE_PARAMS INSTANCE_COMMANDS
  INSTANCE_PARAMS :: nil | -t
# INSTANCE_PARAMS can only expand to '-t' once.

I'm also not sure it is necessary to have a specific order for the
--top/-o/-B parameters. I should also work when they are unordered
if we limit the command to one output file:
- trace-cmd split -B foo -t --top -b old_top -o output.dat
- trace-cmd split -o output.dat -B foo -t --top -b old_top
- trace-cmd split -o output.dat --top -b old_top -B foo -t
should all be equivalent.

Regards,
Pierre




   trace-cmd split --top -B foo -o buba.dat

Will create a trace-dat.1 with just top in it, and buba.dat with just foo
in it.

   trace-cmd split --top -B foo -o buba.dat -t

Will create a trace-dat.1 with just top in it, and buba.dat with just foo
in it (promoting foo to top instance)

   trace-cmd split --top -b foo -B foo -t

Will make a trace.dat.1 file where the top instance becomes "foo" and the
foo instance becomes the top instance.

    trace-cmd split -o buba.dat -B foo -t

I think this would be parsed (cf. the syntax above) as:
- <TOP_COMMANDS>: '-o buba.dat'
- <INSTANCE_COMMANDS>: '-B foo -t'

So there would be
- a buba.dat file containing all the possible instances and the
    top instance
- a default trace.data.1 containing the foo instance as the top instance

Again, -o of the top file becomes the default for all the rest, unless
they specify their own output file.

-- Steve




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

  Powered by Linux