Skip to content

Commit aa74894

Browse files
Daniel Bristot de Oliveirarostedt
authored andcommitted
tracing/timerlat: Notify IRQ new max latency only if stop tracing is set
Currently, the notification of a new max latency is sent from timerlat's IRQ handler anytime a new max latency is found. While this behavior is not wrong, the send IPI overhead itself will increase the thread latency and that is not the desired effect (tracing overhead). Moreover, the thread will notify a new max latency again because the thread latency as it is always higher than the IRQ latency that woke it up. The only case in which it is helpful to notify a new max latency from IRQ is when stop tracing (for the IRQ) is set, as in this case, the thread will not be dispatched. Notify a new max latency from the IRQ handler only if stop tracing is set for the IRQ handler. Link: https://lkml.kernel.org/r/2c2d9a56c0886c8402ba320de32856cbbb10c2bb.1652175637.git.bristot@kernel.org Cc: Juri Lelli <juri.lelli@redhat.com> Cc: Ingo Molnar <mingo@redhat.com> Reported-by: Clark Williams <williams@redhat.com> Fixes: a955d7e ("trace: Add timerlat tracer") Signed-off-by: Daniel Bristot de Oliveira <bristot@kernel.org> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
1 parent 4399404 commit aa74894

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

kernel/trace/trace_osnoise.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1578,11 +1578,12 @@ static enum hrtimer_restart timerlat_irq(struct hrtimer *timer)
15781578

15791579
trace_timerlat_sample(&s);
15801580

1581-
notify_new_max_latency(diff);
1582-
1583-
if (osnoise_data.stop_tracing)
1584-
if (time_to_us(diff) >= osnoise_data.stop_tracing)
1581+
if (osnoise_data.stop_tracing) {
1582+
if (time_to_us(diff) >= osnoise_data.stop_tracing) {
15851583
osnoise_stop_tracing();
1584+
notify_new_max_latency(diff);
1585+
}
1586+
}
15861587

15871588
wake_up_process(tlat->kthread);
15881589

0 commit comments

Comments
 (0)