Re: bluestore compression questions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Andras,

please find my answers inline.

On 2/15/2020 12:27 AM, Andras Pataki wrote:
We're considering using bluestore compression for some of our data, and I'm not entirely sure how to interpret compression results.  As an example, one of the osd perf dump results shows:

        "bluestore_compressed": 28089935,
        "bluestore_compressed_allocated": 115539968,
        "bluestore_compressed_original": 231079936,

Am I right to interpret this as "Originally 231079936 bytes (231GB) were compressed to 28089935 bytes (28GB) and were stored in 115539968 bytes (115GB)".  If so, why is there such a huge discrepancy between the compressed_allocated and compressed numbers (115GB vs 28GB)?

That's right except MBs not GBs.

The discrepancy is most probably caused by write block sizes and BlueStore's allocation granularity.  For spinner drives minimal allocation size is 64K by default.

E.g. for 128K written block which takes 24K after compression allocated disk chunk would be 64K.



Also, ceph df detail also shows some compression stats:

    POOL                      ID     STORED      OBJECTS USED        %USED     MAX AVAIL     QUOTA OBJECTS     QUOTA BYTES     DIRTY       USED COMPR     UNDER COMPR     cephfs_data_ec63_c         5     1.2 TiB 311.93k     1.7 TiB      0.02       5.4 PiB     N/A N/A             311.93k 116 GiB         232 GiB

Would this indicate that the compressed data takes up exactly half the space (which coincides with what the osd's are saying)?  It is odd that the allocated numbers are always half the original numbers ...

USED COMPR column shows amount of space allocated for compressed data. I.e. this includes compressed data plus all the allocation, replication and erasure coding overhead. UNDER COMPR - amount of data passed through compression (summed over all replicas) and beneficial enough to be stored in a compressed form. Here is another 'ceph df detail' sample output where 500K object was compressed (partially, due to unaligned object size - 448K only). So 384K at USED COMPR is caused by 3x128K allocation units for keeping compressed data at 3 replicas. And 1.31M at UNDER COMPR column denotes 3x448K blocks of user data compressed at 3 replicas. And this totally required (see USED) 576K = 3x128K + 3x64K (=ROUND_UP_TO(500K - 448K, 64K))


This is ceph Nautilus with all the defaults for compression (except turning it on for the pool in question).  Any insights here would be appreciated.

Thanks,

Andras
_______________________________________________
ceph-users mailing list -- ceph-users@xxxxxxx
To unsubscribe send an email to ceph-users-leave@xxxxxxx
_______________________________________________
ceph-users mailing list -- ceph-users@xxxxxxx
To unsubscribe send an email to ceph-users-leave@xxxxxxx




[Index of Archives]     [Information on CEPH]     [Linux Filesystem Development]     [Ceph Development]     [Ceph Large]     [Ceph Dev]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [xfs]


  Powered by Linux