diff options
author | Sumera Priyadarsini <sylphrenadin@gmail.com> | 2020-09-24 16:56:08 +0530 |
---|---|---|
committer | Julia Lawall <Julia.Lawall@lip6.fr> | 2020-09-27 22:52:59 +0200 |
commit | e16a7c47d56b4eeee82be662014c145bce2380e5 (patch) | |
tree | 077cc05ddd25817bfac84605d80de56f9a18adfa /scripts | |
parent | b76f0ea013125358d1b4ca147a6f9b6883dd2493 (diff) | |
download | linux-e16a7c47d56b4eeee82be662014c145bce2380e5.tar.bz2 |
scripts: coccicheck: Change default value for parallelism
By default, coccicheck utilizes all available threads to implement
parallelisation. However, when all available threads are used,
a decrease in performance is noted. The elapsed time is minimum
when at most one thread per core is used.
For example, on benchmarking the semantic patch kfree.cocci for
usb/serial using hyperfine, the outputs obtained for J=5 and J=2
are 1.32 and 1.90 times faster than those for J=10 and J=9
respectively for two separate runs. For the larger drivers/staging
directory, minimium elapsed time is obtained for J=3 which is 1.86
times faster than that for J=12. The optimal J value does not
exceed 6 in any of the test runs. The benchmarks are run on a machine
with 6 cores, with 2 threads per core, i.e, 12 hyperthreads in all.
To improve performance, modify coccicheck to use at most only
one thread per core by default.
Signed-off-by: Sumera Priyadarsini <sylphrenadin@gmail.com>
Signed-off-by: Julia Lawall <Julia.Lawall@inria.fr>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/coccicheck | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/scripts/coccicheck b/scripts/coccicheck index 85136f4fe970..6789751607f5 100755 --- a/scripts/coccicheck +++ b/scripts/coccicheck @@ -75,8 +75,13 @@ else OPTIONS="--dir $KBUILD_EXTMOD $COCCIINCLUDE" fi + # Use only one thread per core by default if hyperthreading is enabled + THREADS_PER_CORE=$(lscpu | grep "Thread(s) per core: " | tr -cd [:digit:]) if [ -z "$J" ]; then NPROC=$(getconf _NPROCESSORS_ONLN) + if [ $THREADS_PER_CORE -gt 1 -a $NPROC -gt 2 ] ; then + NPROC=$((NPROC/2)) + fi else NPROC="$J" fi |