Re: [PATCH 12/12] perf test: Replace data symbol test workload with datasym

James Clark
2022-11-14T11:18:37Z

On 10/11/2022 18:19, Namhyung Kim wrote:
> So that it can get rid of requirement of a compiler.
>
> $ sudo ./perf test -v 109
> 109: Test data symbol :
> --- start ---
> test child forked, pid 844526
> Recording workload...
> [ perf record: Woken up 2 times to write data ]
> [ perf record: Captured and wrote 0.354 MB /tmp/__perf_test.perf.data.GFeZO (4847 samples) ]
> Cleaning up files...
> test child finished with 0
> ---- end ----
> Test data symbol: Ok
>
> Cc: Leo Yan <leo.yan@linaro.org>
> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
> ---
> tools/perf/tests/shell/test_data_symbol.sh | 29 +---------------------
> 1 file changed, 1 insertion(+), 28 deletions(-)
>
Tested-by: James Clark <james.clark@arm.com>

> diff --git a/tools/perf/tests/shell/test_data_symbol.sh b/tools/perf/tests/shell/test_data_symbol.sh
> index cd6eb54d235d..d871e6c743ef 100755
> --- a/tools/perf/tests/shell/test_data_symbol.sh
> +++ b/tools/perf/tests/shell/test_data_symbol.sh
> @@ -11,13 +11,7 @@ skip_if_no_mem_event() {
>
> skip_if_no_mem_event || exit 2
>
> -# skip if there's no compiler
> -if ! [ -x "$(command -v cc)" ]; then
> - echo "skip: no compiler, install gcc"
> - exit 2
> -fi
> -
> -TEST_PROGRAM=$(mktemp /tmp/__perf_test.program.XXXXX)
> +TEST_PROGRAM="perf test -w datasym"
> PERF_DATA=$(mktemp /tmp/__perf_test.perf.data.XXXXX)
>
> check_result() {
> @@ -45,31 +39,10 @@ cleanup_files()
> {
> echo "Cleaning up files..."
> rm -f ${PERF_DATA}
> - rm -f ${TEST_PROGRAM}
> }
>
> trap cleanup_files exit term int
>
> -# compile test program
> -echo "Compiling test program..."
> -cat << EOF | cc -o ${TEST_PROGRAM} -x c -
> -typedef struct _buf {
> - char data1;
> - char reserved[55];
> - char data2;
> -} buf __attribute__((aligned(64)));
> -
> -static buf buf1;
> -
> -int main(void) {
> - for (;;) {
> - buf1.data1++;
> - buf1.data2 += buf1.data1;
> - }
> - return 0;
> -}
> -EOF
> -
> echo "Recording workload..."
>
> # perf mem/c2c internally uses IBS PMU on AMD CPU which doesn't support