[LLVMdev] MultiSource/Applications/lemon slow in JIT

Matthijs Kooijman matthijs at stdin.nl
Wed May 21 06:09:01 PDT 2008


Hi,

I've been toying around with the testsuite for a bit, and after recompiling
llvm-gcc a bunch of times and fixing a nasty bashism bug, I actually got it to
run and pass most tests.

When running, I noticed a very long runtime on the lemon test. At first I
suspected an infinite loop, but it turned out the test simply needed around
1000 seconds to run. Some investigation turned out that the lemon program does
a lot of forking (it runs every input file 20 times, so that's around 200
forks). However, since the forking happens quite early in the main function,
it happens before most of the program is JITted. So, every one of these forked
process is taking a few seconds to compile the other needed functions, over
and over again.

A solution for this problem seems to be to run the lemon test with the
-no-lazy option, so things get compiled before forking. In my case, this
reduced runtime from 1000+ seconds to only 16 seconds.

Intrestingly enough, I can't seem to find similar behaviour in the test
results on llvm.org/nightlytest (though I only checked two machines [since the
results take ages to load...] of which
only one actually ran the test). Am I the only one that is experiencing this?

Anyhow, the below patch fixes the problem for me, good to commit?

Gr.

Matthijs


Index: MultiSource/Applications/lemon/Makefile
===================================================================
--- MultiSource/Applications/lemon/Makefile     (revision 51189)
+++ MultiSource/Applications/lemon/Makefile     (working copy)
@@ -8,5 +8,8 @@
 include $(LEVEL)/Makefile.config
 
 include ../../Makefile.multisrc
+
+JIT_OPTS += -no-lazy
+
 DIFFPROG := $(PROGDIR)/DiffOutput.sh "diff "
 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20080521/8533d9a0/attachment.sig>


More information about the llvm-dev mailing list