DaCapo Benchmark Partial Results
Significant false sharing was detected on only two benchmarks:
- xalan:
(This only shows the top results, see here for full results.)
org.apache.xpath.axes.LocPathIterator.m_lastFetched: 26986 (45.0% of writes to this field)
org.apache.xpath.axes.LocPathIterator.m_pos: 20491 (43.1% of writes to this field)
org.apache.xpath.axes.PredicatedNodeTest.m_foundLast: 16261 (56.4% of writes to this field)
org.apache.xpath.axes.LocPathIterator.m_execContext: 15025 (56.6% of writes to this field)
org.apache.xpath.axes.LocPathIterator.m_cdtm: 14122 (53.2% of writes to this field)
org.apache.xpath.axes.LocPathIterator.m_length: 13703 (50.8% of writes to this field)
org.apache.xpath.axes.LocPathIterator.m_context: 13673 (50.7% of writes to this field)
org.apache.xpath.axes.LocPathIterator.m_currentContextNode: 13560 (50.2% of writes to this field)
org.apache.xpath.axes.ChildTestIterator.m_traverser: 7104 (64.7% of writes to this field)
org.apache.xpath.axes.LocPathIterator.m_stackFrame: 6985 (50.0% of writes to this field)
org.apache.xpath.axes.AxesWalker.m_isFresh: 4432 (71.9% of writes to this field)
org.apache.xpath.axes.AxesWalker.m_currentNode: 3903 (70.4% of writes to this field)
org.apache.xpath.axes.AxesWalker.m_traverser: 3493 (75.7% of writes to this field)
org.apache.xpath.axes.AxesWalker.m_root: 3347 (70.2% of writes to this field)
org.apache.xpath.axes.AxesWalker.m_dtm: 3334 (72.3% of writes to this field)
org.apache.xpath.axes.WalkingIterator.m_lastUsedWalker: 2216 (58.8% of writes to this field)
org.apache.xpath.axes.ReverseAxesWalker.m_iterator: 1250 (80.7% of writes to this field)
org.apache.xalan.templates.ElemTextLiteral.m_ch: 835 (16.9% of accesses to this field)
org.apache.xml.serializer.utils.StringToIntTable.m_map: 811 (16.0% of accesses to this field)
org.apache.xpath.axes.FilterExprWalker.m_exprObj: 734 (66.8% of writes to this field)
org.apache.xpath.axes.NodeSequence.m_next: 565 (1.4% of writes to this field)
org.apache.xpath.axes.AxesWalker.m_prevWalker: 542 (54.7% of writes to this field)
org.apache.xml.serializer.utils.StringToIntTable.m_values: 417 (39.9% of accesses to this field)
As a point of comparison, there are 2,767,116 writes in total in the trace, but the trace includes all the initialization and test harness stuff (which are entirely single-threaded).
- lusearch:
(This only shows the top results, see here for full results.)
org.apache.lucene.queryParser.FastCharStream.bufferPosition: 4798 (9.9% of writes to this field)
org.apache.lucene.analysis.standard.StandardTokenizerImpl.zzState: 4732 (11.5% of writes to this field)
org.apache.lucene.analysis.standard.StandardTokenizerImpl.zzMarkedPos: 3416 (15.9% of writes to this field)
org.apache.lucene.store.BufferedIndexInput.bufferPosition: 2832 (insignificant)
org.apache.lucene.queryParser.FastCharStream.tokenStart: 2748 (12.8% of writes to this field)
org.apache.lucene.analysis.standard.StandardTokenizerImpl.zzCurrentPos: 2377 (11.7% of writes to this field)
org.apache.lucene.store.BufferedIndexInput.bufferStart: 2144 (5.5% of writes to this field)
org.apache.lucene.store.BufferedIndexInput.bufferLength: 2053 (5.2% of writes to this field)
org.apache.lucene.index.Term.text: 2025 (17.5% of writes to this field)
org.apache.lucene.store.BufferedIndexInput.buffer: 1931 (insignificant)
org.apache.lucene.analysis.TokenFilter.input: 1866 (17.4% of writes to this field)
org.apache.lucene.store.IndexInput.chars: 1857 (12.9% of writes to this field)
org.apache.lucene.index.SegmentTermDocs.count: 1806 (12.7% of writes to this field)
org.apache.lucene.search.TermScorer.doc: 1764 (8.2% of writes to this field)
org.apache.lucene.search.TermScorer.weightValue: 1762 (24.7% of writes to this field)
org.apache.lucene.queryParser.FastCharStream.bufferLength: 1741 (9.7% of writes to this field)
org.apache.lucene.store.IndexInput.bytes: 1606 (11.2% of writes to this field)
org.apache.lucene.index.SegmentTermDocs.df: 1530 (21.4% of writes to this field)
org.apache.lucene.analysis.Token.positionIncrement: 1523 (14.2% of writes to this field)
As a point of comparison, there are 6,385,776 writes in total in the trace, but the trace includes all the initialization and test harness stuff (which are entirely single-threaded).
No significant false sharing was detected on the following benchmarks: tomcat and h2.
Notes:
- All analysis were done using one trace window of size 100 per cache line. All benchmarks were run with their smallest data set size.
- The benchmarks batik and sunflow are not tested yet. For batik at least, most of the concurrency would happen inside Java2D libraries and thus wouldn't get traced anyway.
- I can't seem to get the aspects weaved in the avrora, luindex and pmd benchmarks. This seems to be due to the weird way in which classes are bootstrapped in DaCapo.
- The traces obtained for tradebeans and tradesoap are excessively (and probably too) small. Either the aspects could not get weaved in some parts of the benchmarks, or most of the work is carried in a separate VM instance (or something similar). The traces seem to indicate the latter (some RMI-related stuff and a lot of accesses to an object called "TeeOutputStream").