On Thu, 2025-01-16 at 15:49 +0100, Tomas Glozar wrote: > Apply the changes from the previous patch also to timerlat-top. > > Signed-off-by: Tomas Glozar <tglo...@redhat.com> > --- > tools/tracing/rtla/src/timerlat_top.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/tools/tracing/rtla/src/timerlat_top.c > b/tools/tracing/rtla/src/timerlat_top.c > index d21a21053917..d358cd39f360 100644 > --- a/tools/tracing/rtla/src/timerlat_top.c > +++ b/tools/tracing/rtla/src/timerlat_top.c > @@ -903,6 +903,14 @@ static int stop_tracing; > static struct trace_instance *top_inst = NULL; > static void stop_top(int sig) > { > + if (stop_tracing) { > + /* > + * Stop requested twice in a row; abort event > processing and > + * exit immediately > + */ > + tracefs_iterate_stop(top_inst->inst); > + return; > + } > stop_tracing = 1; > if (top_inst) > trace_instance_stop(top_inst);
I confirm the patchset works as expected on a 128 cores machine. That is like the machine where the problem was first observed: run timerlat with -p 100 and it would hang. Now running it with -d terminates (a bit) after the expiration of the timer with a sane report, sending a SIGINT terminates it too and sending 2 SIGINT terminates it almost instantaneously. This works on both timerlat top and hist, with both -u and -k . The report only gets printed in the end (as if -q was passed), but these patches are not meant to fix that. Tested-by: Gabriele Monaco <gmon...@redhat.com>