From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 633BFC4332F for ; Wed, 16 Nov 2022 23:39:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233858AbiKPXjH (ORCPT ); Wed, 16 Nov 2022 18:39:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60604 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234178AbiKPXjB (ORCPT ); Wed, 16 Nov 2022 18:39:01 -0500 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 47321FC3; Wed, 16 Nov 2022 15:39:00 -0800 (PST) Received: by mail-pl1-x62a.google.com with SMTP id k7so5351pll.6; Wed, 16 Nov 2022 15:39:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=tH9ILVQPbpPL5nSTMa8Bnv/nrDrzsZ52M2SrwHw2PME=; b=m4xEihDdJqYogfuBZBlfb0sBJb6BVfmFoJ0L4OO2IG7JBsAgYc93fODmV0/AxhfgZh hQj+9tZt+V1ZtSBTycFanMzUEdnRcjh/HaHESTLM94kztVf3I9gC+vKqm7828ptyM2s1 RYTJzTxbgNNUjNdVrC0Gt9t/G+9U4AddQBgCD+aCtOE+2CDQ0WHvWd09ArMzuQGXBqws kRgzNpbjEzRRypSGxmGWwJEcuLuDkTYGzDfbDi+vDDtM61/WcrPwfo0NiuHQIHk3STK2 hGkNJN0e+u3YZ/74WS52L3zIvbip+4WUCQtbYA5HSJ5RNeSG/ef844hR9vrsOUdxlFRG XT2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=tH9ILVQPbpPL5nSTMa8Bnv/nrDrzsZ52M2SrwHw2PME=; b=CdEZLhwaSPLlVxYIcf5uY5+1V6CVcBP0+hx53aEknUoV6wRIzIfOTWuCUuibW7Yjvk a7n0uQF9WZIRJYsIwZO3I90XqsGERhJ6W/hyUKwrqxhzqfJNIEQHiQ+rK07IjSI1kfHS 4dmBYPthD45mIlrYOw6bpnbWRBiU/ND4UL1REnDzCOaOFIkvMD7j/m82KMe6/oSt1tpH /j9OzcX+EyxOJQqIMFkBmOsAJSPIvtoNhZOrtf93Tkpq2MN/J2IJjh/JJEpCmh1RdfVO iqb2n5VORq4Z+gORiQrjo9cM6hhLqdAB3uyKyGkkM6xPU5jO/ApUwGg/Hqkh/btKYOWh Ke8Q== X-Gm-Message-State: ANoB5pmIr+AE2mScaQfz1xUa4sMPSdAEGdrU64Ukk3nrDGlmt/bg2V7m KuVNO0K520qtfBo5ik4zKyA= X-Google-Smtp-Source: AA0mqf7wakGRAbzzF8EobA6Z52wqDVm6+ZbXPslerm7wazfWAn0TCPv8fAU+wN0BoSXxsxf9adwtxQ== X-Received: by 2002:a17:90b:368d:b0:212:6a0b:7d55 with SMTP id mj13-20020a17090b368d00b002126a0b7d55mr138810pjb.16.1668641939546; Wed, 16 Nov 2022 15:38:59 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.38.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:38:59 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 01/12] perf test: Add -w/--workload option Date: Wed, 16 Nov 2022 15:38:43 -0800 Message-Id: <20221116233854.1596378-2-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The -w/--workload option is to run a simple workload used by testing. This adds a basic framework to run the workloads and 'noploop' workload as an example. $ perf test -w noploop The noploop does a loop doing nothing (NOP) for a second by default. It can have an optional argument to specify the time in seconds. Signed-off-by: Namhyung Kim --- tools/perf/tests/Build | 2 ++ tools/perf/tests/builtin-test.c | 24 +++++++++++++++++++++ tools/perf/tests/tests.h | 22 +++++++++++++++++++ tools/perf/tests/workloads/Build | 3 +++ tools/perf/tests/workloads/noploop.c | 32 ++++++++++++++++++++++++++++ 5 files changed, 83 insertions(+) create mode 100644 tools/perf/tests/workloads/Build create mode 100644 tools/perf/tests/workloads/noploop.c diff --git a/tools/perf/tests/Build b/tools/perf/tests/Build index 2064a640facb..11b69023011b 100644 --- a/tools/perf/tests/Build +++ b/tools/perf/tests/Build @@ -103,3 +103,5 @@ endif CFLAGS_attr.o +=3D -DBINDIR=3D"BUILD_STR($(bindir_SQ))" -DPYTHON= =3D"BUILD_STR($(PYTHON_WORD))" CFLAGS_python-use.o +=3D -DPYTHONPATH=3D"BUILD_STR($(OUTPUT)python)" -DP= YTHON=3D"BUILD_STR($(PYTHON_WORD))" CFLAGS_dwarf-unwind.o +=3D -fno-optimize-sibling-calls + +perf-y +=3D workloads/ diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-tes= t.c index 7122eae1d98d..ce641ccfcf81 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -118,6 +118,10 @@ static struct test_suite **tests[] =3D { arch_tests, }; =20 +static struct test_workload *workloads[] =3D { + &workload__noploop, +}; + static int num_subtests(const struct test_suite *t) { int num; @@ -475,6 +479,21 @@ static int perf_test__list(int argc, const char **argv) return 0; } =20 +static int run_workload(const char *work, int argc, const char **argv) +{ + unsigned int i =3D 0; + struct test_workload *twl; + + for (i =3D 0; i < ARRAY_SIZE(workloads); i++) { + twl =3D workloads[i]; + if (!strcmp(twl->name, work)) + return twl->func(argc, argv); + } + + pr_info("No workload found: %s\n", work); + return -1; +} + int cmd_test(int argc, const char **argv) { const char *test_usage[] =3D { @@ -482,12 +501,14 @@ int cmd_test(int argc, const char **argv) NULL, }; const char *skip =3D NULL; + const char *workload =3D NULL; const struct option test_options[] =3D { OPT_STRING('s', "skip", &skip, "tests", "tests to skip"), OPT_INCR('v', "verbose", &verbose, "be more verbose (show symbol address, etc)"), OPT_BOOLEAN('F', "dont-fork", &dont_fork, "Do not fork for testcase"), + OPT_STRING('w', "workload", &workload, "work", "workload to run for testi= ng"), OPT_END() }; const char * const test_subcommands[] =3D { "list", NULL }; @@ -504,6 +525,9 @@ int cmd_test(int argc, const char **argv) if (argc >=3D 1 && !strcmp(argv[0], "list")) return perf_test__list(argc - 1, argv + 1); =20 + if (workload) + return run_workload(workload, argc, argv); + symbol_conf.priv_size =3D sizeof(int); symbol_conf.sort_by_name =3D true; symbol_conf.try_vmlinux_path =3D true; diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h index 5bbb8f6a48fc..d315d0d6fc97 100644 --- a/tools/perf/tests/tests.h +++ b/tools/perf/tests/tests.h @@ -180,4 +180,26 @@ int test__arch_unwind_sample(struct perf_sample *sampl= e, DECLARE_SUITE(vectors_page); #endif =20 +/* + * Define test workloads to be used in test suites. + */ +typedef int (*workload_fnptr)(int argc, const char **argv); + +struct test_workload { + const char *name; + workload_fnptr func; +}; + +#define DECLARE_WORKLOAD(work) \ + extern struct test_workload workload__##work + +#define DEFINE_WORKLOAD(work) \ +struct test_workload workload__##work =3D { \ + .name =3D #work, \ + .func =3D work, \ +} + +/* The list of test workloads */ +DECLARE_WORKLOAD(noploop); + #endif /* TESTS_H */ diff --git a/tools/perf/tests/workloads/Build b/tools/perf/tests/workloads/= Build new file mode 100644 index 000000000000..f98e968d4633 --- /dev/null +++ b/tools/perf/tests/workloads/Build @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0 + +perf-y +=3D noploop.o diff --git a/tools/perf/tests/workloads/noploop.c b/tools/perf/tests/worklo= ads/noploop.c new file mode 100644 index 000000000000..940ea5910a84 --- /dev/null +++ b/tools/perf/tests/workloads/noploop.c @@ -0,0 +1,32 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#include +#include +#include +#include +#include "../tests.h" + +static volatile sig_atomic_t done; + +static void sighandler(int sig __maybe_unused) +{ + done =3D 1; +} + +static int noploop(int argc, const char **argv) +{ + int sec =3D 1; + + if (argc > 0) + sec =3D atoi(argv[0]); + + signal(SIGINT, sighandler); + signal(SIGALRM, sighandler); + alarm(sec); + + while (!done) + continue; + + return 0; +} + +DEFINE_WORKLOAD(noploop); --=20 2.38.1.584.g0f3c55d4c2-goog From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E34EFC4332F for ; Wed, 16 Nov 2022 23:39:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234457AbiKPXjM (ORCPT ); Wed, 16 Nov 2022 18:39:12 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60610 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234207AbiKPXjC (ORCPT ); Wed, 16 Nov 2022 18:39:02 -0500 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 81F852735; Wed, 16 Nov 2022 15:39:01 -0800 (PST) Received: by mail-pl1-x634.google.com with SMTP id g10so552550plo.11; Wed, 16 Nov 2022 15:39:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=e32OqBWuzlRvRYqEyrLxtjOglgwrHLuTqyHep2+BwGY=; b=FWxyJJVilgcjlTlzSRL0hSHGUP5IZ9FYJ6TUCpzf13Zyj2bOgzWZwmlH+rJPZt2oKH KL5Xm9n5PUqDpOMoybYP+wTYNzB82M/q7+iq0Wxv+9jOlbUnr4X4W6fKvb5qMmHD1lq2 FmFbYB8AP7/7cmVM++vQK+aKGdzvEz0hTS7mfgCFgAH1RtdJRsFHXghj0SqrTaNkmseG sKwo9m/EFCVw8pcZInRctMBsBxSAbAFMsrDc3x87+rw7QyLVyE+oZUi3dlDSsAIZlk6F 15sp5c0KdRKbC+i52eSS52vIqp2FW5WAwvSKQmsHUaQ2KkV6TclSWRAu4Hu6H0VdE8Jd RNGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=e32OqBWuzlRvRYqEyrLxtjOglgwrHLuTqyHep2+BwGY=; b=Y4fmlmE4/HKkyfl6RY57LhIs7W9D08bDm5dmrBBX1XUWS3TTKEfp86FN8Je1wW2z6Z dTEt30O2Ciatcn11jd7LNY4MMaw+WUne/DrqaQ7gPXGwqVzZydPISo0+u07mD8FPrGEH A3hPIGyK/Awcf/bI1D8VRY0bToHClQZvjoxCGtHCHKvtOjZmXSLe3aDJZ3rjTk5hSJ9A bTevu5chR2MzXEg4cXjnV8w9TeASVIJhWWp+IbO3rwg4RGEqDo22k46M9YvOybxLYwGM dYd0WyEVxdFcFzTQhmIrk4l1RqFR84r+CP3UK/xfN94mjLoHtQLKwZqnvK04jQb0cUB2 4VHQ== X-Gm-Message-State: ANoB5pn2bIBZ1PptvcZmLfOyQgg616sMdNIKNT6YqvcjEl8xSOEl8Dfg QNTfLyrO9Rm1F5DFdvkTWbU= X-Google-Smtp-Source: AA0mqf7i7/HFrtWZZajsinEO1mlkkvuOY7vlkdTnG7S/7SCE76gFw6RyK4Lm8/j2MwfWpX5ys/XLmQ== X-Received: by 2002:a17:902:bb8b:b0:188:d4bf:dbfe with SMTP id m11-20020a170902bb8b00b00188d4bfdbfemr210164pls.31.1668641940900; Wed, 16 Nov 2022 15:39:00 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.38.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:39:00 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 02/12] perf test: Replace pipe test workload with noploop Date: Wed, 16 Nov 2022 15:38:44 -0800 Message-Id: <20221116233854.1596378-3-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" So that it can get rid of requirement of a compiler. Also define and use more local symbols to ease future changes. $ sudo ./perf test -v pipe 87: perf pipe recording and injection test : --- start --- test child forked, pid 748003 [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.000 MB - ] 748014 748014 -1 |perf [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.000 MB - ] 99.83% perf perf [.] noploop [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.000 MB - ] 99.85% perf perf [.] noploop [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.160 MB /tmp/perf.data.2XYPdw (4007 sa= mples) ] 99.83% perf perf [.] noploop test child finished with 0 ---- end ---- perf pipe recording and injection test: Ok Tested-by: James Clark Signed-off-by: Namhyung Kim --- tools/perf/tests/shell/pipe_test.sh | 55 ++++++----------------------- 1 file changed, 10 insertions(+), 45 deletions(-) diff --git a/tools/perf/tests/shell/pipe_test.sh b/tools/perf/tests/shell/p= ipe_test.sh index 1b32b4f28391..8dd115dd35a7 100755 --- a/tools/perf/tests/shell/pipe_test.sh +++ b/tools/perf/tests/shell/pipe_test.sh @@ -2,68 +2,33 @@ # perf pipe recording and injection test # SPDX-License-Identifier: GPL-2.0 =20 -# skip if there's no compiler -if ! [ -x "$(command -v cc)" ]; then - echo "failed: no compiler, install gcc" - exit 2 -fi - -file=3D$(mktemp /tmp/test.file.XXXXXX) data=3D$(mktemp /tmp/perf.data.XXXXXX) +prog=3D"perf test -w noploop" +task=3D"perf" +sym=3D"noploop" =20 -cat < -#include -#include - -volatile int done; - -void sigalrm(int sig) { - done =3D 1; -} - -__attribute__((noinline)) void noploop(void) { - while (!done) - continue; -} - -int main(int argc, char *argv[]) { - int sec =3D 1; - - if (argc > 1) - sec =3D atoi(argv[1]); - - signal(SIGALRM, sigalrm); - alarm(sec); - - noploop(); - return 0; -} -EOF - - -if ! perf record -e task-clock:u -o - ${file} | perf report -i - --task | = grep test.file; then +if ! perf record -e task-clock:u -o - ${prog} | perf report -i - --task | = grep ${task}; then echo "cannot find the test file in the perf report" exit 1 fi =20 -if ! perf record -e task-clock:u -o - ${file} | perf inject -b | perf repo= rt -i - | grep noploop; then +if ! perf record -e task-clock:u -o - ${prog} | perf inject -b | perf repo= rt -i - | grep ${sym}; then echo "cannot find noploop function in pipe #1" exit 1 fi =20 -perf record -e task-clock:u -o - ${file} | perf inject -b -o ${data} -if ! perf report -i ${data} | grep noploop; then +perf record -e task-clock:u -o - ${prog} | perf inject -b -o ${data} +if ! perf report -i ${data} | grep ${sym}; then echo "cannot find noploop function in pipe #2" exit 1 fi =20 -perf record -e task-clock:u -o ${data} ${file} -if ! perf inject -b -i ${data} | perf report -i - | grep noploop; then +perf record -e task-clock:u -o ${data} ${prog} +if ! perf inject -b -i ${data} | perf report -i - | grep ${sym}; then echo "cannot find noploop function in pipe #3" exit 1 fi =20 =20 -rm -f ${file} ${data} ${data}.old +rm -f ${data} ${data}.old exit 0 --=20 2.38.1.584.g0f3c55d4c2-goog From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 00CF2C4332F for ; Wed, 16 Nov 2022 23:39:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234532AbiKPXjQ (ORCPT ); Wed, 16 Nov 2022 18:39:16 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60622 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231634AbiKPXjD (ORCPT ); Wed, 16 Nov 2022 18:39:03 -0500 Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BBE2ABE2B; Wed, 16 Nov 2022 15:39:02 -0800 (PST) Received: by mail-pj1-x1032.google.com with SMTP id w4-20020a17090ac98400b002186f5d7a4cso291845pjt.0; Wed, 16 Nov 2022 15:39:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=hV9u5PxVvqmV+BpGh3+8lIJe2BvSUrc7KFHFFdwiD9k=; b=EVKtp/j2eht2QovsgJ3wqzLdIVzxwPf117oXwcO7GIUJ/wtopHywSHAnzOfQblWHN6 BEf5plioroWg37zahPDrFKtc/LNRP00oiuvXIvtid1oQhMfQNxcRMncKJqOa+vVNXgnX GH8UhH6mLTz6o9facoKElJxdlnahcWuuXolG0MMqVUimnsgXfszfvX0MW63x2Ehbw6+r 3Ed4Pjx2Xc6EWtKFnxWdg38XyYjxSI66Xy/0jygfpGuMla3WzhIXEW2qzYM1y5eJBzmM tm9uNu3yghimo91s2N1j83lWijAQUyZXwnhX3Ham5tg9FYQYJATBfu8+US5hkTaE4dEd ckxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=hV9u5PxVvqmV+BpGh3+8lIJe2BvSUrc7KFHFFdwiD9k=; b=IBqfZBKwbk80EoXXhiezYIRG81FaFRCow6vbbVDox9K3Cxzsbg9WbYqgGvdl+1AfXo QpRgMiYklL3PQwBqNyDwMRvNXEtCqpr+uzWEUZDcaUWEMp3Me5cXRo3JIciLmbQbqF5F iDHPCRyNj+ihd1rvPrwue3xG5Hf0R3wgTxGngLOwtUGHbAAoxiRgfB11XDomua5uytIH /vw2biqj2nio/02tboSY1Pc6tddVgYjm46AcWJn8172D4sFXT/bfUbJi+Y7yTA2ByqGh jkLnBm+QjMzsEnANrmHxxRHnpUIX3JtGKWEQufnNbqSHxLc+HRMzYN5PqPfsElys6xbl hN7A== X-Gm-Message-State: ANoB5pn/vIbXhN1D0sbB9QaktagIIMoUiWspOz0dnzv7eOMK9L0DPl+3 7LPfBufAW0GMNjTsu4Y3ytw= X-Google-Smtp-Source: AA0mqf767LTaMdwMaWH+aRivTtdCQayAYW29msLhpm4aLuGABU/qGDuj1sv/xVt2hfe8pIQrvZXqEw== X-Received: by 2002:a17:90b:1892:b0:218:8f2:5af9 with SMTP id mn18-20020a17090b189200b0021808f25af9mr5982135pjb.65.1668641942168; Wed, 16 Nov 2022 15:39:02 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.39.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:39:01 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 03/12] perf test: Add 'thloop' test workload Date: Wed, 16 Nov 2022 15:38:45 -0800 Message-Id: <20221116233854.1596378-4-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The thloop is similar to noploop but runs in two threads. This is needed to verify perf record --per-thread to handle multi-threaded programs properly. $ perf test -w thloop It also takes an optional argument to specify runtime in seconds (default: 1). Signed-off-by: Namhyung Kim --- tools/perf/tests/builtin-test.c | 1 + tools/perf/tests/tests.h | 1 + tools/perf/tests/workloads/Build | 1 + tools/perf/tests/workloads/thloop.c | 53 +++++++++++++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 tools/perf/tests/workloads/thloop.c diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-tes= t.c index ce641ccfcf81..161f38476e77 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -120,6 +120,7 @@ static struct test_suite **tests[] =3D { =20 static struct test_workload *workloads[] =3D { &workload__noploop, + &workload__thloop, }; =20 static int num_subtests(const struct test_suite *t) diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h index d315d0d6fc97..e6edfeeadaeb 100644 --- a/tools/perf/tests/tests.h +++ b/tools/perf/tests/tests.h @@ -201,5 +201,6 @@ struct test_workload workload__##work =3D { \ =20 /* The list of test workloads */ DECLARE_WORKLOAD(noploop); +DECLARE_WORKLOAD(thloop); =20 #endif /* TESTS_H */ diff --git a/tools/perf/tests/workloads/Build b/tools/perf/tests/workloads/= Build index f98e968d4633..b8964b1099c0 100644 --- a/tools/perf/tests/workloads/Build +++ b/tools/perf/tests/workloads/Build @@ -1,3 +1,4 @@ # SPDX-License-Identifier: GPL-2.0 =20 perf-y +=3D noploop.o +perf-y +=3D thloop.o diff --git a/tools/perf/tests/workloads/thloop.c b/tools/perf/tests/workloa= ds/thloop.c new file mode 100644 index 000000000000..29193b75717e --- /dev/null +++ b/tools/perf/tests/workloads/thloop.c @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#include +#include +#include +#include +#include +#include "../tests.h" + +static volatile sig_atomic_t done; +static volatile unsigned count; + +/* We want to check this symbol in perf report */ +noinline void test_loop(void); + +static void sighandler(int sig __maybe_unused) +{ + done =3D 1; +} + +noinline void test_loop(void) +{ + while (!done) + count++; +} + +static void *thfunc(void *arg) +{ + void (*loop_fn)(void) =3D arg; + + loop_fn(); + return NULL; +} + +static int thloop(int argc, const char **argv) +{ + int sec =3D 1; + pthread_t th; + + if (argc > 0) + sec =3D atoi(argv[0]); + + signal(SIGINT, sighandler); + signal(SIGALRM, sighandler); + alarm(sec); + + pthread_create(&th, NULL, thfunc, test_loop); + test_loop(); + pthread_join(th, NULL); + + return 0; +} + +DEFINE_WORKLOAD(thloop); --=20 2.38.1.584.g0f3c55d4c2-goog From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7ACA8C4167B for ; Wed, 16 Nov 2022 23:39:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234694AbiKPXjU (ORCPT ); Wed, 16 Nov 2022 18:39:20 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234081AbiKPXjE (ORCPT ); Wed, 16 Nov 2022 18:39:04 -0500 Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1049ABE2B; Wed, 16 Nov 2022 15:39:04 -0800 (PST) Received: by mail-pl1-x633.google.com with SMTP id y4so20308plb.2; Wed, 16 Nov 2022 15:39:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=eJxyXYhhzgIeHuBQXESNxNIqNBrSSrRkKX/giDhK4aM=; b=MgBzJ1j4wC/4bFO/NNOLeJxd6XLPRONHzpzcq1e3R96YYREGdqSs2UHBzfaT2WcgXb li9yoRi35ieBRHA2BGciShpI2i9bpI1BMBCqGnoHOCCzc4ELU++/RGkmpJLnHWZprDCR IE3fLZ5o45ViZHbPI12vuu7al158vkwOB1o0Rb7treKPpstCsngU59tZmZuOa0i7zud0 qsKAzg4tJGhZgG+aGAi0NJl+cydzW94jSqRMutCuGWkwopkI5zKGWECdNRVTRbJiVDTL 8ZfmS04rNwKRbmi/Ej7AtjivQDxs3Zy9vy38hIYRFtBRwRcf7tm8WAcPte+Ism6NKGaR 27Kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=eJxyXYhhzgIeHuBQXESNxNIqNBrSSrRkKX/giDhK4aM=; b=DFTC4f/C1REcZAiU1pMCQpaPWHAVwBIN0cp+Y+MS3/XV7R7uE33VXBXIbtq0CiRzlt eSDyAkbY4ugBS6Kdg0GO2IgjEnOrN/p+3KbxRp9QPkejOhz39Murxi2i7DfORJnAWhTz yFcog0ooDZGxnL3bI3XkZ1ZUKNnT+rOaW193P0JUVUenRz+q8c0gh5w9bElD+1UXAWhL nRBzv1cxirVyleKlfOrQwkGxyGf/moK5iPw5jGh4qpYpRCNU5Jb3JmFmXlbj17u+6rXu EopZWdCFq6vVxKzsMQ6R39lQh0w1CaxW894Gx5pZW7d5lh3vlvtu0b9cFw5mFwIVH1Xn BS2A== X-Gm-Message-State: ANoB5pntgKBTSas2r0j9BhUbuoVt4uVuQm/eGzujnx+O1+fD5U50xtSm E+yx4mU9w8Ea+njR9X0sFzU= X-Google-Smtp-Source: AA0mqf4cujUOzOtuOJyYBy4/9VVtUnw0yhECctCK69sIHW613CRqgkcblvedMvM4FGfZLG55N6Gjdg== X-Received: by 2002:a17:90a:8d13:b0:213:c15:6f08 with SMTP id c19-20020a17090a8d1300b002130c156f08mr45947pjo.134.1668641943497; Wed, 16 Nov 2022 15:39:03 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.39.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:39:03 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 04/12] perf test: Replace record test workload with thloop Date: Wed, 16 Nov 2022 15:38:46 -0800 Message-Id: <20221116233854.1596378-5-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" So that it can get rid of requirements for a compiler. $ sudo ./perf test -v 92 92: perf record tests : --- start --- test child forked, pid 740204 Basic --per-thread mode test Basic --per-thread mode test [Success] Register capture test Register capture test [Success] Basic --system-wide mode test Basic --system-wide mode test [Success] Basic target workload test Basic target workload test [Success] test child finished with 0 ---- end ---- perf record tests: Ok Tested-by: James Clark Signed-off-by: Namhyung Kim --- tools/perf/tests/shell/record.sh | 59 ++------------------------------ 1 file changed, 3 insertions(+), 56 deletions(-) diff --git a/tools/perf/tests/shell/record.sh b/tools/perf/tests/shell/reco= rd.sh index e93b3a8871fe..4dff89e3a3fd 100755 --- a/tools/perf/tests/shell/record.sh +++ b/tools/perf/tests/shell/record.sh @@ -9,17 +9,13 @@ shelldir=3D$(dirname "$0") =20 err=3D0 perfdata=3D$(mktemp /tmp/__perf_test.perf.data.XXXXX) -testprog=3D$(mktemp /tmp/__perf_test.prog.XXXXXX) +testprog=3D"perf test -w thloop" testsym=3D"test_loop" =20 cleanup() { rm -rf "${perfdata}" rm -rf "${perfdata}".old =20 - if [ "${testprog}" !=3D "true" ]; then - rm -f "${testprog}" - fi - trap - EXIT TERM INT } =20 @@ -29,53 +25,6 @@ trap_cleanup() { } trap trap_cleanup EXIT TERM INT =20 -build_test_program() { - if ! [ -x "$(command -v cc)" ]; then - # No CC found. Fall back to 'true' - testprog=3Dtrue - testsym=3Dtrue - return - fi - - echo "Build a test program" - cat < -#include -#include - -void test_loop(void) { - volatile int count =3D 1000000; - - while (count--) - continue; -} - -void *thfunc(void *arg) { - int forever =3D *(int *)arg; - - do { - test_loop(); - } while (forever); - - return NULL; -} - -int main(int argc, char *argv[]) { - pthread_t th; - int forever =3D 0; - - if (argc > 1) - forever =3D atoi(argv[1]); - - pthread_create(&th, NULL, thfunc, &forever); - test_loop(); - pthread_join(th, NULL); - - return 0; -} -EOF -} - test_per_thread() { echo "Basic --per-thread mode test" if ! perf record -o /dev/null --quiet ${testprog} 2> /dev/null @@ -96,8 +45,8 @@ test_per_thread() { return fi =20 - # run the test program in background (forever) - ${testprog} 1 & + # run the test program in background (for 30 seconds) + ${testprog} 30 & TESTPID=3D$! =20 rm -f "${perfdata}" @@ -205,8 +154,6 @@ test_workload() { echo "Basic target workload test [Success]" } =20 -build_test_program - test_per_thread test_register_capture test_system_wide --=20 2.38.1.584.g0f3c55d4c2-goog From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 11AF3C433FE for ; Wed, 16 Nov 2022 23:39:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234763AbiKPXjZ (ORCPT ); Wed, 16 Nov 2022 18:39:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60712 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233862AbiKPXjH (ORCPT ); Wed, 16 Nov 2022 18:39:07 -0500 Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com [IPv6:2607:f8b0:4864:20::1031]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 60CFC68299; Wed, 16 Nov 2022 15:39:05 -0800 (PST) Received: by mail-pj1-x1031.google.com with SMTP id o7so124904pjj.1; Wed, 16 Nov 2022 15:39:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=P97FeOGLA96wHsbLefL56s9RPadISI4phF1+HGdaCPc=; b=RwHw2BwEHSGoTMuF7srFdB0iTSrzA5Co9VTFtPfLOesT5GtJEK+x1MBkPa+CtMTuvJ OwP4Js8lrEhxWpT3SZD8xoGEHrwrDyTB8ST+vgtBEqKzHk9qGGsOQm7LedjCysHf46dn BXhHddbyamCHzJoLz4TV28pufnBQGWda7k+jKuIP5Uk4VfHg9iHzONJSHg6N7bCOWAAZ h8euoDw7pWXt7hL2j8HlGCjS/u6zFlU2ipGfe37X7Cn6wcvYthXASQ3LFOaUJQfbJxTU CSZIRER9R8jqrCIWrSPPSialTSA64JgvczLcBYfh+C5AGr0ACEh1wYsgSSwNh9XKPr1O 4aRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=P97FeOGLA96wHsbLefL56s9RPadISI4phF1+HGdaCPc=; b=dA9EXCOF/ypPqEMt1Baj3bVwx0HTHWB44uorK+0d8bvXvq3rDc49czIffWwmEqDoWP 6VxFeAnwiFyaETG4SyOqU3m4s1BysySluE6Vd8zHXPBdnFdExEM4JsLA4sSZ1VvHTPpb GW6WQWlVnd1VETgjZla0ktIHXblyAr6vxYRvKJFVISERfb+4moNzybEYYIxiWKQTLUQg JFn5GRsYDHmrPsRtNqFXRX2zmCVDA/MXfgAiMx90AxaVfS9BMCO5UERlrm/r2LDdO/hm km58UutlAJXj/tq68mvfxFwiK17H8EZdtNBeAkkJEDoZ2gcCxAOcFd2rdWKf0VTXquCK 7TTw== X-Gm-Message-State: ANoB5pkhqwWaNiMULtCwRmg4LKwqcLBUdc5skjvHu77W141Jh/+jXynI nJDrTFk3wtR8VDqDSOmrtPpp9rsn3GU= X-Google-Smtp-Source: AA0mqf6JFIuDbsU0yf3mLlggr6bRiu0ln6zUBgJrjvrseY5Bt5vFt0lDGhKmzve3EXl1M6lBKbHawg== X-Received: by 2002:a17:903:25d1:b0:176:71be:cc64 with SMTP id jc17-20020a17090325d100b0017671becc64mr53625plb.141.1668641944771; Wed, 16 Nov 2022 15:39:04 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.39.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:39:04 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 05/12] perf test: Add 'leafloop' test workload Date: Wed, 16 Nov 2022 15:38:47 -0800 Message-Id: <20221116233854.1596378-6-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The leafloop workload is to run an infinite loop in the test_leaf function. This is needed for the ARM fp callgraph test to verify if it gets the correct callchains. $ perf test -w leafloop Signed-off-by: Namhyung Kim --- tools/perf/tests/builtin-test.c | 1 + tools/perf/tests/tests.h | 1 + tools/perf/tests/workloads/Build | 3 +++ tools/perf/tests/workloads/leafloop.c | 34 +++++++++++++++++++++++++++ 4 files changed, 39 insertions(+) create mode 100644 tools/perf/tests/workloads/leafloop.c diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-tes= t.c index 161f38476e77..0ed5ac452f6e 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -121,6 +121,7 @@ static struct test_suite **tests[] =3D { static struct test_workload *workloads[] =3D { &workload__noploop, &workload__thloop, + &workload__leafloop, }; =20 static int num_subtests(const struct test_suite *t) diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h index e6edfeeadaeb..86804dd6452b 100644 --- a/tools/perf/tests/tests.h +++ b/tools/perf/tests/tests.h @@ -202,5 +202,6 @@ struct test_workload workload__##work =3D { \ /* The list of test workloads */ DECLARE_WORKLOAD(noploop); DECLARE_WORKLOAD(thloop); +DECLARE_WORKLOAD(leafloop); =20 #endif /* TESTS_H */ diff --git a/tools/perf/tests/workloads/Build b/tools/perf/tests/workloads/= Build index b8964b1099c0..631596bdb2b3 100644 --- a/tools/perf/tests/workloads/Build +++ b/tools/perf/tests/workloads/Build @@ -2,3 +2,6 @@ =20 perf-y +=3D noploop.o perf-y +=3D thloop.o +perf-y +=3D leafloop.o + +CFLAGS_leafloop.o =3D -g -O0 -fno-inline -fno-omit-frame-pointer diff --git a/tools/perf/tests/workloads/leafloop.c b/tools/perf/tests/workl= oads/leafloop.c new file mode 100644 index 000000000000..1bf5cc97649b --- /dev/null +++ b/tools/perf/tests/workloads/leafloop.c @@ -0,0 +1,34 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#include +#include +#include "../tests.h" + +/* We want to check these symbols in perf script */ +noinline void leaf(volatile int b); +noinline void parent(volatile int b); + +static volatile int a; + +noinline void leaf(volatile int b) +{ + for (;;) + a +=3D b; +} + +noinline void parent(volatile int b) +{ + leaf(b); +} + +static int leafloop(int argc, const char **argv) +{ + int c =3D 1; + + if (argc > 0) + c =3D atoi(argv[0]); + + parent(c); + return 0; +} + +DEFINE_WORKLOAD(leafloop); --=20 2.38.1.584.g0f3c55d4c2-goog From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D11C5C433FE for ; Wed, 16 Nov 2022 23:39:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238631AbiKPXjf (ORCPT ); Wed, 16 Nov 2022 18:39:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60728 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234276AbiKPXjH (ORCPT ); Wed, 16 Nov 2022 18:39:07 -0500 Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D25DB65E4B; Wed, 16 Nov 2022 15:39:06 -0800 (PST) Received: by mail-pj1-x1029.google.com with SMTP id l22-20020a17090a3f1600b00212fbbcfb78so3821034pjc.3; Wed, 16 Nov 2022 15:39:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=Kl5CORbtyeq6bL62pR/J7Hye71rdg9cfUGIiUjVmACc=; b=lMoX6oWy3zqd7jliSssWvwdjFagbZKGt2pkPll3nIBB5To/tHcukd+z0XU7bbJvNh4 d+yfNHSU+LGHsQPFxKJRZBSe2NHNTAsHxNUPaOXTsu5yyRNKmoKYVGTgst2ybLU9bFHe TBU4O51yENG3q9dFooPwbmp8xf3LUTxOqfa6uu8CTHJKwXRQJsObHnU/ihmoqaowF8NP 3iMG2tXU4igHwrSS8S+h2coWlXBQF2NGl69NAaW4s3WlmRd1gakCKzeB/UGvWl05FpYY UYkj/jdIaeqIx0HJPhuK5r+VVqrG3O8K0Pujg1r6mN8unIx2uvFz1xH2MDZkwcjJ85o/ IU0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Kl5CORbtyeq6bL62pR/J7Hye71rdg9cfUGIiUjVmACc=; b=LSt48tO29jTFJZYfjqUHkQ+30qbKrlNq1kDQ92+ZGm0l6nhONFn1umQkpUwcES5yCF 3dCGzT6N6skaBZg+Y3NA1g134qL8yVTSDnNgWG0jhs3mx0F6izqGM4zdYb8Q4eIYY6fT d/5Wr9bQo51b/XnEBJaJYVTHQC0d41yttybuaZD6XkpwrUZcTlzVf9Xo+rku+NWSybs1 bPfOvAsy5OZUEOWRR5SK7ClZraNWP0Y9Pj75obu81MEdTg7D9kliJraU8YR3HLVy15Yv wL3Rsj9TpgfqwS6ac2wN50xtYjj2aSKD8CJmbiAWA4d9s9MZeSEnWaTCxINrXAYNFwtt 1aJQ== X-Gm-Message-State: ANoB5pmfxQoHvQS2qrW8OWlk6JLSCFk/wFgp2ea6ag1C8aKUvUYcW1sl l0E3dIRqnWPi7LMLb7oz7W4= X-Google-Smtp-Source: AA0mqf7tKvgf9qg1ML0mEiAtf6QPnXgYdTg6RcD64QHKhPR670BpP+MGoBnWzI059quAH8OoUWkxtQ== X-Received: by 2002:a17:90a:6c25:b0:213:d1bc:9b74 with SMTP id x34-20020a17090a6c2500b00213d1bc9b74mr5798466pjj.229.1668641946124; Wed, 16 Nov 2022 15:39:06 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.39.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:39:05 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 06/12] perf test: Replace arm callgraph fp test workload with leafloop Date: Wed, 16 Nov 2022 15:38:48 -0800 Message-Id: <20221116233854.1596378-7-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" So that it can get rid of requirement of a compiler. Reviewed-by: Leo Yan Tested-by: James Clark Signed-off-by: Namhyung Kim --- .../perf/tests/shell/test_arm_callgraph_fp.sh | 34 ++----------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/tools/perf/tests/shell/test_arm_callgraph_fp.sh b/tools/perf/t= ests/shell/test_arm_callgraph_fp.sh index ec108d45d3c6..e61d8deaa0c4 100755 --- a/tools/perf/tests/shell/test_arm_callgraph_fp.sh +++ b/tools/perf/tests/shell/test_arm_callgraph_fp.sh @@ -4,44 +4,16 @@ =20 lscpu | grep -q "aarch64" || exit 2 =20 -if ! [ -x "$(command -v cc)" ]; then - echo "failed: no compiler, install gcc" - exit 2 -fi - PERF_DATA=3D$(mktemp /tmp/__perf_test.perf.data.XXXXX) -TEST_PROGRAM_SOURCE=3D$(mktemp /tmp/test_program.XXXXX.c) -TEST_PROGRAM=3D$(mktemp /tmp/test_program.XXXXX) +TEST_PROGRAM=3D"perf test -w leafloop" =20 cleanup_files() { rm -f $PERF_DATA - rm -f $TEST_PROGRAM_SOURCE - rm -f $TEST_PROGRAM } =20 trap cleanup_files exit term int =20 -cat << EOF > $TEST_PROGRAM_SOURCE -int a =3D 0; -void leaf(void) { - for (;;) - a +=3D a; -} -void parent(void) { - leaf(); -} -int main(void) { - parent(); - return 0; -} -EOF - -echo " + Compiling test program ($TEST_PROGRAM)..." - -CFLAGS=3D"-g -O0 -fno-inline -fno-omit-frame-pointer" -cc $CFLAGS $TEST_PROGRAM_SOURCE -o $TEST_PROGRAM || exit 1 - # Add a 1 second delay to skip samples that are not in the leaf() function perf record -o $PERF_DATA --call-graph fp -e cycles//u -D 1000 --user-call= chains -- $TEST_PROGRAM 2> /dev/null & PID=3D$! @@ -58,11 +30,11 @@ wait $PID # program # 728 leaf # 753 parent -# 76c main +# 76c leafloop # ... =20 perf script -i $PERF_DATA -F comm,ip,sym | head -n4 perf script -i $PERF_DATA -F comm,ip,sym | head -n4 | \ awk '{ if ($2 !=3D "") sym[i++] =3D $2 } END { if (sym[0] !=3D "leaf" || sym[1] !=3D "parent" || - sym[2] !=3D "main") exit 1 }' + sym[2] !=3D "leafloop") exit 1 }' --=20 2.38.1.584.g0f3c55d4c2-goog From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3EA25C4332F for ; Wed, 16 Nov 2022 23:39:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236796AbiKPXj3 (ORCPT ); Wed, 16 Nov 2022 18:39:29 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234379AbiKPXjI (ORCPT ); Wed, 16 Nov 2022 18:39:08 -0500 Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A0DA45EFA; Wed, 16 Nov 2022 15:39:08 -0800 (PST) Received: by mail-pj1-x1032.google.com with SMTP id d59-20020a17090a6f4100b00213202d77e1so3852823pjk.2; Wed, 16 Nov 2022 15:39:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=TA+6dbtIStadvAuHvkrtYwI6bvKg5btHy1tHp0RwTqg=; b=HlsotV8aYsxQD2uYpIDy78RWOA0mzRu/W+zWyjxi3barQ6sK+PrklVvZwCCq//9Sqf 2QRwLW9mKrg7cPawjIgx+WjS8CBpEYZrnfkD3N6IkDmd3kmxeX63m25lEl1c+RlF354d tj/4oHywEqQtiGOj3Xmd9NQypUbG3JLFq0fxQ6918Z/FPslJN1JLMPk7x8NpYss9p4p9 pvzuO+6g8ms2JUU7fHeEKCQUOq5FuLfPr6lTYcJk1lnTZ62Kki+pTdiyC/cQZ+/Yee9G HnxgYcqxFQWzWKnUu2j0gfrwa8KL19IZ2Ihex65+MgRNDkzXMOZxmcOQnnDGNZqizgta P6zA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=TA+6dbtIStadvAuHvkrtYwI6bvKg5btHy1tHp0RwTqg=; b=x+q/tY5tWY1lfL5RxKyFamCXdiuJXzPXvNPbvYwy2BG2g8qBJPtG9b6cy/BsOwqR1d Xs0PqlOt5iXeJXZoXIJlySeGt3dV+Z/wKlaCil/roUud+0Cikr9oPJO7dpQMszUCuHet +DrKpz89bxOw6CQ4ia7BXyOJGC0R2ZCq+oanuTi6fKtRv0OgWd1zxSrDvYoHrVMY/nzp UwDfwkDkU0HnJSSv9B5wmbMC2s6TAVYs6NhJK+frSl4zYH3JORFBKg2m9pJTxRSa+rww NjROxbyFSqo5VWu+FnZiQaeNGIVayJdTpXAZAw0cleluwcsfR0FoywNrsyd/ebWHWhM6 gBsw== X-Gm-Message-State: ANoB5pmx0iUl4c8QC3uJ0N9MhL+VmrjPcyPPTI24vulzaXPBH1h3m539 gqdvWblSbtOWCqAGZvOsnd4= X-Google-Smtp-Source: AA0mqf7Vn6lesHlX0cQkbSy3rKJXFx8OOkBflWz2AiejVIHJ0I0kNsZ0M8uLlR4oAh8HllPyEBpVhQ== X-Received: by 2002:a17:90b:3c45:b0:20a:db08:8a8a with SMTP id pm5-20020a17090b3c4500b0020adb088a8amr5991480pjb.141.1668641947510; Wed, 16 Nov 2022 15:39:07 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.39.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:39:07 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 07/12] perf test: Add 'sqrtloop' test workload Date: Wed, 16 Nov 2022 15:38:49 -0800 Message-Id: <20221116233854.1596378-8-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The sqrtloop creates a child process to run an infinite loop calling sqrt() with rand(). This is needed for ARM SPE fork test. $ perf test -w sqrtloop It can take an optional argument to specify how long it will run in seconds (default: 1). Signed-off-by: Namhyung Kim --- tools/perf/tests/builtin-test.c | 1 + tools/perf/tests/tests.h | 1 + tools/perf/tests/workloads/Build | 1 + tools/perf/tests/workloads/sqrtloop.c | 45 +++++++++++++++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 tools/perf/tests/workloads/sqrtloop.c diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-tes= t.c index 0ed5ac452f6e..9acb7a93eeb9 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -122,6 +122,7 @@ static struct test_workload *workloads[] =3D { &workload__noploop, &workload__thloop, &workload__leafloop, + &workload__sqrtloop, }; =20 static int num_subtests(const struct test_suite *t) diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h index 86804dd6452b..18c40319e67c 100644 --- a/tools/perf/tests/tests.h +++ b/tools/perf/tests/tests.h @@ -203,5 +203,6 @@ struct test_workload workload__##work =3D { \ DECLARE_WORKLOAD(noploop); DECLARE_WORKLOAD(thloop); DECLARE_WORKLOAD(leafloop); +DECLARE_WORKLOAD(sqrtloop); =20 #endif /* TESTS_H */ diff --git a/tools/perf/tests/workloads/Build b/tools/perf/tests/workloads/= Build index 631596bdb2b3..1ca95cb0fdb5 100644 --- a/tools/perf/tests/workloads/Build +++ b/tools/perf/tests/workloads/Build @@ -3,5 +3,6 @@ perf-y +=3D noploop.o perf-y +=3D thloop.o perf-y +=3D leafloop.o +perf-y +=3D sqrtloop.o =20 CFLAGS_leafloop.o =3D -g -O0 -fno-inline -fno-omit-frame-pointer diff --git a/tools/perf/tests/workloads/sqrtloop.c b/tools/perf/tests/workl= oads/sqrtloop.c new file mode 100644 index 000000000000..1e44d541d737 --- /dev/null +++ b/tools/perf/tests/workloads/sqrtloop.c @@ -0,0 +1,45 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#include +#include +#include +#include +#include +#include +#include "../tests.h" + +static volatile sig_atomic_t done; + +static void sighandler(int sig __maybe_unused) +{ + done =3D 1; +} + +static int __sqrtloop(int sec) +{ + signal(SIGALRM, sighandler); + alarm(sec); + + while (!done) + sqrt(rand()); + return 0; +} + +static int sqrtloop(int argc, const char **argv) +{ + int sec =3D 1; + + if (argc > 0) + sec =3D atoi(argv[0]); + + switch (fork()) { + case 0: + return __sqrtloop(sec); + case -1: + return -1; + default: + wait(NULL); + } + return 0; +} + +DEFINE_WORKLOAD(sqrtloop); --=20 2.38.1.584.g0f3c55d4c2-goog From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BDE5AC4332F for ; Wed, 16 Nov 2022 23:39:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229536AbiKPXjo (ORCPT ); Wed, 16 Nov 2022 18:39:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60726 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234083AbiKPXjS (ORCPT ); Wed, 16 Nov 2022 18:39:18 -0500 Received: from mail-pg1-x52e.google.com (mail-pg1-x52e.google.com [IPv6:2607:f8b0:4864:20::52e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6BD5E5E9F3; Wed, 16 Nov 2022 15:39:09 -0800 (PST) Received: by mail-pg1-x52e.google.com with SMTP id n17so399578pgh.9; Wed, 16 Nov 2022 15:39:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=5B0JQCucRHYT7xdR8VvGZSXNFmNKxBu//apj1OM/otI=; b=RM9X4ZhuxQE0eTgHt6Bkzsehc3s28N9CD6mk3dzLOwMBSxOEFpVaMq2T1PaSydFzi4 uwQaIJR1oAqGr5m+NPxZKn8PdLgSZIUxDTYYEaPkv2AYdzUtnyGZ6bw7o4TSz194c3md NNJp0XaOJCghD+5VOA/a1SX/lRT/B1QrLvDNS5bg84DCfjEoMcVokjieODSY6d861ghY 6eJZJBD6fEs5ne+qj8ul9wzzrYQaC0Iob6Zpuv2Ppr8Nu+PgjsLFh04ncZPCrwa0GNLc Z3Hush6NSte7PvwFzenbk0Gr2YlyTIMI6jm1+RH9eL9K82ujF1p5RYJx7BxX2uZkvvGB dtew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=5B0JQCucRHYT7xdR8VvGZSXNFmNKxBu//apj1OM/otI=; b=p4y1T8AgjvQD7CrrBA9WLYYMLBVfuYH5bSyddgKl1eLmN8Fxk2TcOClZHpHPMFrEU8 WEJTCSiXNC56T0JcPZ0fB5RZyyjg0Pgzlivm4I4mxaHjKjsw0m2vHc4bYLtyWiafUD2z DNr2+sTMiYAchZgRBzGOUPUv6LsbEQF/4FjcV2m+uXuUl/az0hKaZb9wWCVfOj+KhWCv JH6xS4t9zQ9U41ngTfzzceHyUQP8wx2GUIZDM+fD5rrZsmlanI5taYY7L+/BqAy26bDV aRC820djhBknfBYG7jNbtmELiiQ3+0AmpmaRyhC1vE2CKkeBucSiuws1Br3yPawzATtY JUMw== X-Gm-Message-State: ANoB5pl9k9+gAKUNR2bm+DYaFx0VbuC4hDdrL86P0C/aNCrgPbmz7qr4 2y/nfaAlapkd+48g/EIiNrU= X-Google-Smtp-Source: AA0mqf4rkSX0yP0Q9MUnbXbIcS72kUIGIXcnYqKWa9WtQDB/ko8FE2i3jvZG3GFzLtf3TDTFBR1WOg== X-Received: by 2002:a63:d611:0:b0:439:3ca9:94a with SMTP id q17-20020a63d611000000b004393ca9094amr22401064pgg.107.1668641948807; Wed, 16 Nov 2022 15:39:08 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.39.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:39:08 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 08/12] perf test: Replace arm spe fork test workload with sqrtloop Date: Wed, 16 Nov 2022 15:38:50 -0800 Message-Id: <20221116233854.1596378-9-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" So that it can get rid of requirement of a compiler. I've also removed killall as it'll kill perf process now and run the test workload for 10 sec instead. Tested-by: Leo Yan Tested-by: James Clark Signed-off-by: Namhyung Kim --- tools/perf/tests/shell/test_arm_spe_fork.sh | 44 +-------------------- 1 file changed, 1 insertion(+), 43 deletions(-) diff --git a/tools/perf/tests/shell/test_arm_spe_fork.sh b/tools/perf/tests= /shell/test_arm_spe_fork.sh index c920d3583d30..da810e1b2b9e 100755 --- a/tools/perf/tests/shell/test_arm_spe_fork.sh +++ b/tools/perf/tests/shell/test_arm_spe_fork.sh @@ -11,14 +11,7 @@ skip_if_no_arm_spe_event() { =20 skip_if_no_arm_spe_event || exit 2 =20 -# skip if there's no compiler -if ! [ -x "$(command -v cc)" ]; then - echo "failed: no compiler, install gcc" - exit 2 -fi - -TEST_PROGRAM_SOURCE=3D$(mktemp /tmp/__perf_test.program.XXXXX.c) -TEST_PROGRAM=3D$(mktemp /tmp/__perf_test.program.XXXXX) +TEST_PROGRAM=3D"perf test -w sqrtloop 10" PERF_DATA=3D$(mktemp /tmp/__perf_test.perf.data.XXXXX) PERF_RECORD_LOG=3D$(mktemp /tmp/__perf_test.log.XXXXX) =20 @@ -27,43 +20,10 @@ cleanup_files() echo "Cleaning up files..." rm -f ${PERF_RECORD_LOG} rm -f ${PERF_DATA} - rm -f ${TEST_PROGRAM_SOURCE} - rm -f ${TEST_PROGRAM} } =20 trap cleanup_files exit term int =20 -# compile test program -cat << EOF > $TEST_PROGRAM_SOURCE -#include -#include -#include -#include -#include - -int workload() { - while (1) - sqrt(rand()); - return 0; -} - -int main() { - switch (fork()) { - case 0: - return workload(); - case -1: - return 1; - default: - wait(NULL); - } - return 0; -} -EOF - -echo "Compiling test program..." -CFLAGS=3D"-lm" -cc $TEST_PROGRAM_SOURCE $CFLAGS -o $TEST_PROGRAM || exit 1 - echo "Recording workload..." perf record -o ${PERF_DATA} -e arm_spe/period=3D65536/ -vvv -- $TEST_PROGR= AM > ${PERF_RECORD_LOG} 2>&1 & PERFPID=3D$! @@ -78,8 +38,6 @@ echo Log lines after 1 second =3D $log1 =20 kill $PERFPID wait $PERFPID -# test program may leave an orphan process running the workload -killall $(basename $TEST_PROGRAM) =20 if [ "$log0" =3D "$log1" ]; then --=20 2.38.1.584.g0f3c55d4c2-goog From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7C763C4332F for ; Wed, 16 Nov 2022 23:39:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231431AbiKPXjt (ORCPT ); Wed, 16 Nov 2022 18:39:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32770 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234561AbiKPXjS (ORCPT ); Wed, 16 Nov 2022 18:39:18 -0500 Received: from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com [IPv6:2607:f8b0:4864:20::102d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9039169DE4; Wed, 16 Nov 2022 15:39:10 -0800 (PST) Received: by mail-pj1-x102d.google.com with SMTP id q1-20020a17090a750100b002139ec1e999so351264pjk.1; Wed, 16 Nov 2022 15:39:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=rrmrlQ/AAcwA49LE/YDY46PPOq6RVCXtH2b5XWXmDxM=; b=kZxKAA/bYyDmZeiqQWpjQlx5Kuapaak/srJrdnnSr34iHO7OOG4s2scDN/NggUyplA WnW0G9RfXpKUdZvaBl2at/8BHTuNprGrX3GMHM41HL6kTJLgV0gz8/yQzcPVIWDHoO6j o7BdNm4EQ0WSoKttavUuVT+ooYcZR22QWckd2FnvBU0PfQA5uw4OJuh2BtgUBQNMPLlb b9ECm+UifdukICwjg9xx4/5NKnjivUO2/VdlQgsQ0SDEDaInfmAokAtkynsPLa335h+I ONiO3suG2LF60BkuT2HADwVTcPkui5dNLk9BSxesH57tW3M8HS3nS35G9dIk+dIDn0u0 Kk0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=rrmrlQ/AAcwA49LE/YDY46PPOq6RVCXtH2b5XWXmDxM=; b=U9nefKhMrqHTTgBgvW3q6dHMdQcPjI5MQOsu+lPQRr+b9WWCgxZmWQlSyToOLug339 /uxH7zTB/mP1MTuayH/s+OubvyYmNiN8pqkQvB3AebiM/SqW4DCqwT3bnCATM0SnA1eA nkUX5dG1qb82VWCwhFUeJi0atRH9/HBgRneTeuSCgNLP2kgCSkvAe/d9exqu6Vrmfczq TeGVWII02HWZ/0yJjpF0oRlDt4RGY5SPDQI1uJa9cs/UNMMinqIte5uDwGlxiHD2aOwx W/WMb6r7cDoZ2SAKy2GJAED0KpChQJMJp9uPMngO0Jx3tuygexfgk98+LcOkla0U7YhG t1Pg== X-Gm-Message-State: ANoB5pnjypEg348gOzyOeu6Kdzh8C1AKjj5jjBfP3xAf5hjZ6Wg0xboY abDkf2Djnb7zI9az02hSqCg= X-Google-Smtp-Source: AA0mqf7cjG++Khnb+FEVk8Zv13uaFJtKWpTthQ0JJmVTbmkTYJBcLdohAh3J2FwiVIgts9nSZ+orXw== X-Received: by 2002:a17:902:8306:b0:187:31da:a27e with SMTP id bd6-20020a170902830600b0018731daa27emr72012plb.111.1668641950027; Wed, 16 Nov 2022 15:39:10 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.39.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:39:09 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 09/12] perf test: Add 'brstack' test workload Date: Wed, 16 Nov 2022 15:38:51 -0800 Message-Id: <20221116233854.1596378-10-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The brstack is to run different kinds of branches repeatedly. This is necessary for brstack test case to verify if it has correct branch info. $ perf test -w brstack I renamed the internal functions to have brstack_ prefix as it's too generic name. Signed-off-by: Namhyung Kim --- tools/perf/tests/builtin-test.c | 1 + tools/perf/tests/tests.h | 1 + tools/perf/tests/workloads/Build | 2 ++ tools/perf/tests/workloads/brstack.c | 41 ++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+) create mode 100644 tools/perf/tests/workloads/brstack.c diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-tes= t.c index 9acb7a93eeb9..69fa56939309 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -123,6 +123,7 @@ static struct test_workload *workloads[] =3D { &workload__thloop, &workload__leafloop, &workload__sqrtloop, + &workload__brstack, }; =20 static int num_subtests(const struct test_suite *t) diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h index 18c40319e67c..dc96f59cac2e 100644 --- a/tools/perf/tests/tests.h +++ b/tools/perf/tests/tests.h @@ -204,5 +204,6 @@ DECLARE_WORKLOAD(noploop); DECLARE_WORKLOAD(thloop); DECLARE_WORKLOAD(leafloop); DECLARE_WORKLOAD(sqrtloop); +DECLARE_WORKLOAD(brstack); =20 #endif /* TESTS_H */ diff --git a/tools/perf/tests/workloads/Build b/tools/perf/tests/workloads/= Build index 1ca95cb0fdb5..c933cdcf91d1 100644 --- a/tools/perf/tests/workloads/Build +++ b/tools/perf/tests/workloads/Build @@ -4,5 +4,7 @@ perf-y +=3D noploop.o perf-y +=3D thloop.o perf-y +=3D leafloop.o perf-y +=3D sqrtloop.o +perf-y +=3D brstack.o =20 CFLAGS_leafloop.o =3D -g -O0 -fno-inline -fno-omit-frame-pointer +CFLAGS_brstack.o =3D -g -O0 -fno-inline diff --git a/tools/perf/tests/workloads/brstack.c b/tools/perf/tests/worklo= ads/brstack.c new file mode 100644 index 000000000000..cd0386d58f97 --- /dev/null +++ b/tools/perf/tests/workloads/brstack.c @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#include +#include "../tests.h" + + +#define BENCH_RUNS 999999 + +static volatile int cnt; + +static void brstack_bar(void) { +} /* return */ + +static void brstack_foo(void) { + brstack_bar(); /* call */ +} /* return */ + +static void brstack_bench(void) { + void (*brstack_foo_ind)(void) =3D brstack_foo; + + if ((cnt++) % 3) /* branch (cond) */ + brstack_foo(); /* call */ + brstack_bar(); /* call */ + brstack_foo_ind(); /* call (ind) */ +} + +static int brstack(int argc, const char **argv) +{ + int num_loops =3D BENCH_RUNS; + + if (argc > 0) + num_loops =3D atoi(argv[0]); + + while (1) { + if ((cnt++) > num_loops) + break; + brstack_bench();/* call */ + } /* branch (uncond) */ + return 0; +} + +DEFINE_WORKLOAD(brstack); --=20 2.38.1.584.g0f3c55d4c2-goog From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8E135C433FE for ; Wed, 16 Nov 2022 23:39:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234561AbiKPXjw (ORCPT ); Wed, 16 Nov 2022 18:39:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60718 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234616AbiKPXjS (ORCPT ); Wed, 16 Nov 2022 18:39:18 -0500 Received: from mail-pg1-x52d.google.com (mail-pg1-x52d.google.com [IPv6:2607:f8b0:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D52186A689; Wed, 16 Nov 2022 15:39:11 -0800 (PST) Received: by mail-pg1-x52d.google.com with SMTP id s196so428108pgs.3; Wed, 16 Nov 2022 15:39:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=V1CvADQIw4wqzAoDn42X+sYR3xHbApFLyuTcEFkNEC0=; b=UYmx1u/g2Ycc3G++I+M/G5bolyXat0/Z3PzM0edwmbNJwMulmzMCxcAv8vGIaJbVu1 lV9AUP79Zzmu7VTUNmdD4oqDDodVbu8J2hU5Lh+DElo16WZt7ymuRB/7W518Nd/7wmaG /WHeYlnknOH0fKAEN8os+WnxY7lXh8UH+e5GECRnw/f4+K7GPWJbGcz5vN1n2UeJdx3N m9KG8QuF0sqhhoOto6bC48VU1WLimZMm21Bj+ImfrBci/qQsFavqGEjsAzRFNGr0+bTA rzIu3ZnmbqG5rzSFlreapE2tZoGRF/z8DnNDispS6CBj2n6TCrLx5YckxdP7ugCfnawP 7v7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=V1CvADQIw4wqzAoDn42X+sYR3xHbApFLyuTcEFkNEC0=; b=N6jSpxIhmvuPifVPWT8DEjH2mjCBwuVzP9XkdT/L0zvXSIQReQ7masc+1tUK74PXD5 sCGlee/L4HML9k0srJN4oN1MBT8eu8z5uLh/E4NJbYYoK/+fXy1D0jjc601NAAfLCIVg S6MSC1Hk1FmtBRwr+H3zgR/LwFr6uCC3nmm2d216aRVXt0zRp8UaHQiw1R3Qtgmhf4/c ywXiXGheSANKWFyhlbNhNyDKXIooZRj7zfgrGK2n11n2fPeo/ZVg2VFddBseILT3JoWk Idbw85/Ter3w1j0dVgTv4J8bBQfjestFQQDchCzo2fRWNwz+9HNGYOrJYxJiqoDqwhuj q8QA== X-Gm-Message-State: ANoB5pnBgB/9rp9+K4ywa9HaWoWG8WmpnkgTrooq5k4lu3yIwMO1VGLm QS3f0ZWlIUTesOm//1f03wA= X-Google-Smtp-Source: AA0mqf4gdNVZxF7JPPYt5R3LlIQrv8mtAObFKqEbONVmEDfqbi1LH+dd4rq1gnqLcolxUqcRx0oMmQ== X-Received: by 2002:a63:5242:0:b0:46b:3c3d:f618 with SMTP id s2-20020a635242000000b0046b3c3df618mr22038542pgl.423.1668641951283; Wed, 16 Nov 2022 15:39:11 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.39.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:39:10 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 10/12] perf test: Replace brstack test workload Date: Wed, 16 Nov 2022 15:38:52 -0800 Message-Id: <20221116233854.1596378-11-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" So that it can get rid of requirement of a compiler. Also rename the symbols to match with the perf test workload. Acked-by: German Gomez Tested-by: James Clark Signed-off-by: Namhyung Kim --- tools/perf/tests/shell/test_brstack.sh | 66 +++++--------------------- 1 file changed, 12 insertions(+), 54 deletions(-) diff --git a/tools/perf/tests/shell/test_brstack.sh b/tools/perf/tests/shel= l/test_brstack.sh index d7ff5c4b4da4..5856639b565b 100755 --- a/tools/perf/tests/shell/test_brstack.sh +++ b/tools/perf/tests/shell/test_brstack.sh @@ -4,13 +4,6 @@ # SPDX-License-Identifier: GPL-2.0 # German Gomez , 2022 =20 -# we need a C compiler to build the test programs -# so bail if none is found -if ! [ -x "$(command -v cc)" ]; then - echo "failed: no compiler, install gcc" - exit 2 -fi - # skip the test if the hardware doesn't support branch stack sampling # and if the architecture doesn't support filter types: any,save_type,u if ! perf record -o- --no-buildid --branch-filter any,save_type,u -- true = > /dev/null 2>&1 ; then @@ -19,6 +12,7 @@ if ! perf record -o- --no-buildid --branch-filter any,sav= e_type,u -- true > /dev fi =20 TMPDIR=3D$(mktemp -d /tmp/__perf_test.program.XXXXX) +TESTPROG=3D"perf test -w brstack" =20 cleanup() { rm -rf $TMPDIR @@ -26,57 +20,24 @@ cleanup() { =20 trap cleanup exit term int =20 -gen_test_program() { - # generate test program - cat << EOF > $1 -#define BENCH_RUNS 999999 -int cnt; -void bar(void) { -} /* return */ -void foo(void) { - bar(); /* call */ -} /* return */ -void bench(void) { - void (*foo_ind)(void) =3D foo; - if ((cnt++) % 3) /* branch (cond) */ - foo(); /* call */ - bar(); /* call */ - foo_ind(); /* call (ind) */ -} -int main(void) -{ - int cnt =3D 0; - while (1) { - if ((cnt++) > BENCH_RUNS) - break; - bench(); /* call */ - } /* branch (uncond) */ - return 0; -} -EOF -} - test_user_branches() { echo "Testing user branch stack sampling" =20 - gen_test_program "$TEMPDIR/program.c" - cc -fno-inline -g "$TEMPDIR/program.c" -o $TMPDIR/a.out - - perf record -o $TMPDIR/perf.data --branch-filter any,save_type,u -- $TMPD= IR/a.out > /dev/null 2>&1 + perf record -o $TMPDIR/perf.data --branch-filter any,save_type,u -- ${TES= TPROG} > /dev/null 2>&1 perf script -i $TMPDIR/perf.data --fields brstacksym | xargs -n1 > $TMPDI= R/perf.script =20 # example of branch entries: - # foo+0x14/bar+0x40/P/-/-/0/CALL + # brstack_foo+0x14/brstack_bar+0x40/P/-/-/0/CALL =20 set -x - egrep -m1 "^bench\+[^ ]*/foo\+[^ ]*/IND_CALL$" $TMPDIR/perf.script - egrep -m1 "^foo\+[^ ]*/bar\+[^ ]*/CALL$" $TMPDIR/perf.script - egrep -m1 "^bench\+[^ ]*/foo\+[^ ]*/CALL$" $TMPDIR/perf.script - egrep -m1 "^bench\+[^ ]*/bar\+[^ ]*/CALL$" $TMPDIR/perf.script - egrep -m1 "^bar\+[^ ]*/foo\+[^ ]*/RET$" $TMPDIR/perf.script - egrep -m1 "^foo\+[^ ]*/bench\+[^ ]*/RET$" $TMPDIR/perf.script - egrep -m1 "^bench\+[^ ]*/bench\+[^ ]*/COND$" $TMPDIR/perf.script - egrep -m1 "^main\+[^ ]*/main\+[^ ]*/UNCOND$" $TMPDIR/perf.script + egrep -m1 "^brstack_bench\+[^ ]*/brstack_foo\+[^ ]*/IND_CALL$" $TMPDIR/pe= rf.script + egrep -m1 "^brstack_foo\+[^ ]*/brstack_bar\+[^ ]*/CALL$" $TMPDIR/perf.scr= ipt + egrep -m1 "^brstack_bench\+[^ ]*/brstack_foo\+[^ ]*/CALL$" $TMPDIR/perf.s= cript + egrep -m1 "^brstack_bench\+[^ ]*/brstack_bar\+[^ ]*/CALL$" $TMPDIR/perf.s= cript + egrep -m1 "^brstack_bar\+[^ ]*/brstack_foo\+[^ ]*/RET$" $TMPDIR/perf.scr= ipt + egrep -m1 "^brstack_foo\+[^ ]*/brstack_bench\+[^ ]*/RET$" $TMPDIR/perf.sc= ript + egrep -m1 "^brstack_bench\+[^ ]*/brstack_bench\+[^ ]*/COND$" $TMPDIR/perf= .script + egrep -m1 "^brstack\+[^ ]*/brstack\+[^ ]*/UNCOND$" $TMPDIR/perf.script set +x =20 # some branch types are still not being tested: @@ -91,10 +52,7 @@ test_filter() { =20 echo "Testing branch stack filtering permutation ($filter,$expect)" =20 - gen_test_program "$TEMPDIR/program.c" - cc -fno-inline -g "$TEMPDIR/program.c" -o $TMPDIR/a.out - - perf record -o $TMPDIR/perf.data --branch-filter $filter,save_type,u -- $= TMPDIR/a.out > /dev/null 2>&1 + perf record -o $TMPDIR/perf.data --branch-filter $filter,save_type,u -- $= {TESTPROG} > /dev/null 2>&1 perf script -i $TMPDIR/perf.data --fields brstack | xargs -n1 > $TMPDIR/p= erf.script =20 # fail if we find any branch type that doesn't match any of the expected = ones --=20 2.38.1.584.g0f3c55d4c2-goog From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8E2E5C43217 for ; Wed, 16 Nov 2022 23:39:59 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238902AbiKPXj6 (ORCPT ); Wed, 16 Nov 2022 18:39:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234650AbiKPXjS (ORCPT ); Wed, 16 Nov 2022 18:39:18 -0500 Received: from mail-pj1-x1030.google.com (mail-pj1-x1030.google.com [IPv6:2607:f8b0:4864:20::1030]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2E5BA6A763; Wed, 16 Nov 2022 15:39:13 -0800 (PST) Received: by mail-pj1-x1030.google.com with SMTP id u8-20020a17090a5e4800b002106dcdd4a0so3865252pji.1; Wed, 16 Nov 2022 15:39:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=gJqneQ9QTXZ2Nr4v/IOHJnQH13z85d8cJMd1dVW/GqE=; b=WxKKwD9AP6JGdF8rPdym+94KFDGwSvA94zdVTpP+ka2zrbKN9gWpbo85Qu5kRRj2NK 8n+XifsJRDR+qhtLj4mtLEvSBldPeVCWTA6YBVpy3Xl6kp2U5E6NDEoCG5miB4sfHVL/ rAUBWLha9hBy1yw3qD2QIy5nArSHWW1BcRwniGjebCpvnDVc56vFjmTFBF5Tm8NIxxHi SJUM28Y15G8CsbP0DdfxJ6FJ9L0piqHPDz2Q29+Zib9m1B/VZxqKRborhxpJWV0a8xUz i+enn1tFDgSXcO9whAVyT9Yal9vQWakSCVATDf9zwyLaiFQUxeWf6dBNadPAMxMZwMci TJrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=gJqneQ9QTXZ2Nr4v/IOHJnQH13z85d8cJMd1dVW/GqE=; b=ej5OJrspps2UddjZ4dzb1ZZHpwrYKB6NWR26Zdk5wEBSPV6sL3bkGjEzApoqe2ndQZ Kr/Os2uT5Fg132gF9nf+5X5HK3lQdbZ2Yxnh8+bo1UiISY7RynhQVE5uMlL19RgKXx15 zI1wTdk6vhqy3RdLL0/i866NrSqPnmpiNVsV41Q2hlYq3MZXLkoJsOgUS6Am4SqOOxDE e5str05iddQqLugYlARlaABsqK5ABrMBBYyTdjnpVG9flj2e6v5XYWnP40r0OhrG3Emx ZcnkZwATLdEwXsdrBHQHWQ7EW1+pEjOAvoSMyt/mLDAVqLpiV5XS4cMXQmax9nNuuUDC o76A== X-Gm-Message-State: ANoB5pn1QdTdOHLn5VUNrCm4059TdfOwVWl059JVBFz2p0u46I38ZLJL fZcWT4fVbnSJSml0dgdbLfo= X-Google-Smtp-Source: AA0mqf4SOX/goEZRzrZVVjtvlc+p3IGeu2AWbbXN2mfT/ULBYKhWFp4sMWjWN5pZw48RMrJxlgRIBA== X-Received: by 2002:a17:902:820b:b0:186:b3cb:3b85 with SMTP id x11-20020a170902820b00b00186b3cb3b85mr105421pln.96.1668641952542; Wed, 16 Nov 2022 15:39:12 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.39.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:39:12 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 11/12] perf test: Add 'datasym' test workload Date: Wed, 16 Nov 2022 15:38:53 -0800 Message-Id: <20221116233854.1596378-12-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The datasym workload is to check if perf mem command gets the data addresses precisely. This is needed for data symbol test. $ perf test -w datasym I had to keep the buf1 in the data section, otherwise it could end up in the BSS and was mmaped as a separate //anon region, then it was not symbolized at all. It needs to be fixed separately. Signed-off-by: Namhyung Kim --- tools/perf/tests/builtin-test.c | 1 + tools/perf/tests/tests.h | 1 + tools/perf/tests/workloads/Build | 2 ++ tools/perf/tests/workloads/datasym.c | 24 ++++++++++++++++++++++++ 4 files changed, 28 insertions(+) create mode 100644 tools/perf/tests/workloads/datasym.c diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-tes= t.c index 69fa56939309..4c6ae59a4dfd 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -124,6 +124,7 @@ static struct test_workload *workloads[] =3D { &workload__leafloop, &workload__sqrtloop, &workload__brstack, + &workload__datasym, }; =20 static int num_subtests(const struct test_suite *t) diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h index dc96f59cac2e..e15f24cfc909 100644 --- a/tools/perf/tests/tests.h +++ b/tools/perf/tests/tests.h @@ -205,5 +205,6 @@ DECLARE_WORKLOAD(thloop); DECLARE_WORKLOAD(leafloop); DECLARE_WORKLOAD(sqrtloop); DECLARE_WORKLOAD(brstack); +DECLARE_WORKLOAD(datasym); =20 #endif /* TESTS_H */ diff --git a/tools/perf/tests/workloads/Build b/tools/perf/tests/workloads/= Build index c933cdcf91d1..ec3cb10c52ae 100644 --- a/tools/perf/tests/workloads/Build +++ b/tools/perf/tests/workloads/Build @@ -5,6 +5,8 @@ perf-y +=3D thloop.o perf-y +=3D leafloop.o perf-y +=3D sqrtloop.o perf-y +=3D brstack.o +perf-y +=3D datasym.o =20 CFLAGS_leafloop.o =3D -g -O0 -fno-inline -fno-omit-frame-pointer CFLAGS_brstack.o =3D -g -O0 -fno-inline +CFLAGS_datasym.o =3D -g -O0 -fno-inline diff --git a/tools/perf/tests/workloads/datasym.c b/tools/perf/tests/worklo= ads/datasym.c new file mode 100644 index 000000000000..ddd40bc63448 --- /dev/null +++ b/tools/perf/tests/workloads/datasym.c @@ -0,0 +1,24 @@ +#include +#include "../tests.h" + +typedef struct _buf { + char data1; + char reserved[55]; + char data2; +} buf __attribute__((aligned(64))); + +static buf buf1 =3D { + /* to have this in the data section */ + .reserved[0] =3D 1, +}; + +static int datasym(int argc __maybe_unused, const char **argv __maybe_unus= ed) +{ + for (;;) { + buf1.data1++; + buf1.data2 +=3D buf1.data1; + } + return 0; +} + +DEFINE_WORKLOAD(datasym); --=20 2.38.1.584.g0f3c55d4c2-goog From nobody Mon Apr 13 21:41:04 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id EFBE4C433FE for ; Wed, 16 Nov 2022 23:40:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238923AbiKPXkB (ORCPT ); Wed, 16 Nov 2022 18:40:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233893AbiKPXjV (ORCPT ); Wed, 16 Nov 2022 18:39:21 -0500 Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7582E6AEDE; Wed, 16 Nov 2022 15:39:14 -0800 (PST) Received: by mail-pj1-x1033.google.com with SMTP id h14so105517pjv.4; Wed, 16 Nov 2022 15:39:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=y+MBjHLXrFB++GMwQ9Qm9dxDqVPjyqYA8sAvvb3VHA8=; b=KO5GR2cRgLhvf8OFPJYQf72Kn7B46DuZgskYrT1iCiFw/RVDAkik+Px1eM3W040SeT 0OfNnY+zr1G/FyTiOSN01zXMupTNaKoPplxN4tgDx1xaA3U9rI1pPSaa/+sFH10UOinu bsIjh7005H0PgciKL7SId0FARe/GYKuhLB+l8rJ3Llys8WwVk610mxKoFCHzQXEwqk8B xJwSliW7wOR8DpsylRCRDJtHSCkVD6tBtgDLX5cHLTta/UDAXhNTMgOmXx8l+u29fqLL CsQmmis9KgUrMiqC8joDavEzRljKyUkoMnFD8W6J8GmxSAIyuAR9A63m43RskhPoXZ8N 3zzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=y+MBjHLXrFB++GMwQ9Qm9dxDqVPjyqYA8sAvvb3VHA8=; b=jIaavhVKVL1GPVLhBUI8x8vPVOblAjYSEAh2JV3NU44mmgY1kKBiXXZVt1IuJx3BFS +UTNNsTw2uDWzv41apQjjf1eiAB5x9xTLUc0dlTIkWXq2PaR7/cnoF06S2eU72GqJN23 gRo6DcBpAvxU2yY+K65jO1M0a5acNA8XdrOFC9TlMihl8cajWZ2OetPchOPwBxvvIXSe Rq0FYvKgqB1JJWay73Wfa6/o9d4hEw7lXdx8WiQafiFCgiXei7Bqvx1+b77A61zhSbXD NbgsxXBBa2d/dTS8CQA7wbfSgw1bIAzopTsq/J0XGNgiVmxgR8DBjlXL0jWHbXStbZ37 4Hlg== X-Gm-Message-State: ANoB5pkB4mL8BRmbpwkqye3VM6Xctx2Kb35BCxwS6E0sU/iPYBCyQwqY czBAEX0l7uxb75iVvVzHm5Q= X-Google-Smtp-Source: AA0mqf7CdIlZA5rGskaYKWMRpNCkWk0iFgQEXkA/pjeoi0PBKOmZ+dW4lpWAN9n0AM3KCkZUDz4mbg== X-Received: by 2002:a17:902:f383:b0:188:4f86:e4d5 with SMTP id f3-20020a170902f38300b001884f86e4d5mr247842ple.16.1668641953822; Wed, 16 Nov 2022 15:39:13 -0800 (PST) Received: from youngsil.svl.corp.google.com ([2620:15c:2d4:203:5b40:ce8c:1f7c:9acc]) by smtp.gmail.com with ESMTPSA id bc10-20020a170902930a00b00188ef3ea2b6sm95929plb.262.2022.11.16.15.39.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Nov 2022 15:39:13 -0800 (PST) Sender: Namhyung Kim From: Namhyung Kim To: Arnaldo Carvalho de Melo , Jiri Olsa Cc: Ingo Molnar , Peter Zijlstra , LKML , Ian Rogers , Adrian Hunter , linux-perf-users@vger.kernel.org, Leo Yan , German Gomez , Zhengjun Xing , James Clark , Athira Jajeev Subject: [PATCH 12/12] perf test: Replace data symbol test workload with datasym Date: Wed, 16 Nov 2022 15:38:54 -0800 Message-Id: <20221116233854.1596378-13-namhyung@kernel.org> X-Mailer: git-send-email 2.38.1.584.g0f3c55d4c2-goog In-Reply-To: <20221116233854.1596378-1-namhyung@kernel.org> References: <20221116233854.1596378-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" 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.GFe= ZO (4847 samples) ] Cleaning up files... test child finished with 0 ---- end ---- Test data symbol: Ok Cc: Leo Yan Tested-by: James Clark Signed-off-by: Namhyung Kim --- tools/perf/tests/shell/test_data_symbol.sh | 29 +--------------------- 1 file changed, 1 insertion(+), 28 deletions(-) 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() { =20 skip_if_no_mem_event || exit 2 =20 -# skip if there's no compiler -if ! [ -x "$(command -v cc)" ]; then - echo "skip: no compiler, install gcc" - exit 2 -fi - -TEST_PROGRAM=3D$(mktemp /tmp/__perf_test.program.XXXXX) +TEST_PROGRAM=3D"perf test -w datasym" PERF_DATA=3D$(mktemp /tmp/__perf_test.perf.data.XXXXX) =20 check_result() { @@ -45,31 +39,10 @@ cleanup_files() { echo "Cleaning up files..." rm -f ${PERF_DATA} - rm -f ${TEST_PROGRAM} } =20 trap cleanup_files exit term int =20 -# 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 +=3D buf1.data1; - } - return 0; -} -EOF - echo "Recording workload..." =20 # perf mem/c2c internally uses IBS PMU on AMD CPU which doesn't support --=20 2.38.1.584.g0f3c55d4c2-goog