You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@kudu.apache.org by "Daojiang Yan (Jira)" <ji...@apache.org> on 2026/05/27 06:37:00 UTC

[jira] [Created] (KUDU-3778) Speed up log block manager startup by replaying small container metadata files from memory

Daojiang Yan created KUDU-3778:
----------------------------------

             Summary: Speed up log block manager startup by replaying small container metadata files from memory
                 Key: KUDU-3778
                 URL: https://issues.apache.org/jira/browse/KUDU-3778
             Project: Kudu
          Issue Type: Improvement
            Reporter: Daojiang Yan
            Assignee: Daojiang Yan
             Fix For: Backlog


*Description*

On startup,LogBlockContainerNativeMeta::ProcessRecords() replays each container's. metadata file through ReadablePBContainerFile::ReadNextPB(), which issues two preadv() syscalls per record (one for the length+checksum prefix, one for the body+checksum). The total number of read syscalls during the "Reading filesystem" phase is therefore O(total records across all containers). On a tserver with many containers each holding many records, this turns startup into a long stream of tiny sequential reads against the kernel.

 

*Proposal*

Add an opt-in fast path: when a metadata file's payload fits in a configurable budget, read it once into a faststring and let ReadablePBContainerFile parse it through an in-memory RandomAccessFile shim (MemoryReadableFile). This collapses the per-record preadv() pair into a single bulk read per container, so the syscall count during startup drops from O(records) to O(containers). Any I/O error during preload, or an oversized file, transparently falls back to the existing streaming path, so the optimization can only help and never widen the failure envelope of startup.

 

The fast path is gated by --log_container_metadata_inmem_replay_threshold_bytes (default 64 MiB; runtime/advanced/experimental). Set to 0 to disable. Only applies to --block_manager=log with native metadata; encrypted metadata files are intentionally left on the streaming path.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)