Re: [PATCH 0/1] cover-letter/lz4: Implement lz4 with dynamic offset length.

Maninder Singh
2018-03-29T12:10:30Z

Hello Nick/Sergey,

Any suggestion or comments, so that we can change code and resend the patch?

> Hi Nick / Sergey,
>
>
> We have compared LZ4 Dyn with Original LZ4 using some samples of realtime application data(4Kb)
> compressed/decompressed by ZRAM. For comparison we have used lzbench (https://github.com/inikep/lzbench)
> we have implemented dedicated LZ4 Dyn API & kept last literal length as 6 to avoid overhead
> of checks. It seems in average case there is a saving of 3~4% in compression ratio with almost same compression
> speed and minor loss in decompression speed (~50MB/s) when compared with LZ4.
>
> Comparison of Lz4 Dyn with LZO1x is also done as LZO1x is default compressor of ZRAM.
>
> Original LZ4:
> sh-3.2# ./lzbench  -r  -elz4  data/
> lzbench 1.7.3 (32-bit Linux)   Assembled by P.Skibinski
> Compressor name         Compress. Decompress. Compr. size  Ratio Filename
> memcpy                   2205 MB/s  2217 MB/s        4096 100.00 data//data_1
> lz4 1.8.0                 216 MB/s   761 MB/s        2433  59.40 data//data_1
> lz4 1.8.0                 269 MB/s   877 MB/s        1873  45.73 data//data_2
> lz4 1.8.0                 238 MB/s   575 MB/s        2060  50.29 data//data_3
> lz4 1.8.0                 321 MB/s  1015 MB/s        1464  35.74 data//data_4
> lz4 1.8.0                 464 MB/s  1090 MB/s         713  17.41 data//data_5
> lz4 1.8.0                 296 MB/s   956 MB/s        1597  38.99 data//data_6
> lz4 1.8.0                 338 MB/s   994 MB/s        2238  54.64 data//data_7
> lz4 1.8.0                 705 MB/s  1172 MB/s         193   4.71 data//data_8
> lz4 1.8.0                 404 MB/s  1150 MB/s        1097  26.78 data//data_9
> lz4 1.8.0                 216 MB/s   921 MB/s        3183  77.71 data//data_10
> lz4 1.8.0                 456 MB/s  1101 MB/s        1011  24.68 data//data_11
> lz4 1.8.0                 867 MB/s  1202 MB/s          37   0.90 data//data_12
>
>
> LZ4 Dynamic Offet:
> sh-3.2# ./lzbench  -r  -elz4_dyn  data/
> lzbench 1.7.3 (32-bit Linux)   Assembled by P.Skibinski
> Compressor name         Compress. Decompress. Compr. size  Ratio Filename
> memcpy                   2203 MB/s  2218 MB/s        4096 100.00 data//data_1
> lz4 1.8.0                 218 MB/s   693 MB/s        2228  54.39 data//data_1
> lz4 1.8.0                 273 MB/s   851 MB/s        1739  42.46 data//data_2
> lz4 1.8.0                 230 MB/s   526 MB/s        1800  43.95 data//data_3
> lz4 1.8.0                 321 MB/s   952 MB/s        1357  33.13 data//data_4
> lz4 1.8.0                 470 MB/s  1075 MB/s         664  16.21 data//data_5
> lz4 1.8.0                 303 MB/s   964 MB/s        1455  35.52 data//data_6
> lz4 1.8.0                 345 MB/s   951 MB/s        2126  51.90 data//data_7
> lz4 1.8.0                 744 MB/s  1163 MB/s         177   4.32 data//data_8
> lz4 1.8.0                 409 MB/s  1257 MB/s        1033  25.22 data//data_9
> lz4 1.8.0                 220 MB/s   857 MB/s        3049  74.44 data//data_10
> lz4 1.8.0                 464 MB/s  1105 MB/s         934  22.80 data//data_11
> lz4 1.8.0                 874 MB/s  1194 MB/s          36   0.88 data//data_12
>
>
> LZ4 Dynamic Offset with 32K data:
> sh-3.2# ./lzbench -elz4_dyn data/data32k
> lzbench 1.7.3 (32-bit Linux)   Assembled by P.Skibinski
> Compressor name         Compress. Decompress. Compr. size  Ratio Filename
> memcpy                   5285 MB/s  5283 MB/s       32768 100.00 data/data32k
> lz4 1.8.0                 274 MB/s   995 MB/s       13435  41.00 data/data32k
> done... (cIters=1 dIters=1 cTime=1.0 dTime=2.0 chunkSize=1706MB cSpeed=0MB)
>
> Original LZ4 with 32K data:
> sh-3.2# ./lzbench_orig -elz4 data/data32k
> lzbench 1.7.3 (32-bit Linux)   Assembled by P.Skibinski
> Compressor name         Compress. Decompress. Compr. size  Ratio Filename
> memcpy                   4918 MB/s  5108 MB/s       32768 100.00 data/data32k
> lz4 1.8.0                 276 MB/s  1045 MB/s       14492  44.23 data/data32k
>
> LZO1x with 32K data (Default Compressor for ZRAM):
> sh-3.2# ./lzbench -elzo1x,1 data/data32k
> lzbench 1.7.3 (32-bit Linux)   Assembled by P.Skibinski
> Compressor name         Compress. Decompress. Compr. size  Ratio Filename
> memcpy                   5273 MB/s  5320 MB/s       32768 100.00 data/data32k
> lzo1x 2.09 -1             283 MB/s   465 MB/s       14292  43.62 data/data32k
>
> Regards,
> Vaneet Narang

Thanks.