From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ian Rogers <irogers@google.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Namhyung Kim <namhyung@kernel.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] perf test workload: Add thread count argument to thloop
Date: Tue, 28 Oct 2025 16:13:28 -0300 [thread overview]
Message-ID: <aQEV2ABm7JaGH3UO@x1> (raw)
In-Reply-To: <20251028153821.4003666-1-irogers@google.com>
On Tue, Oct 28, 2025 at 08:38:20AM -0700, Ian Rogers wrote:
> Allow the number of threads for the thloop workload to be increased
> beyond the normal 2. Add error checking to the parsed time and thread
> count values.
>
> Signed-off-by: Ian Rogers <irogers@google.com>
> ---
> v2: Perform the pthread_join unconditionally and ensure started
> threads terminate.
> ---
> tools/perf/tests/workloads/thloop.c | 45 ++++++++++++++++++++++++-----
> 1 file changed, 38 insertions(+), 7 deletions(-)
>
> diff --git a/tools/perf/tests/workloads/thloop.c b/tools/perf/tests/workloads/thloop.c
> index 457b29f91c3e..bd8168f883fb 100644
> --- a/tools/perf/tests/workloads/thloop.c
> +++ b/tools/perf/tests/workloads/thloop.c
> @@ -31,21 +31,52 @@ static void *thfunc(void *arg)
>
> static int thloop(int argc, const char **argv)
> {
> - int sec = 1;
> - pthread_t th;
> + int nt = 2, sec = 1, err = 1;
> + pthread_t *thread_list = NULL;
>
> if (argc > 0)
> sec = atoi(argv[0]);
>
> + if (sec <= 0) {
> + fprintf(stderr, "Error: seconds (%d) must be >= 1\n", sec);
> + return 1;
> + }
> +
> + if (argc > 1)
> + nt = atoi(argv[1]);
> +
> + if (nt <= 0) {
> + fprintf(stderr, "Error: thread count (%d) must be >= 1\n", nt);
> + return 1;
> + }
> +
> signal(SIGINT, sighandler);
> signal(SIGALRM, sighandler);
> - alarm(sec);
>
> - pthread_create(&th, NULL, thfunc, test_loop);
> - test_loop();
> - pthread_join(th, NULL);
> + thread_list = calloc(nt, sizeof(pthread_t));
> + if (thread_list == NULL) {
> + fprintf(stderr, "Error: malloc failed for %d threads\n", nt);
> + goto out;
> + }
> + for (int i = 1; i < nt; i++) {
Why do you start at 1? What goes in thread[0]? calloc() leaves it at
NULL, then if you have two threads you'll allocate thread[1], i gets
incremented, 2 < 2 fails, you get just one thread created, when two were
asked?
Oh, I see, you use the main thread to run, that test_loop() just before
the err = 0, its just that you allocate thread[0] for nothing, that
confused me.
- Arnaldo
> + int ret = pthread_create(&thread_list[i], NULL, thfunc, test_loop);
>
> - return 0;
> + if (ret) {
> + fprintf(stderr, "Error: failed to create thread %d\n", i);
> + done = 1; // Ensure started threads terminate.
> + goto out;
> + }
> + }
> + alarm(sec);
> + test_loop();
> + err = 0;
> +out:
> + for (int i = 1; i < nt; i++) {
> + if (thread_list && thread_list[i])
> + pthread_join(thread_list[i], /*retval=*/NULL);
> + }
> + free(thread_list);
> + return err;
> }
>
> DEFINE_WORKLOAD(thloop);
> --
> 2.51.1.851.g4ebd6896fd-goog
next prev parent reply other threads:[~2025-10-28 19:13 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-28 15:38 [PATCH v2] perf test workload: Add thread count argument to thloop Ian Rogers
2025-10-28 19:13 ` Arnaldo Carvalho de Melo [this message]
2025-10-28 19:55 ` Ian Rogers
2025-10-28 20:37 ` Arnaldo Carvalho de Melo
2025-10-30 3:46 ` Namhyung Kim
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aQEV2ABm7JaGH3UO@x1 \
--to=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.