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