| From d21dd93e189cfb005f9f8eeeba31809cb8f1dfb7 Mon Sep 17 00:00:00 2001 |
| From: Tommi Rantala <tommi.t.rantala@nokia.com> |
| Date: Thu, 5 Mar 2020 10:37:13 +0200 |
| Subject: [PATCH] perf bench futex-wake: Restore thread count default to online |
| CPU count |
| |
| commit f649bd9dd5d5004543bbc3c50b829577b49f5d75 upstream. |
| |
| Since commit 3b2323c2c1c4 ("perf bench futex: Use cpumaps") the default |
| number of threads the benchmark uses got changed from number of online |
| CPUs to zero: |
| |
| $ perf bench futex wake |
| # Running 'futex/wake' benchmark: |
| Run summary [PID 15930]: blocking on 0 threads (at [private] futex 0x558b8ee4bfac), waking up 1 at a time. |
| [Run 1]: Wokeup 0 of 0 threads in 0.0000 ms |
| [...] |
| [Run 10]: Wokeup 0 of 0 threads in 0.0000 ms |
| Wokeup 0 of 0 threads in 0.0004 ms (+-40.82%) |
| |
| Restore the old behavior by grabbing the number of online CPUs via |
| cpu->nr: |
| |
| $ perf bench futex wake |
| # Running 'futex/wake' benchmark: |
| Run summary [PID 18356]: blocking on 8 threads (at [private] futex 0xb3e62c), waking up 1 at a time. |
| [Run 1]: Wokeup 8 of 8 threads in 0.0260 ms |
| [...] |
| [Run 10]: Wokeup 8 of 8 threads in 0.0270 ms |
| Wokeup 8 of 8 threads in 0.0419 ms (+-24.35%) |
| |
| Fixes: 3b2323c2c1c4 ("perf bench futex: Use cpumaps") |
| Signed-off-by: Tommi Rantala <tommi.t.rantala@nokia.com> |
| Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> |
| Cc: Darren Hart <dvhart@infradead.org> |
| Cc: Davidlohr Bueso <dave@stgolabs.net> |
| Cc: Jiri Olsa <jolsa@redhat.com> |
| Cc: Mark Rutland <mark.rutland@arm.com> |
| Cc: Namhyung Kim <namhyung@kernel.org> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Thomas Gleixner <tglx@linutronix.de> |
| Link: http://lore.kernel.org/lkml/20200305083714.9381-3-tommi.t.rantala@nokia.com |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/tools/perf/bench/futex-wake.c b/tools/perf/bench/futex-wake.c |
| index e8181ad7d088..e62006342b18 100644 |
| --- a/tools/perf/bench/futex-wake.c |
| +++ b/tools/perf/bench/futex-wake.c |
| @@ -42,7 +42,7 @@ static bool done = false, silent = false, fshared = false; |
| static pthread_mutex_t thread_lock; |
| static pthread_cond_t thread_parent, thread_worker; |
| static struct stats waketime_stats, wakeup_stats; |
| -static unsigned int ncpus, threads_starting, nthreads = 0; |
| +static unsigned int threads_starting, nthreads = 0; |
| static int futex_flag = 0; |
| |
| static const struct option options[] = { |
| @@ -140,7 +140,7 @@ int bench_futex_wake(int argc, const char **argv) |
| sigaction(SIGINT, &act, NULL); |
| |
| if (!nthreads) |
| - nthreads = ncpus; |
| + nthreads = cpu->nr; |
| |
| worker = calloc(nthreads, sizeof(*worker)); |
| if (!worker) |
| -- |
| 2.7.4 |
| |