From: "Luis R. Rodriguez" <mcgrof@kernel.org>
To: Julia.Lawall@lip6.fr, Gilles.Muller@lip6.fr,
nicolas.palix@imag.fr, mmarek@suse.com
Cc: linux-kernel@vger.kernel.org, cocci@systeme.lip6.fr,
"Luis R. Rodriguez" <mcgrof@kernel.org>
Subject: [PATCH 4/4] coccicheck: add indexing enhancement options
Date: Fri, 10 Jun 2016 13:42:12 -0700 [thread overview]
Message-ID: <1465591332-31113-5-git-send-email-mcgrof@kernel.org> (raw)
In-Reply-To: <1465591332-31113-1-git-send-email-mcgrof@kernel.org>
Enable indexing optimizations heuristics. Coccinelle has
support to make use of its own enhanced "grep" mechanisms
instead of using regular grep for searching code 'coccigrep',
in practice though this seems to not perform better than
regular grep however its expected to help with some use cases
so we use that if you have no other indexing options in place
available.
Since git has its own index, support for using 'git grep' has been
added to Coccinelle, that should on average perform better than
using the internal cocci grep, and regular grep. Lastly, Coccinelle
has had support for glimpseindex for a long while, however the
tool was previously closed source, its now open sourced, and
provides the best performance, so support that if we can detect
you have a glimpse index.
These tests have been run on an 8 core system:
Before:
$ export COCCI=scripts/coccinelle/free/kfree.cocci
$ time make coccicheck MODE=report
Before this patch with no indexing or anything:
real 16m22.435s
user 128m30.060s
sys 0m2.712s
Using coccigrep (after this patch if you have no .git):
real 16m27.650s
user 128m47.904s
sys 0m2.176s
If you have .git and therefore use gitgrep:
real 16m21.220s
user 129m30.940s
sys 0m2.060s
And if you have a .glimpse_index:
real 16m14.794s
user 128m42.356s
sys 0m1.880s
Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
---
scripts/coccicheck | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/scripts/coccicheck b/scripts/coccicheck
index eeb5fdc142ca..f31c9a152559 100755
--- a/scripts/coccicheck
+++ b/scripts/coccicheck
@@ -5,6 +5,8 @@
# version 1.0.0-rc11.
#
+DIR=$(dirname $(readlink -f $0))
+DIR="${DIR}/../"
SPATCH="`which ${SPATCH:=spatch}`"
if [ ! -x "$SPATCH" ]; then
@@ -15,6 +17,20 @@ fi
USE_JOBS="no"
$SPATCH --help | grep "\-\-jobs" > /dev/null && USE_JOBS="yes"
+# 0. --use-glimpse currently outperforms all. Refer
+# to scripts/glimpse.sh for details.
+# 1. Second best is --use-gitgrep, this is very comparable to --use-glimpse
+# 2. Use --use-coccigrep if no indexing options are available and your
+# version of coccinelle supports it
+USE_GLIMPSE="no"
+$SPATCH --help | grep "\-\-use\-glimpse" > /dev/null && [ -f $DIR/.glimpse_index ] && USE_GLIMPSE="yes"
+
+USE_GITGREP="no"
+$SPATCH --help | grep "\-\-use\-gitgrep" > /dev/null && [ -d $DIR/.git ] && USE_GITGREP="yes"
+
+USE_COCCIGREP="no"
+$SPATCH --help | grep "\-\-use\-coccigrep" > /dev/null && USE_COCCIGREP="yes"
+
# The verbosity may be set by the environmental parameter V=
# as for example with 'make V=1 coccicheck'
@@ -89,6 +105,14 @@ else
OPTIONS="$OPTIONS --jobs $NPROC --chunksize 1"
fi
+if [ "$USE_GLIMPSE" = "yes" ]; then
+ OPTIONS="$OPTIONS --use-glimpse"
+elif [ "$USE_GITGREP" = "yes" ]; then
+ OPTIONS="$OPTIONS --use-gitgrep"
+elif [ "$USE_COCCIGREP" = "yes" ]; then
+ OPTIONS="$OPTIONS --use-coccigrep"
+fi
+
run_cmd_paramap() {
if [ $VERBOSE -ne 0 ] ; then
echo "Running ($NPROC in parallel): $@"
--
2.8.2
next prev parent reply other threads:[~2016-06-10 20:42 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-10 20:42 [PATCH 0/4] scripts/coccicheck: add paramap and indexing options Luis R. Rodriguez
2016-06-10 20:42 ` [PATCH 1/4] coccicheck: move spatch binary check up Luis R. Rodriguez
2016-06-10 20:42 ` [PATCH 2/4] coccicheck: enable paramap support Luis R. Rodriguez
2016-06-11 5:45 ` [Cocci] " SF Markus Elfring
2016-06-11 5:55 ` Julia Lawall
2016-06-10 20:42 ` [PATCH 3/4] scripts: add glimpse.sh for indexing the kernel Luis R. Rodriguez
2016-06-11 17:09 ` [Cocci] " SF Markus Elfring
2016-06-10 20:42 ` Luis R. Rodriguez [this message]
2016-06-10 21:02 ` [PATCH 4/4] coccicheck: add indexing enhancement options Julia Lawall
2016-06-10 21:18 ` Luis R. Rodriguez
2016-06-10 21:21 ` Julia Lawall
2016-06-10 21:43 ` [Cocci] " Wolfram Sang
2016-06-10 21:49 ` Luis R. Rodriguez
2016-06-10 21:51 ` Wolfram Sang
2016-06-10 22:08 ` Luis R. Rodriguez
2016-06-10 22:25 ` Luis R. Rodriguez
2016-06-11 5:46 ` Wolfram Sang
2016-06-11 5:54 ` Julia Lawall
2016-06-11 6:09 ` Wolfram Sang
2016-06-13 18:37 ` Luis R. Rodriguez
2016-06-13 18:55 ` Wolfram Sang
2016-06-13 19:48 ` Julia Lawall
2016-06-13 21:22 ` Luis R. Rodriguez
2016-06-14 5:08 ` Julia Lawall
2016-06-11 5:18 ` Julia Lawall
2016-06-11 5:58 ` Wolfram Sang
2016-06-11 6:05 ` Julia Lawall
2016-06-11 5:24 ` Julia Lawall
2016-06-13 18:39 ` Luis R. Rodriguez
2016-06-11 5:17 ` Julia Lawall
2016-06-13 19:35 ` Luis R. Rodriguez
2016-06-13 19:50 ` Julia Lawall
2016-06-13 21:28 ` Luis R. Rodriguez
2016-06-14 5:22 ` Julia Lawall
2016-06-14 19:27 ` Luis R. Rodriguez
2016-06-14 20:47 ` Julia Lawall
2016-06-14 21:10 ` Luis R. Rodriguez
2016-06-14 21:17 ` Julia Lawall
2016-06-14 22:02 ` Luis R. Rodriguez
2016-06-15 7:39 ` Julia Lawall
2016-06-15 15:36 ` Luis R. Rodriguez
2016-06-15 15:44 ` Julia Lawall
2016-06-15 17:53 ` Luis R. Rodriguez
2016-06-11 5:55 ` [Cocci] " SF Markus Elfring
2016-06-11 5:27 ` [Cocci] [PATCH 0/4] scripts/coccicheck: add paramap and indexing options SF Markus Elfring
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=1465591332-31113-5-git-send-email-mcgrof@kernel.org \
--to=mcgrof@kernel.org \
--cc=Gilles.Muller@lip6.fr \
--cc=Julia.Lawall@lip6.fr \
--cc=cocci@systeme.lip6.fr \
--cc=linux-kernel@vger.kernel.org \
--cc=mmarek@suse.com \
--cc=nicolas.palix@imag.fr \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox