From 8c60359ae52735faafbe9f9a8a24d94f9dbcca15 Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Tue, 12 Mar 2024 07:58:57 +0200 Subject: [PATCH] Emable iomage layer compression by default --- pageserver/src/tenant/blob_io.rs | 4 ++-- pageserver/src/tenant/config.rs | 2 +- pageserver/src/tenant/storage_layer/image_layer.rs | 8 +------- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/pageserver/src/tenant/blob_io.rs b/pageserver/src/tenant/blob_io.rs index 4ba68bac1f..2e6c985158 100644 --- a/pageserver/src/tenant/blob_io.rs +++ b/pageserver/src/tenant/blob_io.rs @@ -237,7 +237,7 @@ impl BlobWriter { (src_buf, Ok(())) } - pub async fn write_compressed_blob(&mut self, srcbuf: Bytes) -> Result { + pub async fn write_compressed_blob(&mut self, srcbuf: Bytes, compress: bool) -> Result { let offset = self.offset; let len = srcbuf.len(); @@ -257,7 +257,7 @@ impl BlobWriter { format!("blob too large ({} bytes)", len), )); } - if len == BLCKSZ as usize { + if compress && len == BLCKSZ as usize { let compressed = lz4_flex::block::compress(&srcbuf); if compressed.len() < len { io_buf.put_u8(LZ4_COMPRESSION); diff --git a/pageserver/src/tenant/config.rs b/pageserver/src/tenant/config.rs index bcb1368911..b8fab30c97 100644 --- a/pageserver/src/tenant/config.rs +++ b/pageserver/src/tenant/config.rs @@ -546,7 +546,7 @@ impl Default for TenantConf { max_lsn_wal_lag: NonZeroU64::new(DEFAULT_MAX_WALRECEIVER_LSN_WAL_LAG) .expect("cannot parse default max walreceiver Lsn wal lag"), trace_read_requests: false, - compress_image_layer: false, + compress_image_layer: true, eviction_policy: EvictionPolicy::NoEviction, min_resident_size_override: None, evictions_low_residence_duration_metric_threshold: humantime::parse_duration( diff --git a/pageserver/src/tenant/storage_layer/image_layer.rs b/pageserver/src/tenant/storage_layer/image_layer.rs index d7a000e549..c4d30cf1e3 100644 --- a/pageserver/src/tenant/storage_layer/image_layer.rs +++ b/pageserver/src/tenant/storage_layer/image_layer.rs @@ -668,13 +668,7 @@ impl ImageLayerWriterInner { /// async fn put_image(&mut self, key: Key, img: Bytes) -> anyhow::Result<()> { ensure!(self.key_range.contains(&key)); - let off = if self.compression { - self.blob_writer.write_compressed_blob(img).await? - } else { - let (_img, res) = self.blob_writer.write_blob(img).await; - // TODO: re-use the buffer for `img` further upstack - res? - }; + let off = self.blob_writer.write_compressed_blob(img, self.compression).await?; let mut keybuf: [u8; KEY_SIZE] = [0u8; KEY_SIZE]; key.write_to_byte_slice(&mut keybuf); self.tree.append(&keybuf, off)?;