From e92d2189dfe2a7924c780f3dd2c455fc605d2de9 Mon Sep 17 00:00:00 2001 From: Kamil Skalski Date: Tue, 27 May 2025 11:17:11 +0200 Subject: [PATCH 1/3] perf: remove redundant BufReaders for decompressing tar archives --- runtime/src/snapshot_utils.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/runtime/src/snapshot_utils.rs b/runtime/src/snapshot_utils.rs index 54b928308069b3..ece23a8b0040af 100644 --- a/runtime/src/snapshot_utils.rs +++ b/runtime/src/snapshot_utils.rs @@ -2313,14 +2313,15 @@ fn untar_snapshot_create_shared_buffer( }) .unwrap() }; + // Apply buffered reader for decoders that do not buffer internally. match archive_format { ArchiveFormat::TarBzip2 => SharedBuffer::new(BzDecoder::new(BufReader::new(open_file()))), - ArchiveFormat::TarGzip => SharedBuffer::new(GzDecoder::new(BufReader::new(open_file()))), + ArchiveFormat::TarGzip => SharedBuffer::new(GzDecoder::new(open_file())), ArchiveFormat::TarZstd { .. } => SharedBuffer::new( - zstd::stream::read::Decoder::new(BufReader::new(open_file())).unwrap(), + zstd::stream::read::Decoder::new(open_file()).unwrap(), ), ArchiveFormat::TarLz4 => { - SharedBuffer::new(lz4::Decoder::new(BufReader::new(open_file())).unwrap()) + SharedBuffer::new(lz4::Decoder::new(open_file()).unwrap()) } ArchiveFormat::Tar => SharedBuffer::new(BufReader::new(open_file())), } From 6e592f0d713f3fe8baa91804f3594629021eb485 Mon Sep 17 00:00:00 2001 From: Kamil Skalski Date: Tue, 27 May 2025 16:23:44 +0200 Subject: [PATCH 2/3] Format --- runtime/src/snapshot_utils.rs | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/runtime/src/snapshot_utils.rs b/runtime/src/snapshot_utils.rs index ece23a8b0040af..17edb04570fdbe 100644 --- a/runtime/src/snapshot_utils.rs +++ b/runtime/src/snapshot_utils.rs @@ -2317,12 +2317,10 @@ fn untar_snapshot_create_shared_buffer( match archive_format { ArchiveFormat::TarBzip2 => SharedBuffer::new(BzDecoder::new(BufReader::new(open_file()))), ArchiveFormat::TarGzip => SharedBuffer::new(GzDecoder::new(open_file())), - ArchiveFormat::TarZstd { .. } => SharedBuffer::new( - zstd::stream::read::Decoder::new(open_file()).unwrap(), - ), - ArchiveFormat::TarLz4 => { - SharedBuffer::new(lz4::Decoder::new(open_file()).unwrap()) + ArchiveFormat::TarZstd { .. } => { + SharedBuffer::new(zstd::stream::read::Decoder::new(open_file()).unwrap()) } + ArchiveFormat::TarLz4 => SharedBuffer::new(lz4::Decoder::new(open_file()).unwrap()), ArchiveFormat::Tar => SharedBuffer::new(BufReader::new(open_file())), } } From 71e243637cb0763965136941ff85658b81eaf738 Mon Sep 17 00:00:00 2001 From: Kamil Skalski Date: Thu, 5 Jun 2025 07:04:13 +0200 Subject: [PATCH 3/3] Switch bzip2 decoder to read --- runtime/src/snapshot_utils.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/src/snapshot_utils.rs b/runtime/src/snapshot_utils.rs index 17edb04570fdbe..6361ac4b81212d 100644 --- a/runtime/src/snapshot_utils.rs +++ b/runtime/src/snapshot_utils.rs @@ -16,7 +16,7 @@ use { RebuiltSnapshotStorage, SnapshotStorageRebuilder, }, }, - bzip2::bufread::BzDecoder, + bzip2::read::BzDecoder, crossbeam_channel::Sender, flate2::read::GzDecoder, log::*, @@ -2315,7 +2315,7 @@ fn untar_snapshot_create_shared_buffer( }; // Apply buffered reader for decoders that do not buffer internally. match archive_format { - ArchiveFormat::TarBzip2 => SharedBuffer::new(BzDecoder::new(BufReader::new(open_file()))), + ArchiveFormat::TarBzip2 => SharedBuffer::new(BzDecoder::new(open_file())), ArchiveFormat::TarGzip => SharedBuffer::new(GzDecoder::new(open_file())), ArchiveFormat::TarZstd { .. } => { SharedBuffer::new(zstd::stream::read::Decoder::new(open_file()).unwrap())