hubcio opened a new pull request, #4224: URL: https://github.com/apache/iggy/pull/4224
The link shard that owns a peer's replica socket burns a full core under sustained replicated writes. Nothing batches its reads: read_message issues one io_uring read for the 256-byte header and a second for the body. Bytes already sitting in the kernel receive queue wait for the next call. A read-ahead buffer sized by message_bus.replica_read_buffer_size lets one socket read serve a whole burst. It adds no latency, because the reader never waits for the buffer to fill. One fill delivers at most one buffer, so a body above that size crosses the buffer in buffer-sized pieces and pays one extra pass over the payload and one read per piece. A read that large goes straight into the frame's own buffer instead. Zero keeps the unbuffered path, so the A/B baseline is a config change and not a separate build. The plaintext writer already coalesces into one writev, so it is left alone. replica_socket_reads_total and replica_inbound_frames_total carry the evidence on the real workload: their ratio is the batching factor, and only link shards bump them. A read counts once it completes, so a link torn down mid-read cannot inflate the ratio. -- 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]
