summaryrefslogtreecommitdiffstats
path: root/scripts/coccicheck
diff options
context:
space:
mode:
authorSumera Priyadarsini <sylphrenadin@gmail.com>2020-09-24 13:26:08 +0200
committerJulia Lawall <Julia.Lawall@lip6.fr>2020-09-27 22:52:59 +0200
commite16a7c47d56b4eeee82be662014c145bce2380e5 (patch)
tree077cc05ddd25817bfac84605d80de56f9a18adfa /scripts/coccicheck
parentcoccinelle: misc: add excluded_middle.cocci script (diff)
downloadlinux-e16a7c47d56b4eeee82be662014c145bce2380e5.tar.xz
linux-e16a7c47d56b4eeee82be662014c145bce2380e5.zip
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/coccicheck')
-rwxr-xr-xscripts/coccicheck5
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