neoremind opened a new pull request, #16119:
URL: https://github.com/apache/lucene/pull/16119

   Inspired by #13543 for `write(int)`, I was profiling the write path and 
noticed a similar optimization can be applied to `writeBytes`, this can 
eliminate unnecessary `growIfNeeded` checks and the large-byte-array bypass 
checks.
   
   **Why this is safe:**
   
   1. `XBufferedOutputStream` uses a fixed 8KB buffer, it never resizes, 
`growIfNeeded` is pure overhead.
   2. The fallback to `super.write(b, off, len)` retains the existing behavior 
for large byte arrays that should bypass buffering entirely and chunk them 
later for real I/O.
   
   ## Verification
   
   Since Lucene indexing is CPU-intensive and the I/O path isn't the 
time-consuming part, there is no significant processing time difference in 
luceneutil nightly benchmarks. But I did profiling with JFR and verified the 
overhead is completely removed. 
   
   Note that I can only sample `growIfNeeded` since it's a method call, the 
large-byte-array bypass check is inlined and hard to measure, so the real 
benefit should be slightly better than what the numbers below show.
   
   ### Wikipedia medium 
   
   33M docs, single-thread, with dv, wait for commit/merge, use CMS and 
TieredMergePolicy
   
   | | growIfNeeded samples | Total CPU samples | Ratio |
   |---|---|---|---|
   | **Baseline** | 26 | 409,250 | 0.01% |
   
   See Appendix 2. for detailed call stack captured.
   
   [flamegraph 
link](https://neoremind.com/report/log/lucene/OutputStreamIndexOutput-write-bytes/bench-index-bench_medium-wikimediumall.lucene.baseline.Lucene104.nd33.3326M-2026.05.23.14.42.03-baseline.html)
   [log 
link](https://neoremind.com/report/log/lucene/OutputStreamIndexOutput-write-bytes/bench_medium.wikimediumall.lucene.baseline.Lucene104.nd33.3326M.log)
   
   What to call out is that `writeBytes` is not the dominanting write op in 
`OutputStreamIndexOutput`, only 5% of total calls. But the savings are still 
positive. In a 33M wikipedia indexing, it removes 245M unnecessary 
`growIfNeeded` and large-byte-array bypass checks.
   
   I intercepted `OutputStreamIndexOutput` to count every write call (see 
how-to in Appendix 1). The stats show `writeInt` dominates by call count 
(61.4%), and `writeBytes` handles nearly half the total bytes despite being 
only 5% of calls. And 93% of `writeBytes` calls are less than 128 bytes, they 
all hit the optimization.
   
   ```
   WriteStats: totalOps=4,875,075,375 totalBytes=26,174,155,590
     writeByte:  1,627,290,133 ( 33.4% calls,   6.2% bytes)
     writeBytes: 245,247,290 (  5.0% calls,  47.9% bytes, avgLen=51)
     writeInt:   2,991,534,308 ( 61.4% calls,  45.7% bytes)
     writeLong:   5,474,411 (  0.1% calls,   0.2% bytes)
     writeShort:  5,529,233 (  0.1% calls,   0.0% bytes)
     writeBytes size distribution:
       [1-16]:    164,778,837
       [17-128]:  65,456,422
       [129-1K]:  14,993,877
       [1K-8K]:   1,722
       [>8K]:     16,432
   ```
   
   ### KNN indexing 
   
   1M 1024-dim float32 vectors, wait for commit/merge, use CMS, force merge at 
last
   
   | | growIfNeeded samples | Total CPU samples | Ratio |
   |---|---|---|---|
   | **Baseline** | 4 | 1,943,015 | 0.0002% |
   
   See Appendix 2. for detailed call stack captured.
   
   [flamegraph 
link](https://neoremind.com/report/log/lucene/OutputStreamIndexOutput-write-bytes/knn-perf-test.2026-05-22-before.html)
   [log 
link](https://neoremind.com/report/log/lucene/OutputStreamIndexOutput-write-bytes/knnPerfTest.py_20260522_070450.log)
   
   For knn, `writeBytes` dominates at 78.4% of all write calls, indexing 1M 
vectors involves tens of millions of `writeBytes` ops, and all of them benefit 
from the fast path. But since knn is super CPU-intensive with vectorized dot 
product dominating the profiling, the small improvement diminishes as it's 
barely visible in the samples, but still a micro-level win.
   
   ```
   During multi-thread indexing with 1024-dim float32 vector, rerank to improve 
precision. Wait for commit and merge to complete:
   
   WriteStats: totalOps=55,596,839 totalBytes=12,931,045,866
     writeByte:  11,985,442 ( 21.6% calls,   0.1% bytes)
     writeBytes: 43,597,865 ( 78.4% calls,  99.9% bytes, avgLen=296)
     writeInt:        4,752 (  0.0% calls,   0.0% bytes)
     writeLong:       8,574 (  0.0% calls,   0.0% bytes)
     writeShort:        206 (  0.0% calls,   0.0% bytes)
     writeBytes size distribution:
       [1-16]:    40,481,940
       [17-128]:  7,426
       [129-1K]:  32,581
       [1K-8K]:   3,075,918
       [>8K]:     0
   
   Follow-up merge to 1 segment:
   
   WriteStats: totalOps=21,901,875 totalBytes=4,252,427,320
     writeByte:   4,719,616 ( 21.5% calls,   0.1% bytes)
     writeBytes: 17,180,254 ( 78.4% calls,  99.9% bytes, avgLen=247)
     writeInt:           38 (  0.0% calls,   0.0% bytes)
     writeLong:       1,966 (  0.0% calls,   0.0% bytes)
     writeShort:          1 (  0.0% calls,   0.0% bytes)
     writeBytes size distribution:
       [1-16]:    16,169,470
       [17-128]:  478
       [129-1K]:  9,791
       [1K-8K]:   1,000,515
       [>8K]:     0
   ```
   
   ## Write path deep dive
   
   `FSDirectory.FSIndexOutput` writes data through a layered stack:
   
   ```
   Lucene write call (writeByte, writeBytes, writeShort, writeInt, writeLong)
     → XBufferedOutputStream          (heap byte[] buffer, 8KB)
       → CheckedOutputStream          (CRC32 checksum, inline on flush)
         → FilterOutputStream         (chunks writes to ≤ CHUNK_SIZE)
           → ChannelOutputStream
             → FileChannelImpl.write(HeapByteBuffer)
               → sun.nio.ch.IOUtil.write()
                 → getTemporaryDirectBuffer()   (thread-local cached 
DirectByteBuffer)
                   → memcpy heap → direct
                 → pwrite() syscall             (kernel page cache → disk)
   ```
   
   For the common case that small writes that fit in the buffer, do 
`System.arraycopy`, no unnecessary checks. For large arrays that the buffer 
can't hold, fall to `BufferedOutputStream.write()` which flushes the buffer and 
writes directly to the underlying stream, the `FilterOutputStream` in 
`FSDirectory` then chunks those large writes to less than 8K before hitting the 
file channel, preventing unwanted larger native buffer allocation. This is 
true, so I've also updated the stale `CHUNK_SIZE` comment as the original 
comment is a bit misleading.
   
   <img width="2777" height="3326" alt="wite-path-deep-dive" 
src="https://github.com/user-attachments/assets/e5e84a3c-a95d-4203-a9ff-d43e1c3f2341";
 />
   
   ## Appendix 1. Statistical analysis method of lucene write path
   
   Write statistics were captured using a modified luceneutil that intercepts 
all write calls and performs statistical analysis after indexing completes: 
[luceneutil 
commit](https://github.com/neoremind/luceneutil/commit/e35084338e2e45f004310f1d8b0f3f4492e76349#diff-9a2d54be8c91660fcf380e6df9944630a045021e5045a05754e1534277296714).
   
   ## Appendix 2. Detailed call stacks hitting growIfNeeded captured by JFR
   
   <details>
   <summary>Baseline top stacks of wikipedia 33MM</summary>
   
   --- Count: 3 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 138
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.ByteBuffersDataOutput.copyTo() line: 338
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.flushDocBlock() 
line: 491
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.finishTerm() 
line: 576
     org.apache.lucene.codecs.PushPostingsWriterBase.writeTerm() line: 172
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.write()
 line: 988
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter.write()
 line: 390
     
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.write() 
line: 161
     org.apache.lucene.index.FreqProxTermsWriter.flush() line: 133
     org.apache.lucene.index.IndexingChain.flush() line: 361
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 2 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 135
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.RateLimitedIndexOutput.writeBytes() line: 60
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValuesRange() 
line: 1496
     
org.apache.lucene.util.bkd.BKDWriter.writeHighCardinalityLeafBlockPackedValues()
 line: 1422
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValues() line: 
1358
     
org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.writeLeafBlock() 
line: 859
     org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.add() line: 754
     org.apache.lucene.util.bkd.BKDWriter.merge() line: 666
     org.apache.lucene.codecs.lucene90.Lucene90PointsWriter.merge() line: 279
     org.apache.lucene.index.SegmentMerger.mergePoints() line: 197
     org.apache.lucene.index.SegmentMerger$$Lambda.0x000000004f1ca8e0.merge() 
line: -1
     org.apache.lucene.index.SegmentMerger.mergeWithLogging() line: 315
     org.apache.lucene.index.SegmentMerger.merge() line: 155
     org.apache.lucene.index.IndexWriter.mergeMiddle() line: 5322
     org.apache.lucene.index.IndexWriter.merge() line: 4785
     org.apache.lucene.index.IndexWriter$IndexWriterMergeSource.merge() line: 
6590
     org.apache.lucene.index.ConcurrentMergeScheduler.doMerge() line: 661
     org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run() line: 
726
   
   --- Count: 2 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 137
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.ByteBuffersDataOutput.copyTo() line: 338
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.flushDocBlock() 
line: 491
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.finishTerm() 
line: 576
     org.apache.lucene.codecs.PushPostingsWriterBase.writeTerm() line: 172
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.write()
 line: 988
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter.write()
 line: 390
     
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.write() 
line: 161
     org.apache.lucene.index.FreqProxTermsWriter.flush() line: 133
     org.apache.lucene.index.IndexingChain.flush() line: 361
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 2 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 135
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValuesRange() 
line: 1496
     
org.apache.lucene.util.bkd.BKDWriter.writeHighCardinalityLeafBlockPackedValues()
 line: 1422
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValues() line: 
1358
     
org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.writeLeafBlock() 
line: 859
     org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.add() line: 754
     org.apache.lucene.util.bkd.BKDWriter$2.visit() line: 609
     org.apache.lucene.index.PointValuesWriter$1.visitDocValues() line: 209
     org.apache.lucene.util.bkd.BKDWriter.writeField1Dim() line: 604
     org.apache.lucene.util.bkd.BKDWriter.writeField() line: 449
     org.apache.lucene.codecs.lucene90.Lucene90PointsWriter.writeField() line: 
156
     org.apache.lucene.index.PointValuesWriter.flush() line: 317
     org.apache.lucene.index.IndexingChain.writePoints() line: 408
     org.apache.lucene.index.IndexingChain.flush() line: 318
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 2 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 138
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValuesRange() 
line: 1496
     
org.apache.lucene.util.bkd.BKDWriter.writeHighCardinalityLeafBlockPackedValues()
 line: 1422
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValues() line: 
1358
     
org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.writeLeafBlock() 
line: 859
     org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.add() line: 754
     org.apache.lucene.util.bkd.BKDWriter$2.visit() line: 609
     org.apache.lucene.index.PointValuesWriter$1.visitDocValues() line: 209
     org.apache.lucene.util.bkd.BKDWriter.writeField1Dim() line: 604
     org.apache.lucene.util.bkd.BKDWriter.writeField() line: 449
     org.apache.lucene.codecs.lucene90.Lucene90PointsWriter.writeField() line: 
156
     org.apache.lucene.index.PointValuesWriter.flush() line: 317
     org.apache.lucene.index.IndexingChain.writePoints() line: 408
     org.apache.lucene.index.IndexingChain.flush() line: 318
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 2 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 138
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.RateLimitedIndexOutput.writeBytes() line: 60
     org.apache.lucene.store.DataOutput.writeBytes() line: 54
     org.apache.lucene.codecs.lucene104.PForUtil.encode() line: 104
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.addPosition() 
line: 342
     org.apache.lucene.codecs.PushPostingsWriterBase.writeTerm() line: 159
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.write()
 line: 988
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter.write()
 line: 390
     org.apache.lucene.codecs.FieldsConsumer.merge() line: 94
     
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.merge() 
line: 190
     org.apache.lucene.index.SegmentMerger.mergeTerms() line: 223
     org.apache.lucene.index.SegmentMerger$$Lambda.0x000000004f1c48b8.merge() 
line: -1
     org.apache.lucene.index.SegmentMerger.mergeWithLogging() line: 315
     org.apache.lucene.index.SegmentMerger.merge() line: 147
     org.apache.lucene.index.IndexWriter.mergeMiddle() line: 5322
     org.apache.lucene.index.IndexWriter.merge() line: 4785
     org.apache.lucene.index.IndexWriter$IndexWriterMergeSource.merge() line: 
6590
     org.apache.lucene.index.ConcurrentMergeScheduler.doMerge() line: 661
     org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run() line: 
726
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 138
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.DataOutput.writeBytes() line: 54
     org.apache.lucene.codecs.lucene104.PForUtil.encode() line: 104
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.addPosition() 
line: 342
     org.apache.lucene.codecs.PushPostingsWriterBase.writeTerm() line: 159
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.write()
 line: 988
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter.write()
 line: 390
     
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.write() 
line: 161
     org.apache.lucene.index.FreqProxTermsWriter.flush() line: 133
     org.apache.lucene.index.IndexingChain.flush() line: 361
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 142
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.ByteBuffersDataOutput.copyTo() line: 338
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.flushDocBlock() 
line: 491
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.finishTerm() 
line: 576
     org.apache.lucene.codecs.PushPostingsWriterBase.writeTerm() line: 172
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.write()
 line: 988
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter.write()
 line: 390
     
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.write() 
line: 161
     org.apache.lucene.index.FreqProxTermsWriter.flush() line: 133
     org.apache.lucene.index.IndexingChain.flush() line: 361
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 138
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.DataOutput.writeBytes() line: 54
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.writeBlock()
 line: 944
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.writeBlocks()
 line: 636
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.pushTerm()
 line: 1039
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.write()
 line: 995
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter.write()
 line: 390
     
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.write() 
line: 161
     org.apache.lucene.index.FreqProxTermsWriter.flush() line: 133
     org.apache.lucene.index.IndexingChain.flush() line: 361
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 142
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.RateLimitedIndexOutput.writeBytes() line: 60
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValuesRange() 
line: 1496
     
org.apache.lucene.util.bkd.BKDWriter.writeHighCardinalityLeafBlockPackedValues()
 line: 1422
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValues() line: 
1358
     
org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.writeLeafBlock() 
line: 859
     org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.add() line: 754
     org.apache.lucene.util.bkd.BKDWriter.merge() line: 666
     org.apache.lucene.codecs.lucene90.Lucene90PointsWriter.merge() line: 279
     org.apache.lucene.index.SegmentMerger.mergePoints() line: 197
     org.apache.lucene.index.SegmentMerger$$Lambda.0x000000004f1ca8e0.merge() 
line: -1
     org.apache.lucene.index.SegmentMerger.mergeWithLogging() line: 315
     org.apache.lucene.index.SegmentMerger.merge() line: 155
     org.apache.lucene.index.IndexWriter.mergeMiddle() line: 5322
     org.apache.lucene.index.IndexWriter.merge() line: 4785
     org.apache.lucene.index.IndexWriter$IndexWriterMergeSource.merge() line: 
6590
     org.apache.lucene.index.ConcurrentMergeScheduler.doMerge() line: 661
     org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run() line: 
726
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 138
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.RateLimitedIndexOutput.writeBytes() line: 60
     org.apache.lucene.store.ByteBuffersDataOutput.copyTo() line: 338
     
org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.writeLevel1SkipData()
 line: 535
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.flushDocBlock() 
line: 487
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.startDoc() 
line: 259
     org.apache.lucene.codecs.PushPostingsWriterBase.writeTerm() line: 144
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.write()
 line: 988
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter.write()
 line: 390
     org.apache.lucene.codecs.FieldsConsumer.merge() line: 94
     
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.merge() 
line: 190
     org.apache.lucene.index.SegmentMerger.mergeTerms() line: 223
     org.apache.lucene.index.SegmentMerger$$Lambda.0x000000004f1c48b8.merge() 
line: -1
     org.apache.lucene.index.SegmentMerger.mergeWithLogging() line: 315
     org.apache.lucene.index.SegmentMerger.merge() line: 147
     org.apache.lucene.index.IndexWriter.mergeMiddle() line: 5322
     org.apache.lucene.index.IndexWriter.merge() line: 4785
     org.apache.lucene.index.IndexWriter$IndexWriterMergeSource.merge() line: 
6590
     org.apache.lucene.index.ConcurrentMergeScheduler.doMerge() line: 661
     org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run() line: 
726
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 134
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValuesRange() 
line: 1496
     
org.apache.lucene.util.bkd.BKDWriter.writeHighCardinalityLeafBlockPackedValues()
 line: 1422
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValues() line: 
1358
     
org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.writeLeafBlock() 
line: 859
     org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.add() line: 754
     org.apache.lucene.util.bkd.BKDWriter$2.visit() line: 609
     org.apache.lucene.index.PointValuesWriter$1.visitDocValues() line: 209
     org.apache.lucene.util.bkd.BKDWriter.writeField1Dim() line: 604
     org.apache.lucene.util.bkd.BKDWriter.writeField() line: 449
     org.apache.lucene.codecs.lucene90.Lucene90PointsWriter.writeField() line: 
156
     org.apache.lucene.index.PointValuesWriter.flush() line: 317
     org.apache.lucene.index.IndexingChain.writePoints() line: 408
     org.apache.lucene.index.IndexingChain.flush() line: 318
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 137
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.DataOutput.writeBytes() line: 54
     org.apache.lucene.codecs.lucene104.PForUtil.encode() line: 104
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.addPosition() 
line: 342
     org.apache.lucene.codecs.PushPostingsWriterBase.writeTerm() line: 159
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.write()
 line: 988
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter.write()
 line: 390
     
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.write() 
line: 161
     org.apache.lucene.index.FreqProxTermsWriter.flush() line: 133
     org.apache.lucene.index.IndexingChain.flush() line: 361
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 134
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.DataOutput.writeBytes() line: 54
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.writeBlock()
 line: 926
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.writeBlocks()
 line: 666
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.pushTerm()
 line: 1039
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.write()
 line: 995
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter.write()
 line: 390
     
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.write() 
line: 161
     org.apache.lucene.index.FreqProxTermsWriter.flush() line: 133
     org.apache.lucene.index.IndexingChain.flush() line: 361
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 134
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.RateLimitedIndexOutput.writeBytes() line: 60
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValuesRange() 
line: 1496
     
org.apache.lucene.util.bkd.BKDWriter.writeHighCardinalityLeafBlockPackedValues()
 line: 1422
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValues() line: 
1358
     
org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.writeLeafBlock() 
line: 859
     org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.add() line: 754
     org.apache.lucene.util.bkd.BKDWriter.merge() line: 666
     org.apache.lucene.codecs.lucene90.Lucene90PointsWriter.merge() line: 279
     org.apache.lucene.index.SegmentMerger.mergePoints() line: 197
     org.apache.lucene.index.SegmentMerger$$Lambda.0x000000004f1ca8e0.merge() 
line: -1
     org.apache.lucene.index.SegmentMerger.mergeWithLogging() line: 315
     org.apache.lucene.index.SegmentMerger.merge() line: 155
     org.apache.lucene.index.IndexWriter.mergeMiddle() line: 5322
     org.apache.lucene.index.IndexWriter.merge() line: 4785
     org.apache.lucene.index.IndexWriter$IndexWriterMergeSource.merge() line: 
6590
     org.apache.lucene.index.ConcurrentMergeScheduler.doMerge() line: 661
     org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run() line: 
726
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 142
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.ByteBuffersDataOutput.copyTo() line: 338
     
org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.writeLevel1SkipData()
 line: 535
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.flushDocBlock() 
line: 487
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.startDoc() 
line: 259
     org.apache.lucene.codecs.PushPostingsWriterBase.writeTerm() line: 144
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.write()
 line: 988
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter.write()
 line: 390
     
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.write() 
line: 161
     org.apache.lucene.index.FreqProxTermsWriter.flush() line: 133
     org.apache.lucene.index.IndexingChain.flush() line: 361
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 134
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.ByteBuffersDataOutput.copyTo() line: 338
     
org.apache.lucene.codecs.lucene90.LZ4WithPresetDictCompressionMode$LZ4WithPresetDictCompressor.compress()
 line: 194
     
org.apache.lucene.codecs.lucene90.compressing.Lucene90CompressingStoredFieldsWriter.flush()
 line: 259
     
org.apache.lucene.codecs.lucene90.compressing.Lucene90CompressingStoredFieldsWriter.finishDocument()
 line: 191
     org.apache.lucene.index.StoredFieldsConsumer.finishDocument() line: 94
     org.apache.lucene.index.IndexingChain.finishStoredFields() line: 565
     org.apache.lucene.index.IndexingChain.processDocument() line: 657
     org.apache.lucene.index.DocumentsWriterPerThread.updateDocuments() line: 
291
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 428
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 137
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValuesRange() 
line: 1496
     
org.apache.lucene.util.bkd.BKDWriter.writeHighCardinalityLeafBlockPackedValues()
 line: 1422
     org.apache.lucene.util.bkd.BKDWriter.writeLeafBlockPackedValues() line: 
1358
     
org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.writeLeafBlock() 
line: 859
     org.apache.lucene.util.bkd.BKDWriter$OneDimensionBKDWriter.add() line: 754
     org.apache.lucene.util.bkd.BKDWriter$2.visit() line: 609
     org.apache.lucene.index.PointValuesWriter$1.visitDocValues() line: 209
     org.apache.lucene.util.bkd.BKDWriter.writeField1Dim() line: 604
     org.apache.lucene.util.bkd.BKDWriter.writeField() line: 449
     org.apache.lucene.codecs.lucene90.Lucene90PointsWriter.writeField() line: 
156
     org.apache.lucene.index.PointValuesWriter.flush() line: 317
     org.apache.lucene.index.IndexingChain.writePoints() line: 408
     org.apache.lucene.index.IndexingChain.flush() line: 318
     org.apache.lucene.index.DocumentsWriterPerThread.flush() line: 492
     org.apache.lucene.index.DocumentsWriter.doFlush() line: 541
     org.apache.lucene.index.DocumentsWriter.postUpdate() line: 404
     org.apache.lucene.index.DocumentsWriter.updateDocuments() line: 450
     org.apache.lucene.index.IndexWriter.updateDocuments() line: 1600
     org.apache.lucene.index.IndexWriter.updateDocument() line: 1882
     org.apache.lucene.index.IndexWriter.addDocument() line: 1491
     perf.IndexThreads$IndexThread.run() line: 419
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 135
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.RateLimitedIndexOutput.writeBytes() line: 60
     org.apache.lucene.store.DataOutput.writeBytes() line: 54
     org.apache.lucene.codecs.lucene104.PForUtil.encode() line: 104
     org.apache.lucene.codecs.lucene104.Lucene104PostingsWriter.addPosition() 
line: 342
     org.apache.lucene.codecs.PushPostingsWriterBase.writeTerm() line: 159
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter$TermsWriter.write()
 line: 988
     
org.apache.lucene.codecs.lucene103.blocktree.Lucene103BlockTreeTermsWriter.write()
 line: 390
     org.apache.lucene.codecs.FieldsConsumer.merge() line: 94
     
org.apache.lucene.codecs.perfield.PerFieldPostingsFormat$FieldsWriter.merge() 
line: 190
     org.apache.lucene.index.SegmentMerger.mergeTerms() line: 223
     org.apache.lucene.index.SegmentMerger$$Lambda.0x000000004f1c48b8.merge() 
line: -1
     org.apache.lucene.index.SegmentMerger.mergeWithLogging() line: 315
     org.apache.lucene.index.SegmentMerger.merge() line: 147
     org.apache.lucene.index.IndexWriter.mergeMiddle() line: 5322
     org.apache.lucene.index.IndexWriter.merge() line: 4785
     org.apache.lucene.index.IndexWriter$IndexWriterMergeSource.merge() line: 
6590
     org.apache.lucene.index.ConcurrentMergeScheduler.doMerge() line: 661
     org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run() line: 
726
   
   Total CPU samples: 409250
   Matched: 26
   Percentage: 0.01%
   </details>
   
   
   <details>
   <summary>Baseline top stacks of knn 1MM</summary>
   
   --- Count: 3 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 134
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.RateLimitedIndexOutput.writeBytes() line: 60
     org.apache.lucene.store.DataOutput.writeBytes() line: 54
     org.apache.lucene.util.GroupVIntUtil.writeGroupVInts() line: 173
     org.apache.lucene.store.DataOutput.writeGroupVInts() line: 358
     org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsWriter.writeGraph() 
line: 550
     
org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsWriter.buildAndWriteGraph()
 line: 484
     
org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsWriter.lambda$mergeOneField$0()
 line: 451
     
org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsWriter$$Lambda.0x000000003019a9e0.run()
 line: -1
     org.apache.lucene.codecs.KnnVectorsWriter.merge() line: 144
     org.apache.lucene.index.SegmentMerger.mergeVectorValues() line: 272
     org.apache.lucene.index.SegmentMerger$$Lambda.0x0000000030198000.merge() 
line: -1
     org.apache.lucene.index.SegmentMerger.mergeWithLogging() line: 315
     org.apache.lucene.index.SegmentMerger.merge() line: 159
     org.apache.lucene.index.IndexWriter.mergeMiddle() line: 5322
     org.apache.lucene.index.IndexWriter.merge() line: 4785
     org.apache.lucene.index.IndexWriter$IndexWriterMergeSource.merge() line: 
6590
     org.apache.lucene.index.ConcurrentMergeScheduler.doMerge() line: 661
     knn.KnnIndexer$TrackingConcurrentMergeScheduler.doMerge() line: 360
     org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run() line: 
726
   
   --- Count: 1 ---
     java.io.BufferedOutputStream.growIfNeeded() line: 137
     java.io.BufferedOutputStream.write() line: 186
     org.apache.lucene.store.OutputStreamIndexOutput.writeBytes() line: 59
     org.apache.lucene.store.RateLimitedIndexOutput.writeBytes() line: 60
     org.apache.lucene.store.DataOutput.writeBytes() line: 54
     org.apache.lucene.util.GroupVIntUtil.writeGroupVInts() line: 173
     org.apache.lucene.store.DataOutput.writeGroupVInts() line: 358
     org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsWriter.writeGraph() 
line: 550
     
org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsWriter.buildAndWriteGraph()
 line: 484
     
org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsWriter.lambda$mergeOneField$0()
 line: 451
     
org.apache.lucene.codecs.lucene99.Lucene99HnswVectorsWriter$$Lambda.0x000000003019a9e0.run()
 line: -1
     org.apache.lucene.codecs.KnnVectorsWriter.merge() line: 144
     org.apache.lucene.index.SegmentMerger.mergeVectorValues() line: 272
     org.apache.lucene.index.SegmentMerger$$Lambda.0x0000000030198000.merge() 
line: -1
     org.apache.lucene.index.SegmentMerger.mergeWithLogging() line: 315
     org.apache.lucene.index.SegmentMerger.merge() line: 159
     org.apache.lucene.index.IndexWriter.mergeMiddle() line: 5322
     org.apache.lucene.index.IndexWriter.merge() line: 4785
     org.apache.lucene.index.IndexWriter$IndexWriterMergeSource.merge() line: 
6590
     org.apache.lucene.index.ConcurrentMergeScheduler.doMerge() line: 661
     knn.KnnIndexer$TrackingConcurrentMergeScheduler.doMerge() line: 360
     org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run() line: 
726
   
   Total CPU samples: 1943015
   Matched: 4
   Percentage: 0.00%
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]


Reply via email to