Project

General

Profile

Actions

Bug #23547

closed

compression ratio depends on block size, which is much smaller (16K vs 4M) in multisite sync

Added by Casey Bodley about 6 years ago. Updated almost 6 years ago.

Status:
Resolved
Priority:
High
Assignee:
Target version:
-
% Done:

0%

Source:
Tags:
compression multisite
Backport:
luminous
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

Compressors will add a block header to each buffer that we pass to compress(), meaning that the overall compression ratio depends on the block size of its input. Rgw also stores a user.rgw.compression attribute with the object, which is an array of these blocks for mapping virtual offsets to compressed offsets.

In RGWPutObj, these buffers are rgw_obj_stripe_size=4M by default, which results in good compression. In multisite sync, we compress buffers as they come in from libcurl, which defaults to 16k blocks - this results in a significant size overhead - both in the actual compression ratio, and the size of the compression_block array stored in the user.rgw.compression attribute.


Related issues 1 (0 open1 closed)

Copied to rgw - Backport #23864: luminous: compression ratio depends on block size, which is much smaller (16K vs 4M) in multisite syncResolvedCasey BodleyActions
Actions

Also available in: Atom PDF