[ https://issues.apache.org/jira/browse/KAFKA-3565?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15268242#comment-15268242 ]
Jiangjie Qin commented on KAFKA-3565: ------------------------------------- [~junrao] I updated the results in the Google sheet. The results are in test_run9 and test_run10 The linger.ms was run with 0 and 10000 ms. The batch size is set to 1000000. The modified test will flush when the batch is almost full (calculated by BatchSize/RecordSize - 10). Each test scenario runs at least 30 seconds. Trunk performs better than 0.9 in all the tested cases. (max.in.flight.requests actually does not matter here, though.) {noformat} run 9: 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0, messageSize=100, compression.type=gzip (2.19 > 1.83, 19%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0, messageSize=100, compression.type=snappy (18.17 > 14.96, 21%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0, messageSize=1000, compression.type=gzip (4.32 > 2.74, 57%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0, messageSize=1000, compression.type=snappy (28.66 > 20.59, 39%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=100000, messageSize=100, compression.type=gzip (1.61 > 1.09, 47%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=100000, messageSize=100, compression.type=snappy (10.77 > 8.41, 28%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=100000, messageSize=1000, compression.type=gzip (2.56 > 1.51, 69%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=100000, messageSize=1000, compression.type=snappy (21.37 > 16.24, 31%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0, messageSize=100, compression.type=gzip (2.36 > 1.89, 24%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0, messageSize=100, compression.type=snappy (19.25 > 14.99, 28%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0, messageSize=1000, compression.type=gzip (5.13 > 2.89, 77%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0, messageSize=1000, compression.type=snappy (32.24 > 21.95, 46%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=100000, messageSize=100, compression.type=gzip (1.69 > 1.13, 49%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=100000, messageSize=100, compression.type=snappy (12.34 > 9.61, 28%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=100000, messageSize=1000, compression.type=gzip (2.68 > 1.61, 66%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=100000, messageSize=1000, compression.type=snappy (23.70 > 18.03, 31%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0, messageSize=100, compression.type=gzip (2.58 > 2.04, 26%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0, messageSize=100, compression.type=snappy (19.44 > 16.20, 20%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0, messageSize=1000, compression.type=gzip (5.65 > 2.97, 90%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0, messageSize=1000, compression.type=snappy (33.82 > 26.91, 25%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=100000, messageSize=100, compression.type=gzip (1.74 > 1.17, 48%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=100000, messageSize=100, compression.type=snappy (12.67 > 10.60, 19%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=100000, messageSize=1000, compression.type=gzip (2.61 > 1.59, 64%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=100000, messageSize=1000, compression.type=snappy (24.06 > 21.71, 10%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0, messageSize=100, compression.type=gzip (2.06 > 1.88, 9%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0, messageSize=100, compression.type=snappy (16.77 > 13.71, 22%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0, messageSize=1000, compression.type=gzip (3.90 > 2.73, 42%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0, messageSize=1000, compression.type=snappy (29.85 > 19.11, 56%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=100000, messageSize=100, compression.type=gzip (1.62 > 1.09, 48%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=100000, messageSize=100, compression.type=snappy (11.18 > 8.68, 28%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=100000, messageSize=1000, compression.type=gzip (2.53 > 1.51, 67%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=100000, messageSize=1000, compression.type=snappy (21.45 > 16.14, 32%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0, messageSize=100, compression.type=gzip (2.28 > 2.01, 13%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0, messageSize=100, compression.type=snappy (18.67 > 14.18, 31%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0, messageSize=1000, compression.type=gzip (5.28 > 2.95, 78%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0, messageSize=1000, compression.type=snappy (34.24 > 22.01, 55%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=100000, messageSize=100, compression.type=gzip (1.61 > 1.14, 41%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=100000, messageSize=100, compression.type=snappy (12.95 > 9.82, 31%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=100000, messageSize=1000, compression.type=gzip (2.68 > 1.63, 64%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=100000, messageSize=1000, compression.type=snappy (24.54 > 18.31, 34%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0, messageSize=100, compression.type=gzip (2.50 > 2.17, 15%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0, messageSize=100, compression.type=snappy (18.78 > 15.79, 18%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0, messageSize=1000, compression.type=gzip (5.51 > 3.14, 75%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0, messageSize=1000, compression.type=snappy (35.34 > 28.92, 22%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=100000, messageSize=100, compression.type=gzip (1.75 > 1.15, 52%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=100000, messageSize=100, compression.type=snappy (13.41 > 11.02, 21%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=100000, messageSize=1000, compression.type=gzip (2.62 > 1.58, 65%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=100000, messageSize=1000, compression.type=snappy (25.40 > 22.47, 13%) run 10: 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0, messageSize=100, compression.type=gzip (2.15 > 1.81, 18%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0, messageSize=100, compression.type=snappy (18.72 > 14.84, 26%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0, messageSize=1000, compression.type=gzip (3.94 > 2.74, 43%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=0, messageSize=1000, compression.type=snappy (29.69 > 20.33, 46%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=100000, messageSize=100, compression.type=gzip (1.64 > 1.09, 50%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=100000, messageSize=100, compression.type=snappy (10.93 > 8.41, 29%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=100000, messageSize=1000, compression.type=gzip (2.50 > 1.51, 65%) 1st: max.in.flight.requests.per.connection=1, valueBound=500, linger.ms=100000, messageSize=1000, compression.type=snappy (21.25 > 16.19, 31%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0, messageSize=100, compression.type=gzip (2.41 > 1.88, 28%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0, messageSize=100, compression.type=snappy (18.96 > 14.97, 26%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0, messageSize=1000, compression.type=gzip (5.22 > 2.89, 80%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=0, messageSize=1000, compression.type=snappy (32.47 > 22.00, 47%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=100000, messageSize=100, compression.type=gzip (1.74 > 1.12, 55%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=100000, messageSize=100, compression.type=snappy (11.86 > 9.60, 23%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=100000, messageSize=1000, compression.type=gzip (2.77 > 1.63, 69%) 1st: max.in.flight.requests.per.connection=1, valueBound=5000, linger.ms=100000, messageSize=1000, compression.type=snappy (24.10 > 17.71, 36%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0, messageSize=100, compression.type=gzip (2.57 > 1.99, 29%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0, messageSize=100, compression.type=snappy (19.95 > 16.77, 18%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0, messageSize=1000, compression.type=gzip (5.63 > 2.98, 88%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=0, messageSize=1000, compression.type=snappy (32.94 > 27.33, 20%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=100000, messageSize=100, compression.type=gzip (1.73 > 1.14, 51%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=100000, messageSize=100, compression.type=snappy (12.82 > 10.85, 18%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=100000, messageSize=1000, compression.type=gzip (2.60 > 1.58, 64%) 1st: max.in.flight.requests.per.connection=1, valueBound=50000, linger.ms=100000, messageSize=1000, compression.type=snappy (24.29 > 21.69, 11%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0, messageSize=100, compression.type=gzip (2.01 > 1.90, 5%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0, messageSize=100, compression.type=snappy (17.93 > 13.49, 32%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0, messageSize=1000, compression.type=gzip (3.92 > 2.74, 43%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=0, messageSize=1000, compression.type=snappy (28.23 > 19.01, 48%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=100000, messageSize=100, compression.type=gzip (1.67 > 1.07, 56%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=100000, messageSize=100, compression.type=snappy (11.10 > 8.66, 28%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=100000, messageSize=1000, compression.type=gzip (2.48 > 1.52, 63%) 1st: max.in.flight.requests.per.connection=5, valueBound=500, linger.ms=100000, messageSize=1000, compression.type=snappy (21.07 > 16.24, 29%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0, messageSize=100, compression.type=gzip (2.30 > 2.00, 15%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0, messageSize=100, compression.type=snappy (18.85 > 14.39, 30%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0, messageSize=1000, compression.type=gzip (5.20 > 2.90, 79%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=0, messageSize=1000, compression.type=snappy (32.94 > 21.86, 50%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=100000, messageSize=100, compression.type=gzip (1.54 > 1.14, 35%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=100000, messageSize=100, compression.type=snappy (13.09 > 9.65, 35%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=100000, messageSize=1000, compression.type=gzip (2.68 > 1.63, 64%) 1st: max.in.flight.requests.per.connection=5, valueBound=5000, linger.ms=100000, messageSize=1000, compression.type=snappy (24.80 > 18.33, 35%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0, messageSize=100, compression.type=gzip (2.49 > 2.15, 15%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0, messageSize=100, compression.type=snappy (17.77 > 15.84, 12%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0, messageSize=1000, compression.type=gzip (5.72 > 3.00, 90%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=0, messageSize=1000, compression.type=snappy (33.26 > 28.44, 16%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=100000, messageSize=100, compression.type=gzip (1.73 > 1.15, 50%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=100000, messageSize=100, compression.type=snappy (13.14 > 11.11, 18%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=100000, messageSize=1000, compression.type=gzip (2.61 > 1.57, 66%) 1st: max.in.flight.requests.per.connection=5, valueBound=50000, linger.ms=100000, messageSize=1000, compression.type=snappy (25.34 > 22.63, 11%) {noformat} > Producer's throughput lower with compressed data after KIP-31/32 > ---------------------------------------------------------------- > > Key: KAFKA-3565 > URL: https://issues.apache.org/jira/browse/KAFKA-3565 > Project: Kafka > Issue Type: Bug > Reporter: Ismael Juma > Priority: Critical > Fix For: 0.10.0.0 > > > Relative offsets were introduced by KIP-31 so that the broker does not have > to recompress data (this was previously required after offsets were > assigned). The implicit assumption is that reducing CPU usage required by > recompression would mean that producer throughput for compressed data would > increase. > However, this doesn't seem to be the case: > {code} > Commit: eee95228fabe1643baa016a2d49fb0a9fe2c66bd (one before KIP-31/32) > test_id: > 2016-04-15--012.kafkatest.tests.benchmark_test.Benchmark.test_producer_throughput.topic=topic-replication-factor-three.security_protocol=PLAINTEXT.acks=1.message_size=100.compression_type=snappy > status: PASS > run time: 59.030 seconds > {"records_per_sec": 519418.343653, "mb_per_sec": 49.54} > {code} > Full results: https://gist.github.com/ijuma/0afada4ff51ad6a5ac2125714d748292 > {code} > Commit: fa594c811e4e329b6e7b897bce910c6772c46c0f (KIP-31/32) > test_id: > 2016-04-15--013.kafkatest.tests.benchmark_test.Benchmark.test_producer_throughput.topic=topic-replication-factor-three.security_protocol=PLAINTEXT.acks=1.message_size=100.compression_type=snappy > status: PASS > run time: 1 minute 0.243 seconds > {"records_per_sec": 427308.818848, "mb_per_sec": 40.75} > {code} > Full results: https://gist.github.com/ijuma/e49430f0548c4de5691ad47696f5c87d > The difference for the uncompressed case is smaller (and within what one > would expect given the additional size overhead caused by the timestamp > field): > {code} > Commit: eee95228fabe1643baa016a2d49fb0a9fe2c66bd (one before KIP-31/32) > test_id: > 2016-04-15--010.kafkatest.tests.benchmark_test.Benchmark.test_producer_throughput.topic=topic-replication-factor-three.security_protocol=PLAINTEXT.acks=1.message_size=100 > status: PASS > run time: 1 minute 4.176 seconds > {"records_per_sec": 321018.17747, "mb_per_sec": 30.61} > {code} > Full results: https://gist.github.com/ijuma/5fec369d686751a2d84debae8f324d4f > {code} > Commit: fa594c811e4e329b6e7b897bce910c6772c46c0f (KIP-31/32) > test_id: > 2016-04-15--014.kafkatest.tests.benchmark_test.Benchmark.test_producer_throughput.topic=topic-replication-factor-three.security_protocol=PLAINTEXT.acks=1.message_size=100 > status: PASS > run time: 1 minute 5.079 seconds > {"records_per_sec": 291777.608696, "mb_per_sec": 27.83} > {code} > Full results: https://gist.github.com/ijuma/1d35bd831ff9931448b0294bd9b787ed -- This message was sent by Atlassian JIRA (v6.3.4#6332)