Tracing tooling updates for 6.9

Tracing:
        - Update makefiles for latency-collector and RTLA,
          using tools/build/ makefiles like perf does, inheriting
          its benefits. For example, having a proper way to
          handle dependencies.

        - The timerlat tracer has an interface for any tool to use.
          rtla timerlat tool uses this interface dispatching its
          own threads as workload. But, rtla timerlat could also be
          used for any other process. So, add 'rtla timerlat -U'
          option, allowing the timerlat tool to measure the latency of
          any task using the timerlat tracer interface.

Verification:
        - Update makefiles for verification/rv, using tools/build/
          makefiles like perf does, inheriting its benefits.
          For example, having a proper way to handle dependencies.
tools/rtla: Add -U/--user-load option to timerlat

The timerlat tracer provides an interface for any application to wait
for the timerlat's periodic wakeup. Currently, rtla timerlat uses it
to dispatch its user-space workload (-u option).

But as the tracer interface is generic, rtla timerlat can also be used
to monitor any workload that uses it. For example, a user might
place their own workload to wait on the tracer interface, and
monitor the results with rtla timerlat.

Add the -U option to rtla timerlat top and hist. With this option, rtla
timerlat will not dispatch its workload but only setting up the
system, waiting for a user to dispatch its workload.

The sample code in this patch is an example of python application
that loops in the timerlat tracer fd.

To use it, dispatch:

 # rtla timerlat -U

In a terminal, then run the python program on another terminal,
specifying the CPU to run it. For example, setting on CPU 1:

 #./timerlat_load.py 1

Then rtla timerlat will start printing the statistics of the
./timerlat_load.py app.

An interesting point is that the "Ret user Timer Latency" value
is the overall response time of the load. The sample load does
a memory copy to exemplify that.

The stop tracing options on rtla timerlat works in this setup
as well, including auto analysis.

Link: https://lkml.kernel.org/r/36e6bcf18fe15c7601048fd4c65aeb193c502cc8.1707229706.git.bristot@kernel.org

Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org>
4 files changed