You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2019/10/15 23:02:08 UTC

[GitHub] [pulsar] merlimat opened a new pull request #5390: Use pure-java Air-Compressor instead of JNI based libraries

merlimat opened a new pull request #5390: Use pure-java Air-Compressor instead of JNI based libraries
URL: https://github.com/apache/pulsar/pull/5390
 
 
   ### Motivation
   
   Right now we're using JNI based libraries to perform data compression. These libraries are do have an overhead in terms of size (7Mb out of 20Mb of Pulsar-Client lib) and are incurring the JNI overhead which is typically measurable when compressing many small payloads.
   
   We can replaces compression libraries for LZ4, ZStd and Snappy with AirCompressor (https://github.com/airlift/aircompressor), which is a pure Java compression library used by Presto.
   
   
   ### Microbenchmarks
   
   Microbenchmark code is available at https://github.com/merlimat/compression-benchmark
   The results are on-par with the JNI version in most cases.
   
   Results:
   
   ```
   Benchmark                      (provider)  (size)   Mode  Cnt     Score   Error   Units
   CompressDecompress.compress           Zip     10b  thrpt        214.639          ops/ms
   CompressDecompress.compress           Zip     1kb  thrpt         40.054          ops/ms
   CompressDecompress.compress           Zip    10kb  thrpt          4.898          ops/ms
   CompressDecompress.compress           Zip    64kb  thrpt          1.416          ops/ms
   CompressDecompress.compress       JNI-LZ4     10b  thrpt       2307.323          ops/ms
   CompressDecompress.compress       JNI-LZ4     1kb  thrpt        496.654          ops/ms
   CompressDecompress.compress       JNI-LZ4    10kb  thrpt         81.646          ops/ms
   CompressDecompress.compress       JNI-LZ4    64kb  thrpt         20.605          ops/ms
   CompressDecompress.compress      JNI-ZStd     10b  thrpt       1635.891          ops/ms
   CompressDecompress.compress      JNI-ZStd     1kb  thrpt         98.864          ops/ms
   CompressDecompress.compress      JNI-ZStd    10kb  thrpt         21.072          ops/ms
   CompressDecompress.compress      JNI-ZStd    64kb  thrpt          6.316          ops/ms
   CompressDecompress.compress    JNI-Snappy     10b  thrpt       2198.521          ops/ms
   CompressDecompress.compress    JNI-Snappy     1kb  thrpt        264.103          ops/ms
   CompressDecompress.compress    JNI-Snappy    10kb  thrpt         27.095          ops/ms
   CompressDecompress.compress    JNI-Snappy    64kb  thrpt          7.961          ops/ms
   CompressDecompress.compress     AC-Snappy     10b  thrpt       7542.674          ops/ms
   CompressDecompress.compress     AC-Snappy     1kb  thrpt        374.631          ops/ms
   CompressDecompress.compress     AC-Snappy    10kb  thrpt         54.042          ops/ms
   CompressDecompress.compress     AC-Snappy    64kb  thrpt         16.932          ops/ms
   CompressDecompress.compress        AC-LZ4     10b  thrpt       9360.128          ops/ms
   CompressDecompress.compress        AC-LZ4     1kb  thrpt        374.507          ops/ms
   CompressDecompress.compress        AC-LZ4    10kb  thrpt         50.168          ops/ms
   CompressDecompress.compress        AC-LZ4    64kb  thrpt         12.202          ops/ms
   CompressDecompress.compress       AC-ZStd     10b  thrpt    3   641.855          ops/ms
   CompressDecompress.compress       AC-ZStd     1kb  thrpt    3    40.996          ops/ms
   CompressDecompress.compress       AC-ZStd    10kb  thrpt    3     9.626          ops/ms
   CompressDecompress.compress       AC-ZStd    64kb  thrpt    3     2.979          ops/ms
   CompressDecompress.decompress         Zip     10b  thrpt       1856.131          ops/ms
   CompressDecompress.decompress         Zip     1kb  thrpt        164.930          ops/ms
   CompressDecompress.decompress         Zip    10kb  thrpt         35.547          ops/ms
   CompressDecompress.decompress         Zip    64kb  thrpt          7.846          ops/ms
   CompressDecompress.decompress     JNI-LZ4     10b  thrpt       4127.293          ops/ms
   CompressDecompress.decompress     JNI-LZ4     1kb  thrpt       2003.209          ops/ms
   CompressDecompress.decompress     JNI-LZ4    10kb  thrpt        326.834          ops/ms
   CompressDecompress.decompress     JNI-LZ4    64kb  thrpt         66.849          ops/ms
   CompressDecompress.decompress    JNI-ZStd     10b  thrpt       1003.361          ops/ms
   CompressDecompress.decompress    JNI-ZStd     1kb  thrpt        156.012          ops/ms
   CompressDecompress.decompress    JNI-ZStd    10kb  thrpt         48.902          ops/ms
   CompressDecompress.decompress    JNI-ZStd    64kb  thrpt         19.477          ops/ms
   CompressDecompress.decompress  JNI-Snappy     10b  thrpt       3564.673          ops/ms
   CompressDecompress.decompress  JNI-Snappy     1kb  thrpt        884.649          ops/ms
   CompressDecompress.decompress  JNI-Snappy    10kb  thrpt        123.879          ops/ms
   CompressDecompress.decompress  JNI-Snappy    64kb  thrpt         24.231          ops/ms
   CompressDecompress.decompress   AC-Snappy     10b  thrpt       8733.916          ops/ms
   CompressDecompress.decompress   AC-Snappy     1kb  thrpt        830.710          ops/ms
   CompressDecompress.decompress   AC-Snappy    10kb  thrpt        118.719          ops/ms
   CompressDecompress.decompress   AC-Snappy    64kb  thrpt         26.784          ops/ms
   CompressDecompress.decompress      AC-LZ4     10b  thrpt       9422.680          ops/ms
   CompressDecompress.decompress      AC-LZ4     1kb  thrpt       1746.522          ops/ms
   CompressDecompress.decompress      AC-LZ4    10kb  thrpt        228.481          ops/ms
   CompressDecompress.decompress      AC-LZ4    64kb  thrpt         56.751          ops/ms
   CompressDecompress.decompress     AC-ZStd     10b  thrpt       6789.080          ops/ms
   CompressDecompress.decompress     AC-ZStd     1kb  thrpt        194.514          ops/ms
   CompressDecompress.decompress     AC-ZStd    10kb  thrpt         42.434          ops/ms
   CompressDecompress.decompress     AC-ZStd    64kb  thrpt         15.292          ops/ms
   ```
   
   https://docs.google.com/spreadsheets/d/18ntnyxiQY3VedYeywoum9JXV97f-G9RL7xD-T6th7tA/edit#gid=153785868
   
   #### Compression 
   
   ![image](https://user-images.githubusercontent.com/62500/66875299-a6748b80-ef62-11e9-8743-9912d350a6e8.png)
   
   ![image](https://user-images.githubusercontent.com/62500/66875397-0834f580-ef63-11e9-8289-b5ab28ead0cc.png)
   
   ![image](https://user-images.githubusercontent.com/62500/66875410-14b94e00-ef63-11e9-9869-6a55ab3511ba.png)
   
   ![image](https://user-images.githubusercontent.com/62500/66875429-20a51000-ef63-11e9-8f62-0d9e867d05ac.png)
   
   #### Decompression
   
   ![image](https://user-images.githubusercontent.com/62500/66875918-bbeab500-ef64-11e9-98eb-329b08d0d58e.png)
   
   ![image](https://user-images.githubusercontent.com/62500/66875943-c7d67700-ef64-11e9-8d0e-8fba8ca35913.png)
   
   ![image](https://user-images.githubusercontent.com/62500/66875959-d2910c00-ef64-11e9-8abb-d2061a33e761.png)
   
   ![image](https://user-images.githubusercontent.com/62500/66875974-e3da1880-ef64-11e9-9b2c-85ae9519c070.png)
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services