PATCH] tracing: ALSA: hda: Remove string manipulation out of the fast path
Takashi Iwai
tiwai at suse.de
Mon Jul 4 14:32:15 CEST 2022
On Sun, 03 Jul 2022 17:06:05 +0200,
Steven Rostedt wrote:
>
> From: "Steven Rostedt (Google)" <rostedt at goodmis.org>
>
> The TRACE_EVENT() macro is broken up into various parts to be efficient.
> The TP_fast_assign() is just to record the event into the ring buffer, and
> is to be done as fast as possible as this occurs during the actual running
> of the code. The slower this is, the slower the code that is being traced
> becomes.
>
> The TP_printk() is processed when reading the tracing buffer. This is
> considered the slow path. Any processing that can be moved from the
> TP_fast_assign() to the TP_printk() should do so.
>
> For some reason, the entire string processing of the trace events
> hda_send_cmd, hda_get_response, and hda_unsol_event was moved from the
> TP_printk() into the TP_fast_assign(). On top of that, the
> __dynamic_array() was used with a fixed size of HDAC_MSG_MAX, which is
> useless as a dynamic_array as it will always allocate HDAC_MSG_MAX bytes
> on the ring buffer and even save that amount into the event (as it expects
> the size to be dynamic, which using a fixed size defeats that purpose).
>
> Instead, just save the necessary elements in the TP_fast_assign() and do
> the string manipulation in the slow path.
>
> The output should be the same.
>
> Cc: Jaroslav Kysela <perex at perex.cz>
> Cc: Takashi Iwai <tiwai at suse.com>
> Cc: alsa-devel at alsa-project.org
> Signed-off-by: Steven Rostedt (Google) <rostedt at goodmis.org>
Thanks, applied now to for-next branch.
Takashi
More information about the Alsa-devel
mailing list