cyclic_bench.py: Add --workers_per_cpu argument back

Since CL:5400883, cyclic_bench.py uses --workers instead of
--workers_per_cpu. However, some tests in vm.AudioCyclicBench still use
--workers_per_cpu and that cause these tests to fail.

Add --workers_per_cpu back as a mutually exclusive argument with
--workers.

BUG=b:330858329
TEST=tast run $DUT vm.AudioCyclicBench.\
nice_p0_1thread_10ms_stress_nice_p0_2workers_per_cpu

Change-Id: If98c1b452b14c00dd8bc2f4b9b47e3f65ca591f5
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/audiotest/+/5443832
Reviewed-by: Baili Deng <bailideng@google.com>
Tested-by: Pattara Teerapong <pteerapong@chromium.org>
Commit-Queue: Pattara Teerapong <pteerapong@chromium.org>
diff --git a/script/cyclic_bench.py b/script/cyclic_bench.py
index b7c1f88..afa90c0 100755
--- a/script/cyclic_bench.py
+++ b/script/cyclic_bench.py
@@ -586,12 +586,22 @@
             "priority will be taken as nice value."
         ),
     )
-    parser.add_argument(
+
+    # Parse either --workers or --workers_per_cpu for the number of stress
+    # workers.
+    group = parser.add_mutually_exclusive_group()
+    group.add_argument(
         "--workers",
         type=int,
         default=DEFAULT_STRESS_WORKERS,
         help="Number of workers for the stress",
     )
+    group.add_argument(
+        "--workers_per_cpu",
+        type=int,
+        help="Number of workers per CPU for the stress",
+    )
+
     parser.add_argument(
         "-o",
         "--output_file",
@@ -628,6 +638,11 @@
 
     args = parser.parse_args()
 
+    # If workers_per_cpu is set, calculate and store the number of workers in
+    # args.workers
+    if args.workers_per_cpu is not None:
+        args.workers = args.workers_per_cpu * get_number_of_cpu()
+
     cyclic_test_config = get_cyclictest_config(args)
     stress_config = get_stress_config(args)