[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <9e53f5b9-d8a9-46b8-8ff1-7f018e2d9c06@os.amperecomputing.com>
Date: Wed, 11 Dec 2024 10:01:41 -0800
From: Steve Clevenger <scclevenger@...amperecomputing.com>
To: James Clark <james.clark@...aro.org>, coresight@...ts.linaro.org
Cc: yeoreum.yun@....com, Mike Leach <mike.leach@...aro.org>,
Jonathan Corbet <corbet@....net>, Leo Yan <leo.yan@...ux.dev>,
Namhyung Kim <namhyung@...nel.org>, linux-arm-kernel@...ts.infradead.org,
linux-doc@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] coresight: docs: Remove target sink from examples
Hi James,
I thought I'd mention this issue with multicore self-hosted trace. The
perf command line syntax does not allow a sink "type" to be specified
(e.g. @tmc_etf or @tmc_etr). For multicore, it doesn't make sense to
specify a processor mapped sink as would be the case for single core
trace. A sink "type" should be allowed to avoid the auto select default.
In our case, the default is the ETF sink.
Thanks,
Steve C.
On 12/10/2024 6:49 AM, James Clark wrote:
> Previously the sink had to be specified, but now it auto selects one by
> default. Including a sink in the examples causes issues when copy
> pasting the command because it might not work if that sink isn't
> present. Remove the sink from all the basic examples and create a new
> section specifically about overriding the default one.
>
> Make the text a but more concise now that it's in the advanced section,
> and similarly for removing the old kernel advice.
>
> Signed-off-by: James Clark <james.clark@...aro.org>
> ---
> Documentation/trace/coresight/coresight.rst | 41 ++++++++-----------
> .../userspace-api/perf_ring_buffer.rst | 4 +-
> 2 files changed, 18 insertions(+), 27 deletions(-)
>
> diff --git a/Documentation/trace/coresight/coresight.rst b/Documentation/trace/coresight/coresight.rst
> index d4f93d6a2d63..806699871b80 100644
> --- a/Documentation/trace/coresight/coresight.rst
> +++ b/Documentation/trace/coresight/coresight.rst
> @@ -462,44 +462,35 @@ queried by the perf command line tool:
>
> cs_etm// [Kernel PMU event]
>
> - linaro@...aro-nano:~$
> -
> Regardless of the number of tracers available in a system (usually equal to the
> amount of processor cores), the "cs_etm" PMU will be listed only once.
>
> A Coresight PMU works the same way as any other PMU, i.e the name of the PMU is
> -listed along with configuration options within forward slashes '/'. Since a
> -Coresight system will typically have more than one sink, the name of the sink to
> -work with needs to be specified as an event option.
> -On newer kernels the available sinks are listed in sysFS under
> +provided along with configuration options within forward slashes '/' (see
> +`Config option formats`_).
> +
> +Advanced Perf framework usage
> +-----------------------------
> +
> +Sink selection
> +~~~~~~~~~~~~~~
> +
> +An appropriate sink will be selected automatically for use with Perf, but since
> +there will typically be more than one sink, the name of the sink to use may be
> +specified as a special config option prefixed with '@'.
> +
> +The available sinks are listed in sysFS under
> ($SYSFS)/bus/event_source/devices/cs_etm/sinks/::
>
> root@...alhost:/sys/bus/event_source/devices/cs_etm/sinks# ls
> tmc_etf0 tmc_etr0 tpiu0
>
> -On older kernels, this may need to be found from the list of coresight devices,
> -available under ($SYSFS)/bus/coresight/devices/::
> -
> - root:~# ls /sys/bus/coresight/devices/
> - etm0 etm1 etm2 etm3 etm4 etm5 funnel0
> - funnel1 funnel2 replicator0 stm0 tmc_etf0 tmc_etr0 tpiu0
> root@...aro-nano:~# perf record -e cs_etm/@..._etr0/u --per-thread program
>
> -As mentioned above in section "Device Naming scheme", the names of the devices could
> -look different from what is used in the example above. One must use the device names
> -as it appears under the sysFS.
> -
> -The syntax within the forward slashes '/' is important. The '@' character
> -tells the parser that a sink is about to be specified and that this is the sink
> -to use for the trace session.
> -
> More information on the above and other example on how to use Coresight with
> the perf tools can be found in the "HOWTO.md" file of the openCSD gitHub
> repository [#third]_.
>
> -Advanced perf framework usage
> ------------------------------
> -
> AutoFDO analysis using the perf tools
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> @@ -508,7 +499,7 @@ perf can be used to record and analyze trace of programs.
> Execution can be recorded using 'perf record' with the cs_etm event,
> specifying the name of the sink to record to, e.g::
>
> - perf record -e cs_etm/@..._etr0/u --per-thread
> + perf record -e cs_etm//u --per-thread
>
> The 'perf report' and 'perf script' commands can be used to analyze execution,
> synthesizing instruction and branch events from the instruction trace.
> @@ -572,7 +563,7 @@ sort example is from the AutoFDO tutorial (https://gcc.gnu.org/wiki/AutoFDO/Tuto
> Bubble sorting array of 30000 elements
> 5910 ms
>
> - $ perf record -e cs_etm/@..._etr0/u --per-thread taskset -c 2 ./sort
> + $ perf record -e cs_etm//u --per-thread taskset -c 2 ./sort
> Bubble sorting array of 30000 elements
> 12543 ms
> [ perf record: Woken up 35 times to write data ]
> diff --git a/Documentation/userspace-api/perf_ring_buffer.rst b/Documentation/userspace-api/perf_ring_buffer.rst
> index bde9d8cbc106..dc71544532ce 100644
> --- a/Documentation/userspace-api/perf_ring_buffer.rst
> +++ b/Documentation/userspace-api/perf_ring_buffer.rst
> @@ -627,7 +627,7 @@ regular ring buffer.
> AUX events and AUX trace data are two different things. Let's see an
> example::
>
> - perf record -a -e cycles -e cs_etm/@..._etr0/ -- sleep 2
> + perf record -a -e cycles -e cs_etm// -- sleep 2
>
> The above command enables two events: one is the event *cycles* from PMU
> and another is the AUX event *cs_etm* from Arm CoreSight, both are saved
> @@ -766,7 +766,7 @@ only record AUX trace data at a specific time point which users are
> interested in. E.g. below gives an example of how to take snapshots
> with 1 second interval with Arm CoreSight::
>
> - perf record -e cs_etm/@..._etr0/u -S -a program &
> + perf record -e cs_etm//u -S -a program &
> PERFPID=$!
> while true; do
> kill -USR2 $PERFPID
Powered by blists - more mailing lists