09/04/2020 17:36, Jerin Jacob:
> On Thu, Apr 9, 2020 at 7:30 PM Thomas Monjalon <tho...@monjalon.net> wrote:
> > 03/04/2020 17:36, jer...@marvell.com:
> > > Features:
> > > ~~~~~~~~~
> > > - APIs and Features are similar to rte_log dynamic framework
> > > API(expect log prints on stdout vs it dumps on trace file)
> >
> > A log can print to syslog as well.
> >
> > As discussed somewhere else, please do not introduce global level
> > in rte_trace. I think it is useless. If we need to change the level
> > of all trace types, we can just use a wildcard (globbing or regexp).
> 
> 
> Currently, In the log library, when EAL command-line argument
> specifies the "--log-level=val" it, will call
> the  rte_log_global_level_set(val)
> 
> Is the suggestion to make rte_log_global_level_set() as an internal
> EAL API or remove that feature?

Completely remove global level.
Why would we need 2 levels of level?

> If we remove, then I dont know, how we can map --log-level or
> --trace-level EAL command-line argument.

They are setting levels with regex or globbing.
--log-level supports 3 syntaxes today:
        - int (global level)
        - globbing:int
        - regex,int
I propose to drop the first syntax because it became useless
now that we have powerful globbing and regex.


> > And about wording, "pattern" is too vague and should be replaced
> > with "globbing".
> 
> Currently, we are using the word "shell pattern" in log and trace.
> According to man 3 fnmatch, both being used.
> I can send a patch for changing the "shell pattern" to  "glob" in
> rte_log.h and update the trace if needed.
> Let me know?. IMO, Both has to use same word.

Yes I think globbing is more accurate than "shell pattern",
because we can use regex pattern in shell as well.


> > > - No specific limit on the events. A string-based event like rte_log
> > > for pattern matching
> >
> > Would it be possible to replace rte_log with rte_trace?
> 
> Yes, I kept public API similar to log to have that use case in mind.

OK I think it would be good to have only one system.


> > > - Dynamic enable/disable support.
> >
> > How dynamic it is? Can we start/stop a trace after starting DPDK?
> 
> Yes, we have fine control enabling and disabling a specific or group of 
> events.
> See rte_trace_enable(), rte_trace_disable() and rte_trace_pattern()
> 
> > I think we need a control channel for this.
> > I propose to introduce a general control channel in DPDK.
> 
> Yes. Once we have a general control channel in DPDK. We can hook
> rte_trace_enable() and friends
> in the message handler.

That would be a nice feature.


> > > - Instructmention overhead is ~1 cycle. i.e cost of adding the code
> >
> > Nice
> >
> >
> > > wth out using trace feature.
> > > - Timestamp support for all the events using DPDK rte_rtdsc
> >
> > Could we use other timestamp sources, like the mbuf timestamp
> > for Rx traces?
> 
> Trace will be running at the global wall clock. Rx specific tracepoint
> can add mbuf->timestamp as FIELD in the future if needed.

OK makes sense.

Note: I prefer rte_get_timer_cycles() because rdtsc is an x86 instruction.


> > > - No dependency on another library. Clean room native implementation of
> > >   CTF.
> >
> > No benefit of using an external CTF library maintained somewhere else?
> 
> See performance data comparison with LTTng in the cover letter.
> 
> We discussed this enough in the mailing list on RFC and decide to use
> Faster trace support for Fastpath use case and avoid any external library to 
> EAL
> (We need tracepoints in the EAL too for tracing).

I can understand the performance reason.
But if another library can provide the same performance,
I don't see any reason not depending on it.
If the dependency is not found, the feature can be disabled.


Reply via email to