mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 06:02:05 +00:00
perf bench futex: Sanitize numeric parameters
This gets rid of oddities such as:
perf bench futex hash -t -4
perf: calloc: Cannot allocate memory
Runtime (and many more) are equally busted, i.e. run for bogus amounts of
time. Just use the abs, instead of, for example errorring out.
Committer note:
After the patch:
$ perf bench futex hash -t -4
# Running 'futex/hash' benchmark:
Run summary [PID 10178]: 4 threads, each operating on 1024 [private] futexes for 10 secs.
[thread 0] futexes: 0x34f9fa0 ... 0x34faf9c [ 4702208
ops/sec ]
[thread 1] futexes: 0x34fb140 ... 0x34fc13c [ 4707020 ops/sec ]
[thread 2] futexes: 0x34fc2e0 ... 0x34fd2dc [ 4711526 ops/sec ]
[thread 3] futexes: 0x34fd480 ... 0x34fe47c [ 4709683 ops/sec ]
Averaged 4707609 operations/sec (+- 0.04%), total secs = 10
$
Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Link: http://lkml.kernel.org/r/1477342613-9938-3-git-send-email-dave@stgolabs.net
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
e2e1680fda
commit
60758d6668
@ -130,6 +130,8 @@ int bench_futex_hash(int argc, const char **argv,
|
||||
}
|
||||
|
||||
ncpus = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
nsecs = futexbench_sanitize_numeric(nsecs);
|
||||
nfutexes = futexbench_sanitize_numeric(nfutexes);
|
||||
|
||||
sigfillset(&act.sa_mask);
|
||||
act.sa_sigaction = toggle_done;
|
||||
@ -137,6 +139,8 @@ int bench_futex_hash(int argc, const char **argv,
|
||||
|
||||
if (!nthreads) /* default to the number of CPUs */
|
||||
nthreads = ncpus;
|
||||
else
|
||||
nthreads = futexbench_sanitize_numeric(nthreads);
|
||||
|
||||
worker = calloc(nthreads, sizeof(*worker));
|
||||
if (!worker)
|
||||
|
@ -152,6 +152,7 @@ int bench_futex_lock_pi(int argc, const char **argv,
|
||||
goto err;
|
||||
|
||||
ncpus = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
nsecs = futexbench_sanitize_numeric(nsecs);
|
||||
|
||||
sigfillset(&act.sa_mask);
|
||||
act.sa_sigaction = toggle_done;
|
||||
@ -159,6 +160,8 @@ int bench_futex_lock_pi(int argc, const char **argv,
|
||||
|
||||
if (!nthreads)
|
||||
nthreads = ncpus;
|
||||
else
|
||||
nthreads = futexbench_sanitize_numeric(nthreads);
|
||||
|
||||
worker = calloc(nthreads, sizeof(*worker));
|
||||
if (!worker)
|
||||
|
@ -128,6 +128,8 @@ int bench_futex_requeue(int argc, const char **argv,
|
||||
|
||||
if (!nthreads)
|
||||
nthreads = ncpus;
|
||||
else
|
||||
nthreads = futexbench_sanitize_numeric(nthreads);
|
||||
|
||||
worker = calloc(nthreads, sizeof(*worker));
|
||||
if (!worker)
|
||||
|
@ -217,8 +217,12 @@ int bench_futex_wake_parallel(int argc, const char **argv,
|
||||
sigaction(SIGINT, &act, NULL);
|
||||
|
||||
ncpus = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
nwaking_threads = futexbench_sanitize_numeric(nwaking_threads);
|
||||
|
||||
if (!nblocked_threads)
|
||||
nblocked_threads = ncpus;
|
||||
else
|
||||
nblocked_threads = futexbench_sanitize_numeric(nblocked_threads);
|
||||
|
||||
/* some sanity checks */
|
||||
if (nwaking_threads > nblocked_threads || !nwaking_threads)
|
||||
|
@ -129,6 +129,7 @@ int bench_futex_wake(int argc, const char **argv,
|
||||
}
|
||||
|
||||
ncpus = sysconf(_SC_NPROCESSORS_ONLN);
|
||||
nwakes = futexbench_sanitize_numeric(nwakes);
|
||||
|
||||
sigfillset(&act.sa_mask);
|
||||
act.sa_sigaction = toggle_done;
|
||||
@ -136,6 +137,8 @@ int bench_futex_wake(int argc, const char **argv,
|
||||
|
||||
if (!nthreads)
|
||||
nthreads = ncpus;
|
||||
else
|
||||
nthreads = futexbench_sanitize_numeric(nthreads);
|
||||
|
||||
worker = calloc(nthreads, sizeof(*worker));
|
||||
if (!worker)
|
||||
|
@ -7,6 +7,7 @@
|
||||
#ifndef _FUTEX_H
|
||||
#define _FUTEX_H
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/syscall.h>
|
||||
#include <sys/types.h>
|
||||
@ -99,4 +100,7 @@ static inline int pthread_attr_setaffinity_np(pthread_attr_t *attr,
|
||||
}
|
||||
#endif
|
||||
|
||||
/* User input sanitation */
|
||||
#define futexbench_sanitize_numeric(__n) abs((__n))
|
||||
|
||||
#endif /* _FUTEX_H */
|
||||
|
Loading…
Reference in New Issue
Block a user