Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • If 'compression.type' is none of snappy, 'compression.level' is ignored.
  • If 'compression.level' is not in the valid range, it raises an error.
  • If 'compression.level' is in the valid range, the producer compresses the records with the given level.
  • If 'compression.level' is not set, it falls back to the default level.

Benchmark

...

Produce Test

To benchmark how compression level affects the producer performance, I ran a small benchmark with a real-world dataset like below:

...

  • Codec is the main factor that differentiates the compressed size. However, The compression level makes little impact on it. The maximum improvement is is gzip/1 vs. gzip/9 (8%), and the minimum is lz4/1 vs. lz/17 (1.5%).
  • Excepting zstd/-5, when the compression level gets lower, messages/sec increase but latency decreases. Especially, compressing with zstd/1 produces 32.7% more messages per second than zstd/3 (current default), and gzip/1 produces 56.4% than gzip/6 (current default).
  • For every compression codec, compression with minimum level (i.e., speed first strategy) resulted in the best messages/second rate.

Linear Write Test

To benchmark how compression level affects the linear write performance, I ran a small benchmark with a real-world dataset like below:

Code Block
languagebash
INCLUDE_TEST_JARS=true bin/kafka-run-class.sh kafka.TestLinearWriteSpeed --bytes 8192 --size 8192 --message-size 4096 --files 1 --compression {compression-codec} --level {compression-level} --log

Result

codeclevelwrite speed (mb/sec)description
none
19678.841
gzip122007.042min. level
gzip618425.707default level
gzip919148.284max. level
lz4122776.967min. level
lz4920613.456default level
lz41719879.134max. level
zstd-519531.25experimental level
zstd122910.557
zstd319531.25default level
zstd1217477.628
zstd1821229.619

The result was almost similar. In general, the minimum compression level (=1) showed the best write speed (except zstd/-5).

Compatibility, Deprecation, and Migration Plan

...