Experimenting with running a java process on graalvm-0.11-dev-dk
Jerven Tjalling Bolleman
Jerven.Bolleman at sib.swiss
Mon Jun 6 07:18:25 UTC 2016
Dear Graal developers,
Last week I started experimenting with running a largish Java
application on graal to see the difference with standard hotspot.
There are two pieces of sad news I have to report. The first is there
are exceptions occurring in the code that are only triggered when
running graal. Specifically, in the Lucene 4.10.4 code that our
application uses.
Exception in thread "Lucene Merge Thread #7"
org.apache.lucene.index.MergePolicy$MergeException:
java.lang.ArrayIndexOutOfBoundsException: 85
at
org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:549)
at
org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:522)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 85
at
org.apache.lucene.codecs.lucene41.ForUtil.readBlock(ForUtil.java:206)
at
org.apache.lucene.codecs.lucene41.Lucene41PostingsReader$BlockDocsAndPositionsEnum.refillDocs(Lucene41PostingsReader.java:711)
at
org.apache.lucene.codecs.lucene41.Lucene41PostingsReader$BlockDocsAndPositionsEnum.nextDoc(Lucene41PostingsReader.java:780)
at
org.apache.lucene.codecs.MappingMultiDocsAndPositionsEnum.nextDoc(MappingMultiDocsAndPositionsEnum.java:104)
at
org.apache.lucene.codecs.PostingsConsumer.merge(PostingsConsumer.java:109)
at
org.apache.lucene.codecs.TermsConsumer.merge(TermsConsumer.java:164)
at
org.apache.lucene.codecs.FieldsConsumer.merge(FieldsConsumer.java:72)
at
org.apache.lucene.index.SegmentMerger.mergeTerms(SegmentMerger.java:399)
at
org.apache.lucene.index.SegmentMerger.merge(SegmentMerger.java:112)
at
org.apache.lucene.index.IndexWriter.mergeMiddle(IndexWriter.java:4223)
at
org.apache.lucene.index.IndexWriter.merge(IndexWriter.java:3811)
at
org.apache.lucene.index.ConcurrentMergeScheduler.doMerge(ConcurrentMergeScheduler.java:409)
at
org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:486)
This is fully in the standard lucene code under heavy concurrency.
The second piece of bad news is up to the point that this exception
triggers Graal-0.11 is about 1/6th slower than hotspot (1.8.0_74).
Graal 29 minutes 37 to HotSpot 25 minutes 14.
If you are interested I can make both the code and data available for
testing.
The downside is the app is large and has a lot of dependencies and data
going through (Needs 650gb of diskspace) and runs for about 30-40 hours
on our hardware.
Single thread limited in hotspot, in graal it seems to be slower in a
fully threaded part.
I can also give two different sampler profiles that might point to where
the problem lies.
If you have some kind of tutorial to retrieve the assembly from the
above section I would be interested in helping out that way as well.
I hope that this kind of feedback is useful and that I can make it
actionable for you.
The hardware is 24 cores of AMD Opteron 6348. With 256GB of ram, of
which 16GB was set aside for this JVMs heap. If you are curious the app
is www.uniprot.org.
Regards,
Jerven
--
Jerven Tjalling Bolleman
SIB | Swiss Institute of Bioinformatics
CMU - 1, rue Michel Servet - 1211 Geneva 4
t: +41 22 379 58 85 - f: +41 22 379 58 58
Jerven.Bolleman at sib.swiss - http://www.sib.swiss
More information about the graal-dev
mailing list