@@ -87,8 +87,12 @@ Prefetch I/O
8787------------
8888
8989``PrefetchIoMetrics `` describes only I/O that passes through the prefetch reader's instrumented
90- input streams. It is not a whole-query or whole-table I/O total. All counters and histograms
91- accumulate for the reader lifetime and are retained across ``SetReadSchema() `` and cache reset.
90+ input streams. It is not a whole-query or whole-table I/O total. All counters accumulate for the
91+ reader lifetime and are retained across ``SetReadSchema() `` and cache reset. Latency uses relaxed
92+ atomic count, sum, minimum, and maximum counters instead of per-I/O histograms to reduce hot-path
93+ cost. Collection is disabled by default; set ``prefetch.io-metrics.enabled `` to ``true `` in the
94+ read options to enable it. When disabled, these per-I/O metrics are absent and the input streams
95+ have no metrics instrumentation.
9296``io.async.pending `` is current state and returns to zero when all callbacks complete.
9397These metrics are C++-only and have no counterparts in Java Paimon.
9498
@@ -100,11 +104,17 @@ These metrics are C++-only and have no counterparts in Java Paimon.
100104 "io.read.requested-bytes", "counter", "bytes", "Bytes requested by synchronous reads"
101105 "io.read.physical-bytes", "counter", "bytes", "Bytes returned by successful synchronous reads"
102106 "io.read.failed", "counter", "requests", "Failed synchronous reads"
103- "io.read.latency-us", "histogram", "microseconds", "Synchronous read latency"
107+ "io.read.latency.count", "counter", "requests", "Completed synchronous read latency samples"
108+ "io.read.latency.sum-us", "counter", "microseconds", "Sum of synchronous read latency"
109+ "io.read.latency.min-us", "counter", "microseconds", "Minimum synchronous read latency; 0 without samples"
110+ "io.read.latency.max-us", "counter", "microseconds", "Maximum synchronous read latency; 0 without samples"
104111 "io.async.requests", "counter", "requests", "Asynchronous read requests"
105112 "io.async.requested-bytes", "counter", "bytes", "Bytes requested by asynchronous reads"
106113 "io.async.physical-bytes", "counter", "bytes", "Bytes attributed to successful asynchronous reads"
107114 "io.async.completed", "counter", "requests", "Successful asynchronous reads"
108115 "io.async.failed", "counter", "requests", "Failed asynchronous reads"
109116 "io.async.pending", "gauge", "requests", "Asynchronous callbacks not yet completed"
110- "io.async.latency-us", "histogram", "microseconds", "Asynchronous callback latency"
117+ "io.async.latency.count", "counter", "requests", "Completed asynchronous callback latency samples"
118+ "io.async.latency.sum-us", "counter", "microseconds", "Sum of asynchronous callback latency"
119+ "io.async.latency.min-us", "counter", "microseconds", "Minimum asynchronous callback latency; 0 without samples"
120+ "io.async.latency.max-us", "counter", "microseconds", "Maximum asynchronous callback latency; 0 without samples"
0 commit comments