diff --git a/pageserver/src/tenant/storage_layer/delta_layer.rs b/pageserver/src/tenant/storage_layer/delta_layer.rs index 43941b6e17..6026db3c1d 100644 --- a/pageserver/src/tenant/storage_layer/delta_layer.rs +++ b/pageserver/src/tenant/storage_layer/delta_layer.rs @@ -457,8 +457,15 @@ impl DeltaLayerWriterInner { ctx: &RequestContext, ) -> (Vec, anyhow::Result<()>) { assert!(self.lsn_range.start <= lsn); - // We don't want to use compression in delta layer creation - let compression = ImageCompressionAlgorithm::Disabled; + + let compression = if val.len() >= 8192 { + // For full page images, respect configured image compression algorithm. + self.conf.image_compression + } else { + // For small writes, do not use compression. Compression ratios on tiny buffers do not justify CPU cost. + ImageCompressionAlgorithm::Disabled + }; + let (val, res) = self .blob_writer .write_blob_maybe_compressed(val, ctx, compression) @@ -479,6 +486,10 @@ impl DeltaLayerWriterInner { self.blob_writer.size() + self.tree.borrow_writer().size() } + fn size_values(&self) -> u64 { + self.blob_writer.size() + } + /// /// Finish writing the delta layer. /// @@ -668,6 +679,10 @@ impl DeltaLayerWriter { self.inner.as_ref().unwrap().size() } + pub fn size_values(&self) -> u64 { + self.inner.as_ref().unwrap().size_values() + } + /// /// Finish writing the delta layer. ///