]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
perf test: Reintroduce -p/--parallel and make -S/--sequential the default
authorArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 26 Apr 2024 20:26:26 +0000 (17:26 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Sat, 27 Apr 2024 01:28:08 +0000 (22:28 -0300)
We can't default to doing parallel tests as there are tests that compete
for the same resources and thus clash, for instance tests that put in
place 'perf probe' probes, that clean the probes without regard to other
tests needs, ARM64 coresight tests, Intel PT ones, etc.

So reintroduce --p/--parallel and make -S/--sequential the default.

We need to come up with infrastructure that state which tests can't run
in parallel because they need exclusive access to some resource,
something as simple as "probes" that would then avoid 'perf probe' tests
from running while other such test is running, or make the tests more
resilient, till then we can't use parallel mode as default.

While at it, document all these options in the 'perf test' man page.

Reported-by: Adrian Hunter <adrian.hunter@intel.com>
Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Reported-by: James Clark <james.clark@arm.com>
Reviewed-by: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/lkml/Ziwm18BqIn_vc1vn@x1
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/Documentation/perf-test.txt
tools/perf/tests/builtin-test.c

index 951a2f2628727a95f5f6d8b74a1eff215358f74d..9acb8d1f658890e9af9999f3fd93e20466c04cd6 100644 (file)
@@ -31,9 +31,20 @@ OPTIONS
 --verbose::
        Be more verbose.
 
+-S::
+--sequential::
+       Run tests one after the other, this is the default mode.
+
+-p:: 
+--parallel::
+       Run tests in parallel, speeds up the whole process but is not safe with
+       the current infrastructure, where some tests that compete for some resources,
+       for instance, 'perf probe' tests that add/remove probes or clean all probes, etc.
+
 -F::
 --dont-fork::
-       Do not fork child for each test, run all tests within single process.
+       Do not fork child for each test, run all tests within single process, this
+       sets sequential mode.
 
 --dso::
        Specify a DSO for the "Symbols" test.
index 73f53b02f7334692bc3739e6facd790906dfc44b..c3d84b67ca8e775d96924b6fa2dc16499fbd2af8 100644 (file)
  */
 static bool dont_fork;
 /* Don't fork the tests in parallel and wait for their completion. */
-static bool sequential;
+static bool sequential = true;
+/* Do it in parallel, lacks infrastructure to avoid running tests that clash for resources,
+ * So leave it as the developers choice to enable while working on the needed infra */
+static bool parallel;
 const char *dso_to_test;
 const char *test_objdump_path = "objdump";
 
@@ -536,6 +539,7 @@ int cmd_test(int argc, const char **argv)
                    "be more verbose (show symbol address, etc)"),
        OPT_BOOLEAN('F', "dont-fork", &dont_fork,
                    "Do not fork for testcase"),
+       OPT_BOOLEAN('p', "parallel", &parallel, "Run the tests in parallel"),
        OPT_BOOLEAN('S', "sequential", &sequential,
                    "Run the tests one after another rather than in parallel"),
        OPT_STRING('w', "workload", &workload, "work", "workload to run for testing"),
@@ -566,6 +570,8 @@ int cmd_test(int argc, const char **argv)
 
        if (dont_fork)
                sequential = true;
+       else if (parallel)
+               sequential = false;
 
        symbol_conf.priv_size = sizeof(int);
        symbol_conf.try_vmlinux_path = true;